SYN Flood 是一种典型的 传输层 DDoS 攻击,攻击者通过伪造大量伪造源 IP 的 TCP SYN 包,耗尽服务器的半连接队列(SYN_RECV 状态),导致正常用户无法建立 TCP 连接。以下是针对 SYN Flood 攻击的分层防御策略:
一、基础防御措施
1. 启用 SYN Cookie(核心防御)
SYN Cookie 是一种轻量级防护机制,通过不直接存储半连接状态,而是将连接信息编码在 SYN-ACK 包的序列号中,从而避免半连接队列被占满。
- Linux 系统启用 SYN Cookie:bash
- sysctl -w net.ipv4.tcp_syncookies=1 # 临时生效 # 永久生效:编辑 /etc/sysctl.conf,添加 net.ipv4.tcp_syncookies=1
- Windows 系统:通过注册表调整
SynAttackProtect
参数,但需谨慎操作。
2. 优化 TCP 半连接队列
调整内核参数,扩大半连接队列容量并缩短超时时间,提升抗压能力:
- Linux 调整参数:bash
- # 增大半连接队列长度(默认 256,建议 2048+) sysctl -w net.ipv4.tcp_max_syn_backlog=2048 # 缩短 SYN-ACK 重传次数和超时时间(默认 5 次,每次 1s) sysctl -w net.ipv4.tcp_synack_retries=2 # 重传次数降为 2 次 sysctl -w net.ipv4.tcp_syn_retries=2 # SYN 发送重试次数
3. 防火墙过滤与限速
通过防火墙规则拦截异常流量:
- iptables 示例(Linux):bash
- # 限制单个 IP 的 SYN 包速率(如每秒 10 个) iptables -A INPUT -p tcp –syn -m limit –limit 10/s -j ACCEPT iptables -A INPUT -p tcp –syn -j DROP # 过滤伪造源 IP 的 SYN 包(需启用反向路径过滤) sysctl -w net.ipv4.conf.all.rp_filter=1
二、硬件/网络层防护
1. 部署抗 DDoS 设备
- 专用清洗设备:如 Radware DefensePro、Arbor Peakflow,可识别并过滤 SYN Flood 流量。
- 流量限速(Rate Limiting):在网络边界设备(如路由器)上限制 SYN 包速率。
2. 黑洞路由(Blackhole Routing)
- ISP 级防护:当攻击流量超过阈值时,通过 BGP 协议将目标 IP 的流量导向黑洞,避免服务器瘫痪(需权衡业务中断风险)。
3. Anycast 网络
- 分散流量:通过 Anycast 将同一 IP 广播到多个地理位置,分散攻击流量压力(如 Cloudflare 的全球网络)。
三、操作系统高级调优
1. 调整 TCP 状态管理
- 减少 TIME_WAIT 状态时间(释放端口资源):bash
- sysctl -w net.ipv4.tcp_fin_timeout=30 # 默认 60s sysctl -w net.ipv4.tcp_tw_reuse=1 # 允许复用 TIME_WAIT 端口
2. 启用 TCP Fast Open(TFO)
- 加速连接建立:减少 TCP 握手次数(需客户端和服务器同时支持):bash
- sysctl -w net.ipv4.tcp_fastopen=3 # 启用 TFO
3. 内核参数调优
- 增加端口范围:bash
- sysctl -w net.ipv4.ip_local_port_range=”1024 65535″ # 扩大临时端口范围
四、云环境防护方案
1. 云服务商 DDoS 防护
- 速度网络 高防服务器:自动清洗 SYN Flood 流量。
- 速度网络 DDoS 高防 IP:提供 Tbps 级流量清洗能力。
- Google Cloud Armor:结合负载均衡器过滤恶意流量。
2. 弹性扩展
- 自动扩缩容:通过云平台的 Auto Scaling 在攻击期间临时扩容后端实例,缓解连接数压力。
五、检测与应急响应
1. 实时监控
- 监控指标:
SYN_RECV
状态连接数:netstat -ant | grep SYN_RECV | wc -l
- SYN 包速率:
tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn) != 0'
- 工具:
ss -s
:查看 TCP 连接状态统计。- Wireshark:分析 SYN 包特征(如源 IP 分布、包大小)。
2. 应急响应流程
六、防御效果验证
- 压力测试工具:使用
hping3
模拟 SYN Flood 攻击,验证防护是否生效:bash
- hping3 -S -p 80 –flood –rand-source 目标IP
- 观察指标:攻击期间服务器的
SYN_RECV
连接数应稳定,正常业务不受影响。
总结
SYN Flood 防御需结合 协议优化(SYN Cookie)、流量清洗 和 资源管理,关键点在于:
- 减少半连接资源占用(SYN Cookie + 队列优化)。
- 过滤伪造流量(反向路径验证 + 限速规则)。
- 借助云服务或硬件设备分担清洗压力。
实际部署时需根据业务场景权衡性能与安全性,避免过度防护影响正常用户连接。