第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 追踪

八、思考

  1. SYN Flood 攻击为什么能让服务器无法接受新连接?三次握手在这里有什么问题?
  2. 为什么 SYN Flood 攻击通常使用伪造的源 IP?这对防御有什么影响?
  3. ICMP 反射放大攻击是如何实现流量放大的?Smurf 攻击的放大倍数由什么决定?
  4. 防火墙的 SYN Cookie 机制是如何防御 SYN Flood 的?
  5. 企业面对 DDoS 攻击,应该建立怎样的分层防御体系?

下篇预告:第219篇《Anti-DDoS 防护机制》——各类 DDoS 攻击的防御技术详解,包括云清洗、本地防护和策略联动。