利用 TCP 协议缺陷(四元组,需要经过三次握手):向服务器发送 SYN 数据包,并伪造源 IP 地址,服务器在收到 SYN 数据包时,会将连接加入 backlog 队列(半开连接队列),并向源 IP 发送 SYN-ACK 数据包,并等待 ACK 数据包,以完成三次握手建立连接;由于源 IP 地址是伪造的不存在主机 IP,所以服务器无法收到 ACK 数据包,并会不断重发,同时 backlog 队列被不断被攻击的 SYN 连接占满,导致无法处理正常的连接。
现象:
CPU 占用很高;
网络连接状态:netstat –na,若观察到大量的 SYN_RECEIVED 的连接状态;
打开网络连接后,服务器立即凝固无法操作,断网有时可以恢复,有时候需要重新启动机器才可恢复。
防御:
减少 SYN-ACK 数据包的重发次数(默认是 5 次)、使用 SYN Cookie 技术、增加 backlog 队列(默认是 1024)、首包(第一次请求的 SYN 包)丢弃等;