SYN Floods
A SYN flood is a type of Denial of Service (DoS) attack that targets the TCP handshake process. The attacker sends a large number of TCP/SYN packets to a target server, each requesting a new connection but never completing the handshake. This leaves the server with numerous half-open connections, consuming resources and preventing legitimate users from establishing connections.
Impact
SYN flood attacks can render servers unresponsive by exhausting connection queues or overwhelming system memory. Because the target allocates resources for each incomplete handshake, even a modest flood can bring down systems with limited capacity. This disrupts web services, email servers, and any application relying on TCP connectivity, leading to downtime and potential data loss.
Discoverability
SYN floods are relatively easy to detect with proper monitoring tools. They generate an unusually high number of SYN packets without the corresponding ACK responses. Intrusion detection systems (IDS) and traffic analyzers can flag these anomalies, especially if half-open connections spike suddenly. However, detection may be harder if the attack is distributed and mimics normal traffic patterns.
Tools
- Hping3: A versatile packet generator that can craft custom SYN packets to flood a target with fake connection attempts.
- Metasploit Framework: Includes modules for SYN flooding, allowing attackers to simulate high-traffic DoS attacks for testing purposes.
- Scapy: A powerful Python library for crafting and sending TCP SYN packets at scale.
- LOIC (modified versions): While originally for HTTP, certain forks include SYN flood capabilities.
Protection
- SYN Cookies: A TCP stack defense mechanism that prevents resource allocation until the handshake is completed, mitigating SYN flood effects.
- Firewall Rules: Rate limiting SYN requests or blocking suspicious IP ranges helps reduce attack surface.
- Intrusion Prevention Systems (IPS): Can identify SYN floods in real time and apply mitigation strategies automatically.
- Load Balancers: Can help absorb traffic and distribute connection attempts across multiple servers, reducing the strain on any single machine.