SYN Flooding攻击原理详解
SYN Flooding(SYN洪泛攻击)是一种典型的拒绝服务攻击(DoS/DDoS),利用TCP协议的三次握手缺陷耗尽目标系统资源。以下是其工作原理、影响及防御措施的全面解析:
1. TCP三次握手回顾
正常TCP连接建立过程:
- 客户端 → 服务器:发送
SYN
(同步序列号)包。 - 服务器 → 客户端:回复
SYN-ACK
(同步确认)包,并分配连接资源(如内存、端口)。 - 客户端 → 服务器:发送
ACK
(确认)包,完成握手。
2. SYN Flooding攻击原理
攻击者利用以下漏洞:
- 服务器在收到
SYN
后会分配资源并等待ACK
(约30秒~2分钟,称为半开连接)。 - 攻击者伪造大量
SYN
包,但不回复ACK
,耗尽服务器的连接队列资源。
攻击步骤:
- 伪造源IP:发送大量
SYN
包,源IP随机生成或伪造(如1.1.1.1
)。 - 不回应ACK:服务器发送
SYN-ACK
到虚假IP,无响应。 - 资源耗尽:服务器半开连接积压,无法处理合法请求。
3. 攻击类型
类型 | 特点 | 工具示例 |
---|---|---|
直接攻击 | 攻击者自身发送伪造SYN包(易被溯源) | hping3、Scapy |
反射攻击 | 利用第三方服务器(如开放DNS解析器)放大流量,隐藏自身IP | DNS查询伪造 |
分布式攻击 | 通过僵尸网络(Botnet)发起大规模DDoS | Mirai僵尸网络 |
4. 攻击影响
- 服务不可用:Web服务器、数据库等无法响应合法用户。
- 资源枯竭:
- 内存耗尽:半开连接占用内核内存。
- CPU过载:处理大量无效
SYN-ACK
重试。
- 连锁反应:可能触发防火墙或负载均衡器故障。
5. 防御措施
(1) 系统层加固
方法 | 原理 | 实现示例 |
---|---|---|
SYN Cookie | 不立即分配资源,通过加密算法验证合法ACK后再建立连接 | Linux内核参数:net.ipv4.tcp_syncookies=1 |
减少超时时间 | 缩短半开连接等待时间(默认60秒→15秒) | net.ipv4.tcp_synack_retries=3 |
连接队列调优 | 增大半开连接队列容量 | net.ipv4.tcp_max_syn_backlog=2048 |
(2) 网络层防护
- 防火墙规则:
- 限制单个IP的SYN速率(如iptables):
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
- 过滤伪造源IP(RPF检查)。
- 限制单个IP的SYN速率(如iptables):
- 云防护服务:
- AWS Shield、Cloudflare DDoS防护。
(3) 硬件设备
- 专用抗D设备:如Arbor Networks的TMS(Threat Mitigation System)。
6. 攻击检测指标
- 流量突增:SYN包数量异常升高。
- 半开连接比例:
netstat -nap | grep SYN_RECV
。 - 系统日志:内核日志(
dmesg
)中的possible SYN flooding
警告。
总结
SYN Flooding利用TCP协议的设计缺陷,通过耗尽资源导致服务瘫痪。防御需结合协议优化(如SYN Cookie)、流量清洗和基础设施扩容,形成多层次防护体系。对于企业而言,提前部署弹性架构和DDoS防护服务是关键。