第219篇:Anti-DDoS 防护机制

关键词:Anti-DDoS、流量清洗、黑洞路由、Anycast、BGP Flowspec、弹性防护、攻击检测、响应机制、TCA

一、引言

在第218篇中,我们学习了 SYN Flood 和 ICMP Flood 这两种经典 DoS 攻击的原理和防护方法。面对日益增长的 DDoS 攻击威胁,仅靠单机防护设备已无法满足安全防护需求。现代 DDoS 攻击规模可达 Tbps 级别,攻击手段也从简单的流量洪泛演进为应用层攻击、反射放大攻击等复杂形式。

Anti-DDoS(抗分布式拒绝服务)是一套从检测、防护到清洗的完整防护体系,涵盖网络边缘、云端和本地多层次防御能力。理解 Anti-DDoS 的防护机制和部署方案,是企业网络安全规划的重要组成部分。

二、核心概念

2.1 DDoS 攻击分类

攻击层级 攻击类型 典型手段 攻击规模
网络层(L3/L4) 流量洪泛 SYN Flood、UDP Flood、ICMP Flood Gbps-Tbps
网络层(L3/L4) 反射放大 DNS 放大、NTP 放大、SSDP 放大 Tbps
应用层(L7) HTTP Flood CC 攻击、Slowloris、HTTP GET/POST Flood RPS
应用层(L7) 协议滥用 DNS Query Flood、SSL/TLS 握手攻击 RPS
混合型 组合攻击 同时发起多层级攻击 多维

2.2 Anti-DDoS 防护架构

Anti-DDoS 防护架构 - 图示

2.3 防护层次

防护层次 位置 防护能力 适用场景
本地防护 企业防火墙/路由器 中小规模攻击(< 1Gbps) SYN/ICMP/UDP Flood
边缘防护 ISP 网络边缘 中等规模攻击(1-10Gbps) 流量牵引清洗
云端防护 云端清洗中心 大规模攻击(10Gbps-Tbps) DDoS 大流量攻击
CDN 防护 CDN 节点 应用层攻击 HTTP Flood、CC 攻击

三、技术细节

3.1 流量牵引与清洗流程

流量牵引与清洗流程 - 图示

3.2 黑洞路由(Blackhole Routing)

黑洞路由是应对超大规模 DDoS 攻击的最后一道防线。当攻击流量超过网络承载能力时,运营商将目标 IP 的路由指向一个"黑洞"(Null0 接口),所有到达该 IP 的流量被直接丢弃。

维度 说明
触发条件 攻击流量超过预设阈值(如出口带宽的 80%)
执行方式 BGP 通告指向 Null0 的路由
影响范围 目标 IP 完全不可达(包括合法流量)
持续时间 通常 30 分钟至数小时
适用场景 攻击流量远超清洗能力时的紧急措施

3.3 BGP Flowspec

BGP Flowspec(RFC 8955)是一种通过 BGP 协议分发流量过滤规则的技术。它允许在网络的任何 BGP -speaking 设备上同步应用流量过滤策略,实现分布式的 DDoS 防护。

特性 说明
规则分发 通过 BGP 更新报文分发过滤规则
匹配条件 源/目的 IP、协议、端口、DSCP、ICMP 类型等
执行动作 丢弃、限速、重定向、修改 DSCP
部署位置 支持 BGP Flowspec 的 PE/CE 路由器
响应速度 秒级规则下发

3.4 Anycast 防护原理

Anycast(任播)防护利用多个地理位置分散的 Anycast 节点共享同一个 IP 地址。当 DDoS 攻击到达时,攻击流量被 BGP 路由到最近的 Anycast 节点,攻击流量被分散到多个节点进行吸收和清洗。

优势 说明
流量分散 攻击流量被分散到多个节点,单点压力降低
就近清洗 用户流量就近接入,减少延迟
冗余性 单节点故障不影响整体服务
扩展性 通过增加节点线性扩展防护能力

3.5 DDoS 检测指标

指标 正常基线 攻击特征
总带宽利用率 < 60% 接近或达到 100%
新连接速率 平稳 突然激增
协议分布 正常比例 单一协议占比异常
源 IP 分布 分散 大量唯一源 IP 或极少数源 IP
包大小分布 正常范围 异常小包或大包
SYN/ACK 比例 接近 1:1 SYN 远大于 ACK
DNS 查询量 正常水平 突增数倍至数十倍

四、实战配置/案例分析

4.1 华为 USG 防火墙:Anti-DDoS 配置

# ========== Anti-DDoS综合防护配置 ==========
system-view
sysname HQ-Firewall

# 1. 启用Anti-DDoS全局功能
anti-attack enable

# 2. 配置SYN Flood防护
anti-attack
 ip-frequency
  syn
   enable
   reference-time 5
   # 学习模式:先学习正常流量基线
   learning-time 300
   # 阈值:每秒SYN报文数
   threshold 500
   # 超过阈值的动作
   action black-list
   # 黑名单持续时间(秒)
   black-list-time 600
  quit
 quit
quit

# 3. 配置ICMP Flood防护
anti-attack
 icmp
  echo-flood
   enable
   reference-time 5
   threshold 200
   action black-list
   black-list-time 300
  quit
 quit
quit

# 4. 配置UDP Flood防护
anti-attack
 udp-flood
  enable
  reference-time 5
  threshold 1000
  action deny
  # 配置UDP端口保护(仅允许特定端口)
  protected-port 53
  protected-port 123
  protected-port 161
 quit
quit

# 5. 配置HTTP Flood防护(应用层)
anti-attack
 http-flood
  enable
  # 限制单个IP的HTTP请求速率
  request-rate 50
  reference-time 5
  # GET请求频率限制
  get-rate 30
  # POST请求频率限制
  post-rate 10
  action black-list
  black-list-time 600
 quit
quit

# 6. 配置连接数限制
anti-attack
 connection
  # 全局最大连接数
  max-connection 100000
  # 单个IP最大连接数
  ip-max-connection 1000
  # 新建连接速率限制
  new-connection-rate 500
  reference-time 5
 quit
quit

# 7. 配置安全策略联动
security-policy
 rule name Anti-DDoS-Protection
  source-zone untrust
  destination-zone dmz
  action permit
  service any
  attack-defense enable
  anti-ddos profile Default
 quit
quit

# 8. 配置攻击日志
info-center source anti-attack
  log level informational
  info enable
quit

4.2 配置黑洞路由联动

# ========== 黑洞路由联动配置 ==========

# 当攻击流量超过阈值时自动配置黑洞路由
anti-attack
 blackhole
  enable
  # 触发黑洞路由的流量阈值(Mbps)
  threshold 800
  # 黑洞路由持续时间(秒)
  duration 1800
  # 黑洞路由前发送告警
  alarm-before-blackhole enable
  alarm-time 60
 quit
quit

# 配置黑洞路由告警通知
trap-channel 1
  destination 10.100.1.100
 trap-type anti-ddos blackhole

4.3 故障排查案例:DNS 放大攻击导致服务中断

故障现象:企业 DNS 服务器(10.100.1.53)对外提供服务,某日起大量用户反馈网站无法访问。监控显示企业出口带宽利用率达到 95%,但正常业务流量并未增加。

排查步骤:

  1. 分析出口流量特征
display interface GigabitEthernet 1/0/0

显示出口接口入方向流量达到 950Mbps(带宽 1Gbps),远超正常水平(约 50Mbps)。

  1. 分析流量协议分布
display anti-attack statistics

发现 UDP 53 端口(DNS)的入方向流量占比达到 85%,且大量 DNS 响应报文的源 IP 为公网各种 DNS 服务器。

  1. 检查 DNS 查询日志
display dns-filter log | begin "query"

发现大量来自不同源 IP 的 DNS 查询,查询大小通常为 40 字节,而响应大小为 3000-4000 字节,放大倍数超过 50 倍。

  1. 根因分析 这是一次典型的 DNS 放大攻击。攻击者伪造企业的 DNS 服务器 IP(10.100.1.53)作为源地址,向公开的 DNS 递归服务器发送大量查询。公开 DNS 服务器将放大后的响应发送到企业网络,导致出口带宽被耗尽。

  2. 解决方案

# 立即措施:限制UDP 53入方向流量
security-policy
 rule name Limit-DNS-Inbound
  source-zone untrust
  destination-zone dmz
  destination-port eq 53
  protocol udp
  action permit
  attack-defense
   udp-flood enable
   threshold 100
   reference-time 5
  quit
 quit
quit

# 长期措施:入站流量过滤(Ingress Filtering)
# 在企业边界路由器上配置uRPF
interface GigabitEthernet 1/0/0
 ip verify reverse-path
 quit

# 配置BCP38源地址验证
acl 2000
 rule 5 permit source 10.100.0.0 0.0.255.255
 rule 100 deny
quit

interface GigabitEthernet 1/0/0
 packet-filter 2000 inbound
 quit

# 联系ISP在入口处部署源地址验证

部署入站流量过滤和 UDP Flood 防护后,DNS 放大攻击的流量在企业网络入口处即被丢弃,服务在 15 分钟内恢复正常。同时联系了 ISP 在骨干网入口部署 BCP38 源地址验证,从网络层面根除伪造源 IP 的攻击流量。

五、总结

知识点 要点
DDoS 分类 网络层(L3/L4)洪泛、反射放大、应用层(L7)攻击
防护层次 本地防护、边缘防护、云端清洗、CDN 防护
流量清洗 通过 BGP 牵引攻击流量到清洗中心进行分离
黑洞路由 最后一道防线,丢弃所有到达目标 IP 的流量
BGP Flowspec 通过 BGP 分发流量过滤规则,实现分布式防护
Anycast 多节点共享 IP,分散和吸收攻击流量
DNS 放大攻击 利用公开 DNS 服务器放大攻击流量,需入站过滤
综合防护 多层防护 + 实时检测 + 自动响应 + 人工干预

思考

  1. DNS 放大攻击利用的是公开 DNS 递归服务器的响应放大效应。从 DNS 运营商的角度,有哪些技术手段可以防止其服务器被利用进行放大攻击?
  2. 黑洞路由是应对超大规模 DDoS 攻击的有效手段,但它会将所有流量(包括合法流量)丢弃。如何在启用黑洞路由的同时保障关键业务的可用性?
  3. Anycast 防护通过将攻击流量分散到多个节点来缓解 DDoS 攻击。如果攻击者集中攻击某一个 Anycast 节点(如地理上最近的节点),Anycast 防护是否仍然有效?

下篇预告:第220篇:全局白名单与黑名单策略