DDoS 防护技术全景:从 XDP 到应用层清洗
DDoS 防护技术全景:从 XDP 到应用层清洗
DDoS 防护技术全景:从 XDP 到应用层清洗
分布式拒绝服务攻击 (DDoS) 是互联网最古老但也最难防御的攻击方式之一。它简单粗暴,通过海量流量淹没目标,导致正常用户无法访问服务。
防御 DDoS 没有“银弹”,通常需要构建一个多层级的纵深防御体系。本文将横跨基础设施层、内核层和应用层,盘点目前业界最主流的防护技术。
1. 基础设施层:对抗带宽饱和 (L3/L4)
当攻击流量达到 100Gbps 甚至 Tbps 级别时,服务器的网卡还没收到包,上游的链路就已经堵死了。这时候必须在链路层解决问题。
1.1 Anycast (任播) 分流
- 原理: 多个地理位置分散的清洗中心宣告同一个 IP 地址。
- 作用: 利用路由协议(BGP)将全球的攻击流量“就近”分散到各地的节点。单点扛不住,但分摊到全球 50 个节点就能轻松消化。
- 应用: Cloudflare, AWS CloudFront 等 CDN 厂商的核心抗 D 机制。
1.2 BGP FlowSpec
- 原理: 一种 BGP 扩展协议。被攻击方可以向运营商(ISP)的骨干路由器发送特殊的流量过滤规则。
- 作用: 在流量进入你的网络之前,就在运营商的路由器上把攻击流量(如特定端口的 UDP 包)丢弃掉。这是真正的“源头阻断”。
1.3 DPDK (Data Plane Development Kit)
- 定位: 高性能软件清洗网关。
- 原理: 绕过 Linux 内核协议栈(Kernel Bypass),在用户态直接接管网卡,轮询收包。
- 优势: 极高的吞吐量,能跑满 100G 网卡。
- 劣势: 开发复杂度高,独占 CPU 核心,难以与现有 Linux 工具链集成。
2. 系统内核层:对抗协议栈资源耗尽 (L4)
如果流量没有打满带宽,但打满了服务器的连接表或 CPU,这时就需要内核层面的黑科技。
2.1 XDP (eXpress Data Path) —— 现代 Linux 的抗 D 神器
- 原理: 在操作系统内核的最底层(网卡驱动层)运行 eBPF 字节码。
- 作用: 在
sk_buff结构体生成之前就处理数据包。- XDP_DROP: 看到垃圾包直接丢弃,不消耗内存,不进协议栈。
- XDP_TX: 看到 SYN 包,直接修改 MAC 地址原路弹回(用于 SYN Proxy)。
- 优势: 性能接近 DPDK,但依然保留在 Linux 内核生态中,可以使用标准工具(如
ip link)管理。
2.2 SYN Cookies
- 场景: 防御 SYN Flood(半连接攻击)。
- 原理:
- 收到 SYN 包时,不分配内存建立连接表项。
- 根据源 IP、端口等信息计算一个 Hash 值作为 TCP 序列号(Cookie),回复 SYN+ACK。
- 只有客户端回复了包含正确 Cookie 的 ACK 包,服务器才真正分配内存建立连接。
- 效果: 彻底解决了 SYN Flood 耗尽服务器内存的问题。
2.3 iptables / ipset
- 原理: 传统的 Netfilter 防火墙。
- 优化: 虽然单条规则性能较差,但配合
ipset(基于 Hash 的 IP 集合),可以高效地封禁数百万个恶意 IP。
3. 应用层:对抗业务逻辑耗尽 (L7)
这类攻击(HTTP Flood / CC 攻击)流量极小,看起来像正常用户访问,但会让数据库 CPU 飙升。
3.1 人机验证 (Challenge-Response)
- JS Challenge: 返回一段带有加密逻辑的 JavaScript 代码。浏览器会自动执行并计算出答案,带在 Cookie 里回传;简单的 Python 脚本或 Bot 无法执行 JS,会被拦截。
- CAPTCHA: 著名的“点击图中的红绿灯”。这是最后一道防线。
3.2 WAF (Web Application Firewall)
- 架构: 通常基于 Nginx + Lua (OpenResty)。
- 策略:
- 速率限制 (Rate Limiting): 单个 IP 每秒最多请求 10 次 API。
- 行为分析: 识别 User-Agent 异常、Referer 缺失或请求路径规律性太强的流量。
- 慢速攻击防护: 针对 Slowloris,限制 HTTP Header/Body 的最长传输时间。
3.3 协议栈指纹 (OS Fingerprinting)
- 原理: 不同操作系统(Windows, Linux, Android)的 TCP 实现细节(如 TTL, Window Size, MSS 顺序)有细微差异。
- 应用: 如果 HTTP Header 声称自己是 “Windows Chrome”,但 TCP 指纹显示它是 “Linux Kernel 2.6”,则判定为伪造的攻击脚本。
4. 总结
| 层级 | 典型攻击 | 核心防御技术 | 关键词 |
|---|---|---|---|
| L3 Network | UDP/ICMP Flood | Anycast, BGP FlowSpec | 分流、上游阻断 |
| L4 Transport | SYN/ACK Flood | XDP, DPDK, SYN Cookies | 高性能丢包、内核旁路 |
| L7 Application | HTTP Flood (CC) | WAF, JS Challenge, CAPTCHA | 人机识别、行为分析 |
对于现代 Linux 服务器,XDP 是性价比最高的抗 D 方案;而对于复杂的 Web 业务,WAF + CDN 则是必不可少的标配。
This post is licensed under CC BY 4.0 by the author.