0
0
Computer-networksDebug / FixBeginner · 4 min read

How to Prevent DDoS Attack: Effective Strategies and Fixes

To prevent a DDoS attack, use network filtering tools like firewalls and rate limiting to block excessive traffic. Employ traffic monitoring and cloud-based DDoS protection services to detect and mitigate attacks early.
🔍

Why This Happens

A Distributed Denial of Service (DDoS) attack happens when many computers send huge amounts of traffic to a server at the same time. This overloads the server, making it slow or completely unavailable to real users. The root cause is the lack of traffic control and filtering on the server or network.

python
import socket

# Simple server that accepts unlimited connections without limits
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 8080))
server_socket.listen()

while True:
    client_socket, addr = server_socket.accept()
    print(f"Connection from {addr}")
    # No limit on connections or traffic
    client_socket.send(b"Hello")
    client_socket.close()
Output
Connection from ('192.168.1.100', 52345) Connection from ('192.168.1.101', 52346) ... (many connections can overload server)
🔧

The Fix

To fix this, add limits on how many connections or requests the server accepts. Use firewalls or software to block suspicious traffic and rate limit requests per IP address. This stops attackers from flooding the server.

python
import socket
import time

MAX_CONNECTIONS_PER_IP = 5
connections = {}

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 8080))
server_socket.listen()

while True:
    client_socket, addr = server_socket.accept()
    ip = addr[0]
    now = time.time()

    # Clean old entries
    connections = {k: v for k, v in connections.items() if now - v['last_time'] < 60}

    if ip not in connections:
        connections[ip] = {'count': 0, 'last_time': now}

    if connections[ip]['count'] >= MAX_CONNECTIONS_PER_IP:
        print(f"Blocked connection from {ip} due to rate limit")
        client_socket.close()
        continue

    connections[ip]['count'] += 1
    connections[ip]['last_time'] = now

    print(f"Accepted connection from {ip}")
    client_socket.send(b"Hello")
    client_socket.close()
Output
Accepted connection from 192.168.1.100 Blocked connection from 192.168.1.100 due to rate limit
🛡️

Prevention

Prevent DDoS attacks by using multiple layers of defense:

  • Firewalls and routers: Configure to block suspicious IPs and limit traffic.
  • Rate limiting: Restrict how many requests a user or IP can make in a time frame.
  • Traffic monitoring: Use tools to detect unusual spikes early.
  • Cloud-based DDoS protection: Services like Cloudflare or AWS Shield absorb and filter attack traffic.
  • Keep software updated: Patch vulnerabilities that attackers might exploit.

These steps help keep your network stable and available even under attack.

⚠️

Related Errors

Other network issues similar to DDoS include:

  • DoS attack: Single source flooding the server, easier to block.
  • Slowloris attack: Holding connections open to exhaust server resources.
  • Botnet abuse: Compromised devices used to launch attacks.

Fixes often involve similar rate limiting and traffic filtering techniques.

Key Takeaways

Use firewalls and rate limiting to control incoming traffic and block overloads.
Monitor network traffic to detect unusual spikes early and respond quickly.
Employ cloud-based DDoS protection services for scalable defense.
Keep your systems updated to reduce vulnerabilities attackers can exploit.
Understand related attacks like DoS and Slowloris to apply proper defenses.