
SYN Flood(SYN 洪水攻击) 是一种典型的 DoS(拒绝服务)攻击,利用 TCP 三次握手机制发起大量 伪造连接请求,让服务器资源耗尽,无法处理正常请求。
⚙️ 攻击原理(基于 SYN_SENT 和 SYN_RECEIVED 状态)
🌐 TCP 三次握手流程
- 客户端发送
SYN(状态:SYN_SENT)
- 服务器返回
SYN-ACK(状态:SYN_RECEIVED)
- 客户端回复
ACK → 连接建立成功(ESTABLISHED)
💣 攻击手段
攻击者:
- 构造大量伪造 IP 的
SYN 请求
- 服务端收到后进入
SYN_RECEIVED 状态并分配资源(内存、连接表等)
- 客户端从未回复
ACK,导致连接一直卡在 SYN_RECEIVED 状态
- 最终耗尽服务端资源
🔍 如何识别 SYN Flood?
1. 查看 SYN\_RECV 状态激增
netstat -ant | grep SYN_RECV | wc -l
|
2. 检查 SYN 队列(backlog)是否溢出
在 Linux 系统中:
cat /proc/net/netstat | grep "ListenOverflows"
|
3. ss 查看 TCP 状态统计
🛡️ 如何防御 SYN Flood?
✅ 内核级防护
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
|
sysctl net.ipv4.tcp_syncookies
|
✅ 调整 TCP 参数
sysctl -w net.ipv4.tcp_max_syn_backlog=4096 sysctl -w net.ipv4.tcp_synack_retries=2
|
✅ 使用防火墙规则限制连接速率(以 iptables 为例)
iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP
|
✅ 应用层/硬件防护
- 使用 负载均衡设备(如 F5/Nginx)作为缓冲层
- 接入 DDoS 防护服务(如 Cloudflare、AWS Shield)
📈 可视化监控建议
- Prometheus + Grafana 监控 TCP 状态
- 报警条件:
SYN_RECV 超过正常阈值
- 日志审计:异常 IP 出现频率