Karp 的技术博客

2025-06-11T12:12:53.png

SYN Flood(SYN 洪水攻击) 是一种典型的 DoS(拒绝服务)攻击,利用 TCP 三次握手机制发起大量 伪造连接请求,让服务器资源耗尽,无法处理正常请求。


⚙️ 攻击原理(基于 SYN_SENTSYN_RECEIVED 状态)

🌐 TCP 三次握手流程

  1. 客户端发送 SYN(状态:SYN_SENT
  2. 服务器返回 SYN-ACK(状态:SYN_RECEIVED
  3. 客户端回复 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 状态统计

ss -s

🛡️ 如何防御 SYN Flood?

✅ 内核级防护

  • 开启 SYN Cookie
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 出现频率

网络安全

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2025年06月11日 12:14
0

目录

来自 《什么是 SYN Flood(SYN 洪水攻击)》