TCP协议下的洪水攻击
1. SYN Flood(半连接攻击)
这是最经典、最有效的DDoS攻击方式之一,利用了TCP三次握手的漏洞。攻击者向目标发送大量伪造源IP地址的SYN请求报文。目标服务器接收到SYN报文后,会回复SYN-ACK报文,并分配资源(如TCB控制块)等待客户端的ACK确认。然而,由于源IP是伪造的,目标服务器永远收不到ACK确认,这些半连接会一直占用服务器资源直至超时。当半连接队列占满时,新的正常连接请求将被拒绝。
防御策略:虽然可以通过调整内核参数(如减小超时时间、增大最大半连接数)来缓解,但最有效的防御是使用SYN Cookie技术或专业的抗DDoS设备进行源认证。
2. ACK Flood
攻击者发送大量只有ACK标志位的TCP数据包。由于这些ACK包并不属于任何已建立的连接,服务器收到后会消耗CPU资源去查找连接表(Connection Table),最终回复RST报文。海量的ACK包不仅占用带宽,更会耗尽服务器的CPU资源。
防御策略:利用载荷检查或首包丢弃等策略,结合连接状态表进行验证。
UDP协议下的攻击
1. UDP Flood
UDP是一种无连接的协议。攻击者向目标服务器的随机端口发送大量的UDP数据包。目标服务器在收到UDP包后,会检查该端口是否有应用程序监听。如果没有,它会回复一个ICMP Port Unreachable消息。大量的UDP包会迅速占满目标的网络带宽,使其无法处理正常流量。
防御策略:UDP Flood主要通过限流(Rate Limiting)和指纹识别来进行清洗。对于不需要UDP服务的服务器,可以直接在防火墙上丢弃所有UDP流量。
ICMP协议与IP攻击
1. ICMP Flood(Ping Flood)
攻击者在短时间内向目标发送大量的ICMP Echo Request(Ping)报文。目标系统必须对每个请求进行回复(Echo Reply),这会消耗大量带宽和系统资源。
防御策略:直接在防火墙或路由器上禁止ICMP入站请求通常是有效且低风险的防御手段。
2. IP碎片攻击(IP Fragmentation Attack)
攻击者发送大量设定了恶意参数的IP分片包(如Teardrop攻击,利用重叠的偏移量),或者发送大量的分片包但不发送首片。目标主机在尝试重组这些分片时,可能会因为逻辑错误导致崩溃(如蓝屏死机)或消耗大量CPU资源进行重组等待。
防御策略:现代操作系统和防火墙通常具备对非法分片的检测和丢弃能力。配置路由设备丢弃分片包或进行重组检查是常见防御手段。
3. TCP RST Flood 与 FIN Flood
除了SYN和ACK之外,攻击者还会利用TCP的RST(重置)包和FIN(结束)包进行攻击。RST Flood向服务器发送大量携带RST标志的报文,迫使服务器断开已建立的合法连接。FIN Flood则利用四次挥手的过程,发送大量FIN包消耗服务器资源。这些攻击单独使用时效果有限,但常与SYN Flood配合使用,形成混合攻击。
各类攻击特征对比
| 攻击类型 | 协议层 | 典型包大小 | 攻击目标 | 主要危害 |
|---|---|---|---|---|
| SYN Flood | 传输层 (L4) | 40-60字节 | TCP半连接队列 | 连接资源耗尽 |
| ACK Flood | 传输层 (L4) | 40-1500字节 | 连接表 / CPU | CPU资源耗尽 |
| UDP Flood | 网络层 (L3) | 随机(大包为主) | 网络带宽 | 带宽拥塞 |
| ICMP Flood | 网络层 (L3) | 64-1500字节 | 带宽 / CPU | 带宽消耗 |
| IP碎片 | 网络层 (L3) | 不定 | 协议栈 | 系统崩溃 / CPU耗尽 |
危害对比
网络层和传输层的攻击通常以“量”取胜,通过巨大的流量(Volumetric Attacks)来堵塞带宽或耗尽基础设施资源(如防火墙会话表)。相较于应用层攻击,这类攻击特征明显,但攻击流量通常巨大,往往需要依靠上游运营商或专业的云清洗中心来应对。