第218篇:网络攻击基础:SYN Flood、ICMP Flood
关键词
SYN Flood、ICMP Flood、DDoS、半连接攻击、反射放大、洪水攻击、防火墙防御、速率限制
一、DoS/DDoS 攻击概述
1.1 什么是 DoS/DDoS
DoS(Denial of Service):单源拒绝服务攻击 DDoS(Distributed DoS):分布式拒绝服务攻击
攻击目标:耗尽目标系统的资源,使其无法提供正常服务
┌─────────────┐
│ 攻击者 │
└──────┬──────┘
│ 控制
| ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ | |||||
| 肉鸡 1 | 肉鸡 2 | 肉鸡 3 | ← 僵尸网络 (Botnet) | ||
| │ │ │ | |||||
| └──────────────┼──────────────┘ | |||||
| │ 大量攻击流量 | |||||
| ┌─────┴──────┐ | |||||
| │ 目标服务器 │ | |||||
| │ (受害者) │ | |||||
| └────────────┘ |
攻击类型按 OSI 层次: L3/L4:SYN Flood、ICMP Flood、UDP Flood L7:HTTP Flood、Slowloris、DNS Query Flood
1.2 DoS vs DDoS
对比维度 DoS DDoS
────────────────────────────────────────────────────
攻击源 单台设备 成百上千台
流量规模 小(<1 Gbps) 大(1 Tbps+)
检测难度 容易(单一源 IP) 困难(分布式源)
防御方式 阻断单一源 IP 需要云清洗 + 本地防护
典型场景 个人行为 有组织攻击
二、SYN Flood 攻击
2.1 TCP 三次握手回顾
正常 TCP 连接建立:
客户端 服务器
│ │
│ 1. SYN (seq=x) │
│──────────────────────────────→ │
│ │
│ 2. SYN+ACK (seq=y, ack=x+1) │
│←────────────────────────────── │
│ │
│ 3. ACK (seq=x+1, ack=y+1) │
│──────────────────────────────→ │
│ │
│ 连接建立成功 │
│ 服务器分配资源 │
2.2 SYN Flood 攻击原理
攻击者发送大量 SYN 包,但不完成三次握手:
攻击者 服务器
│ │
│ SYN (伪造源 IP 1) │
│──────────────────────────────→ │ 服务器分配 TCB,状态=SYN_RCVD
│ │
│ SYN (伪造源 IP 2) │
│──────────────────────────────→ │ 再分配 TCB
│ │
│ SYN (伪造源 IP 3) │
│──────────────────────────────→ │ 继续分配...
│ │
│ ... │
│ │
│ 服务器的半连接队列 (SYN Queue) │
│ 溢出!新连接被丢弃 │
│ │
│ 正常用户 SYN │
│──────────────────────────────→ │ ✗ 被丢弃
│ │
│ 服务不可用! │
2.3 SYN Flood 的变种
变种 1:源 IP 伪造
每个 SYN 包使用不同的伪造源 IP
服务器回复 SYN+ACK 到不存在的地址
防火墙无法通过 IP 过滤防御
变种 2:低速 SYN Flood
以低于阈值的速率发送 SYN
绕过速率限制检测
变种 3:SYN-ACK Flood
直接伪造 SYN+ACK(假装是对之前 SYN 的回复)
耗尽服务器的连接跟踪表
2.4 防火墙防御 SYN Flood
# 华为防火墙 SYN Flood 防护配置
# 开启 SYN Flood 防护
firewall syn-flood protect enable
!
# 全局防护阈值
firewall syn-flood protect threshold 5000 # 每秒 5000 个 SYN
!
# 单源 IP 限制
firewall syn-flood protect source-ip
per-source-threshold 500 # 每源 IP 每秒 500 SYN
!
# 防御动作
firewall syn-flood protect action
block-timeout 300 # 阻断超时 300 秒
!
# 查看 SYN Flood 攻击事件
display firewall syn-flood statistics
Total SYN packets received: 1000000
SYN Flood attacks detected: 5
Attacker IPs blocked: 5
Normal connections passed: 50000
三、ICMP Flood 攻击
3.1 ICMP Flood 原理
ICMP Flood 通过大量 ICMP 报文耗尽目标带宽或 CPU:
攻击者 ──→ 目标服务器
大量 ICMP Echo Request(Ping 包)
每秒钟数十万个
影响:
1. 带宽耗尽:100 万台肉鸡 × 64 字节 ICMP = 6.4 Gbps
2. CPU 耗尽:服务器忙于回包,无法处理正常连接
3. 链路拥塞:影响共享链路上的其他业务
3.2 ICMP 反射放大攻击
反射放大攻击利用 ICMP 的响应机制:
攻击者 无辜服务器 目标
│ │ │
│ 伪造源 IP = 目标 IP │ │
│ ICMP Echo (源=目标) │ │
│────────────────────────────→│ │
│ │ │
│ │ ICMP Reply → 目标 │
│ │──────────────────────→ │
│ │ │
│ 攻击者发送 1 个包 │ 服务器回复 N 个包 │
│ 放大倍数 = N倍 │ │
Smurf 攻击是经典的 ICMP 反射放大
向广播地址发送 ICMP Echo(源 IP = 目标)
所有主机回复 → 攻击流量放大 N 倍(N=广播域主机数)
3.3 ICMP Flood 防御
# ICMP 限速配置
# 方式一:全局 ICMP 限速
firewall icmp-rate-limit 1000 # 每秒最多 1000 个 ICMP
!
# 方式二:接口级限速
interface GigabitEthernet0/0/0
firewall icmp-rate-limit 500 # 接口级别
!
# 方式三:安全策略限制
security-policy
rule name ICMP_Limit
source-zone untrust
destination-zone dmz
service icmp
action permit
profile icmp-rate-limit ICMP_PROFILE # 应用限速配置
!
# 方式四:关闭 ICMP 重定向、不可达等
interface GigabitEthernet0/0/0
undo icmp-receive enable # 可选:关闭 ICMP 接收
四、UDP Flood 攻击
4.1 攻击原理
UDP Flood:攻击者向目标随机端口发送大量 UDP 报文
攻击者 ──→ 目标服务器
大量 UDP 报文(随机端口 0-65535)
服务器检查端口 → 无服务 → ICMP Port Unreachable
服务器 CPU 被 ICMP 回复耗尽
# UDP Flood 防御
firewall udp-flood protect enable
firewall udp-flood protect threshold 10000 # 每秒 10000 个 UDP
!
# DNS、NTP 等端口例外(正常业务)
firewall udp-flood protect exclude-port 53 # 排除 DNS
firewall udp-flood protect exclude-port 123 # 排除 NTP
五、DDoS 攻击检测与防御
5.1 攻击检测指标
攻击类型 检测指标 阈值
────────────────────────────────────────────────────
SYN Flood 半连接数 / 新建连接速率 正常值的 5 倍
ICMP Flood ICMP 包速率 正常值的 10 倍
UDP Flood UDP 包速率(非 DNS) 正常值的 10 倍
HTTP Flood HTTP GET 请求速率 正常值的 5 倍
DNS Amplification DNS 响应/请求比 > 50 正常值 1:1
5.2 检测到攻击后的自动响应
# 自动响应配置
firewall auto-defend enable
firewall auto-defend attack-packet threshold 5000
!
# 自动阻断攻击源
firewall auto-defend action
block-time 600 # 阻断 10 分钟
!
# 查看自动防御事件
display firewall auto-defend attack-source
Attack Source Interface Packets/sec Status
5.5.5.5 GE0/0/0 50000 Blocked
6.6.6.6 GE0/0/0 30000 Blocked
六、DDoS 综合防护方案
6.1 分层防御
云清洗中心 ─── 近源清洗 ─── 本地防火墙 ─── 应用层防护
第 1 层:云清洗
攻击流量到达企业网络前,在骨干网清洗
防御大流量攻击(> 10 Gbps)
第 2 层:近源清洗
ISP 边缘清洗设备
过滤已知攻击源
第 3 层:本地防火墙
SYN Flood 防护
ICMP/UDP 限速
源 IP 追踪和阻断
第 4 层:应用层防护
WAF 防御 HTTP Flood
Rate Limiting
CAPTCHA
6.2 配置最佳实践
# 综合 DDoS 防护配置
# 1. SYN Flood 防护
firewall syn-flood protect enable
firewall syn-flood protect threshold 3000
firewall syn-flood protect source-ip per-source-threshold 200
# 2. ICMP 限速
firewall icmp-rate-limit 500
# 3. UDP Flood 防护
firewall udp-flood protect enable
firewall udp-flood protect threshold 5000
# 4. 连接数限制(单源 IP)
firewall session limit source-ip 10.0.0.0 8 5000 # 每源 IP 最多 5000 会话
# 5. 自动防御
firewall auto-defend enable
firewall auto-defend action block-time 600
七、总结
| 知识点 | 核心要点 |
|---|---|
| SYN Flood | 伪造 SYN 耗尽半连接队列,不完成三次握手 |
| ICMP Flood | 大量 ICMP 报文耗尽带宽/CPU |
| UDP Flood | 随机端口 UDP 报文触发 ICMP 不可达风暴 |
| 反射放大 | 伪造源 IP,利用服务器回复放大攻击流量 |
| 检测指标 | 半连接数/包速率/新建连接速率 |
| 防御层次 | 云清洗 → 近源 → 防火墙 → 应用层 |
| 防火墙功能 | SYN Cookie、限速、源 IP 追踪 |
八、思考
- SYN Flood 攻击为什么能让服务器无法接受新连接?三次握手在这里有什么问题?
- 为什么 SYN Flood 攻击通常使用伪造的源 IP?这对防御有什么影响?
- ICMP 反射放大攻击是如何实现流量放大的?Smurf 攻击的放大倍数由什么决定?
- 防火墙的 SYN Cookie 机制是如何防御 SYN Flood 的?
- 企业面对 DDoS 攻击,应该建立怎样的分层防御体系?
下篇预告:第219篇《Anti-DDoS 防护机制》——各类 DDoS 攻击的防御技术详解,包括云清洗、本地防护和策略联动。