SYN 洪水攻击
SYN 洪水攻击 是什么?
SYN 洪水攻击基于 TCP 的拒绝服务攻击,通过大量发送未完成三次握手的 SYN 包,耗尽目标的连接状态资源。
在 SYN 洪水攻击中,攻击者发起大量 TCP 连接却始终不完成握手。每个伪造或未应答的 SYN 都会迫使服务器在 backlog 队列中分配一条半开连接,并回送 SYN/ACK,等待那个永远不会到来的最后 ACK。当 backlog 填满时,服务器便拒绝新的合法连接。SYN 洪水可以来自单一主机,但更常见的是僵尸网络,且通常伪造源 IP 以增加过滤难度。
flowchart TD A[攻击者] -->|"1. SYN(伪造源 IP)"| S[目标服务器] S -->|"2. 向伪造 IP 发送 SYN/ACK"| V["不存在 / 沉默的主机"] S -.->|"3. 分配半开连接表项"| Q[(Backlog 队列)] V -.->|"最终 ACK 永不到来"| S A -->|"高速重复发送"| S Q -->|"队列已满"| R[拒绝新的合法客户端]
这种攻击于 1996 年首次被公开,起因是 Phrack 杂志上发布的漏洞利用代码;1996 年 9 月,一次洪水攻击使纽约 ISP Panix 的邮件服务器瘫痪数日,促成了 CERT 通告 CA-1996-21。最权威的参考文献是 RFC 4987(2007 年),题为《TCP SYN Flooding Attacks and Common Mitigations》,系统梳理了各种对策及其权衡。最有效的主机侧防御是 SYN cookies,由 Daniel J. Bernstein 提出:服务器不再保存状态,而是把连接参数编码进 SYN/ACK 的初始序列号中,并从客户端的 ACK 中重建这些参数,这样在握手完成之前不会占用任何 backlog 表项。其他缓解措施包括扩大或动态调整 SYN 队列、在防火墙和负载均衡器上做连接速率限制、在网络边缘进行无状态过滤,以及上游 DDoS 清洗。
● 示例
- 01
僵尸网络每秒向 Web 服务器发送数百万个伪造的 SYN 包,塞满其 TCP backlog。
- 02
小规模攻击者利用旧设备未启用 SYN cookies 的弱点,使其连接表崩溃。
● 常见问题
SYN 洪水攻击 是什么?
基于 TCP 的拒绝服务攻击,通过大量发送未完成三次握手的 SYN 包,耗尽目标的连接状态资源。 它属于网络安全的 攻击与威胁 分类。
SYN 洪水攻击 是什么意思?
基于 TCP 的拒绝服务攻击,通过大量发送未完成三次握手的 SYN 包,耗尽目标的连接状态资源。
如何防御 SYN 洪水攻击?
针对 SYN 洪水攻击 的防御通常结合技术控制与运营实践,详见上方完整定义。