SYN FLOOD攻击
Howard 7/18/2021 HTTP网络协议网络安全
当在进行三次握手前,服务器状态会从CLOSED变成LISTEN, 就会再内部创建两个队列,半连接队列和全连接队列,即SYN队列和ACCEPT队列
# 半连接队列
当进行完第二次握手之后,客户端进入了SYN-SENT状态,服务端变成SYN-RCVD状态,那这时候这个连接就会被推入半连接队列里
# 全连接队列
当进行完第三次握手之后,双方建立了链接。这时候连接就等待被具体的应用取走之前,它会被推入全连接队列
# 攻击原理
SYN Flood 属于典型的 DoS/DDoS 攻击。其攻击的原理很简单,就是用客户端在短时间内伪造大量不存在的 IP 地址,并向服务端疯狂发送SYN。对于服务端而言,会产生两个危险的后果:
- 处理大量的SYN包并返回ACK,势必有大量连接处于SYN_RCVD状态,从而占满了半连接队列,无法处理正常的请求
- 由于是不存在的IP,所以会导致服务端不断重发ACK,导致服务端资源耗尽。
# 如何应对 SYN Flood 攻击?
- 增加SYN连接,增加半连接队列容量
- 减少SYN + ACK重试次数, 避免大量的超时重发
- 利用SYN Cookie技术,在第二次握手的时候,服务端不会马上分配连接资源,而是通过SYN的计算出一个Cookie,连同第二次握手回复给客户端,在客户端回复ACK的时候带上这个Cookie值,服务端验证通过后才分配连接资源。
- 防火墙技术以及,入侵检测系统和入侵防御系统,这些一般服务器厂商都有提供。