分布式拒绝服务攻击 (DDoS)
Published: Sat Feb 01 2025 | Modified: Fri Feb 06 2026 , 2 minutes reading.
1. 定义
分布式拒绝服务 (Distributed Denial of Service, DDoS) 是一种可用性攻击。攻击者利用多个被攻陷的计算机系统(即 僵尸网络 Botnet)作为攻击源,向目标(如服务器、网站或其他网络资源)发起攻击,导致合法用户无法获得服务。
“分布式”的特性使得防御变得极其困难,因为仅封锁单个来源是远远不够的。
2. 技术原理
DDoS 攻击针对 OSI 模型的不同层级:
- 容量消耗型攻击 (Layer 3/4): 旨在耗尽带宽。例如:UDP 洪水 (UDP Flood)、ICMP 洪水、DNS/NTP 放大攻击。
- 协议限制型攻击 (Layer 3/4): 消耗服务器资源(如防火墙连接表、负载均衡器)。例如:SYN 洪水 (SYN Flood)(利用 TCP 三次握手缺陷)。
- 应用层攻击 (Layer 7): 针对特定的重型 Web 应用。例如:HTTP 洪水、Slowloris(通过发送不完整的请求长期占用连接)。
3. 攻击流程 (以 Mirai 僵尸网络为例)
flowchart TD
C2[攻击者 C2 服务器]
subgraph Botnet [僵尸网络]
IoT1[受感染的摄像头]
IoT2[受感染的路由器]
IoT3[受感染的录像机]
end
Target[目标 Web 服务器]
C2 --"指令:攻击目标 IP"--> Botnet
IoT1 --"UDP 洪水"--> Target
IoT2 --"TCP SYN 洪水"--> Target
IoT3 --"HTTP GET /"--> Target
Note right of Target: 带宽饱和<br/>CPU 占用 100%<br/>合法用户请求被丢弃4. 真实案例:Dyn DNS 攻击 (2016)
目标: Dyn (主要的 DNS 服务提供商)。 攻击类型: 大规模容量型 IoT 僵尸网络 (Mirai)。 流量峰值: 估计达到 1.2 Terabits per second (Tbps)。
事件过程: Mirai 僵尸网络 在互联网上扫描使用默认密码(如 admin/admin)的 IoT 设备(摄像头、路由器等),并感染了数十万台设备。 2016 年 10 月 21 日,这些设备接到指令,向 Dyn 的 DNS 基础设施发起大量的 TCP 和 UDP 53 端口洪水攻击。
影响: 由于 Dyn 为许多主流网站提供 DNS 服务,这次攻击导致数百万用户遭遇“断网”。Netflix、Twitter、Reddit、CNN 和 GitHub 等网站在北美和欧洲变得无法访问。这不是因为它们的服务器宕机了,而是因为浏览器无法解析它们的域名。
5. 深度防御策略
A. 任播 (Anycast) 网络路由
使用任播网络(由 Cloudflare、AWS CloudFront 或 Akamai 等 CDN 提供)。
- 机制: 多个全球节点发布相同的 IP 地址。
- 防御效果: 攻击流量会被自然地分散到物理位置最近的数据中心,防止单点被压垮。这种方式将“洪水”稀释到了全球网络中。
B. WAF 与速率限制 (应用层 Layer 7)
针对应用层攻击:
- 人机识别: 使用 CAPTCHA 或 JS 挑战(浏览器完整性检查)来区分机器人与真实人类。
- 速率限制 (Rate Limiting): 限制每个 IP 的请求频率(如每分钟 100 次请求)。
- WAF 规则: 封锁已知的恶意爬虫 User-Agent 或异常流量特征。
C. 清洗中心 (Scrubbing Centers, Layer 3/4)
针对容量型攻击:
- 当检测到攻击时,通过 BGP 路由将流量引导至专业的“清洗中心”。
- 清洗中心过滤掉恶意数据包(如畸形的 UDP、没有 ACK 的 SYN),仅将干净的流量转发回源站服务器。
D. 减小攻击面
- 不要直接公开源站服务器的 IP。
- 使用白名单,仅允许来自 CDN 供应商 IP 段的流量。
- 关闭所有不必要的端口(如 SSH/FTP),或将其限制在 VPN 访问内。
