Post

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(半连接攻击)。
  • 原理:
    1. 收到 SYN 包时,不分配内存建立连接表项。
    2. 根据源 IP、端口等信息计算一个 Hash 值作为 TCP 序列号(Cookie),回复 SYN+ACK。
    3. 只有客户端回复了包含正确 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 NetworkUDP/ICMP FloodAnycast, BGP FlowSpec分流、上游阻断
L4 TransportSYN/ACK FloodXDP, DPDK, SYN Cookies高性能丢包、内核旁路
L7 ApplicationHTTP Flood (CC)WAF, JS Challenge, CAPTCHA人机识别、行为分析

对于现代 Linux 服务器,XDP 是性价比最高的抗 D 方案;而对于复杂的 Web 业务,WAF + CDN 则是必不可少的标配。

This post is licensed under CC BY 4.0 by the author.