5月27日 22:48
TCP SYN Flood 攻击的原理和防御方法是什么?
攻击原理:三次握手的致命缺陷
TCP 建立连接需要三次握手:客户端发 SYN,服务器回 SYN+ACK 并分配资源等待 ACK,客户端确认后连接建立。SYN Flood 攻击正是利用第二步——攻击者发送大量伪造源 IP 的 SYN 包,服务器为每个请求分配半连接资源并等待永远不会到来的 ACK,直到半连接队列被填满,正常请求无法处理。
核心危害:半连接队列(SYN Queue)被占满 → 新连接被丢弃 → 服务不可用。每个半连接约占 200 字节内存,攻击者用极低成本即可耗尽服务器资源。
防御方法(按实战优先级排列)
SYN Cookie——最核心的防御
服务器收到 SYN 时不分配半连接资源,而是将连接信息编码到 SYN+ACK 的初始序列号(Cookie)中。收到合法 ACK 后,通过验证 Cookie 还原连接状态。
bashsysctl -w net.ipv4.tcp_syncookies=1
追问:SYN Cookie 的局限? 会禁用 TCP 窗口缩放和 SACK 等选项,影响高延迟链路性能;Cookie 可被暴力猜解,不适用于超高带宽攻击。
调整内核参数——配合 Cookie 的辅助手段
bash# 增大半连接队列 sysctl -w net.ipv4.tcp_max_syn_backlog=8192 # 减少重试次数,加速释放 sysctl -w net.ipv4.tcp_synack_retries=2
增大 backlog 只是延缓耗尽,不能根治;缩短超时可能影响高延迟正常连接,需根据业务权衡。
网络层限速与过滤
bashiptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP
单 IP 限速可防小规模攻击,但分布式攻击下效果有限,且可能误伤 NAT 出口用户。生产环境建议使用专业 DDoS 防护服务(Cloudflare、AWS Shield 等)做流量清洗。
如何检测 SYN Flood?
netstat -n | grep SYN_RCVD | wc -l大量 SYN_RCVD 状态连接ss -s观察 sockets 统计异常- 监控系统 SYN 收包速率突增
检测到攻击后,优先启用 SYN Cookie,再结合限速和外部清洗逐步缓解。
与 UDP Flood、HTTP Flood 相比,SYN Flood 靶向传输层,防御手段更成熟,但仍是互联网上最经典的 DDoS 攻击方式之一,1996 年至今未被根治。