SYN flood
A SYN flood is a form of denial-of-service attack on data communications in which an attacker rapidly initiates a connection to a server without finalizing the connection. The server has to spend resources waiting for half-opened connections, which can consume enough resources to make the system unresponsive to legitimate traffic.
The packet that the attacker sends is the
SYN packet, a part of TCP's three-way handshake used to establish a connection.Technical details
When a client attempts to start a TCP connection to a server, the client and server exchange a series of messages which normally runs like this:- The client requests a connection by sending a
SYNmessage to the server. - The server acknowledges this request by sending
SYN-ACKback to the client. - The client responds with an
ACK, and the connection is established.
A SYN flood attack works by not responding to the server with the expected
ACK code. The malicious client can either simply not send the expected ACK, or by spoofing the source IP address in the SYN, cause the server to send the SYN-ACK to a falsified IP address – which will not send an ACK because it "knows" that it never sent a SYN.The server will wait for the acknowledgement for some time, as simple network congestion could also be the cause of the missing
ACK. However, in an attack, the half-open connections created by the malicious client bind resources on the server and may eventually exceed the resources available on the server. At that point, the server cannot connect to any clients, whether legitimate or otherwise. This effectively denies service to legitimate clients. Some systems may also malfunction or crash when other operating system functions are starved of resources in this way.Countermeasures
There are a number of well-known countermeasures listed in RFC 4987 including:- Filtering
- Increasing backlog
- Reducing SYN-RECEIVED timer
- Recycling the oldest half-open TCP
- SYN cache
- SYN cookies
- Hybrid approaches
- Firewalls and proxies