A deep-dive into Cloudflare’s autonomous edge DDoS protection

今天,我很高兴能谈一下我们的自主 DDoS (分布式拒绝服务(DDoS)) 防护系统。这个系统已部署到 Cloudflare 全球所有 200 多个数据中心,正在积极保护我们的所有客户,防御 3-7 层 (OSI 模型)上的 DDoS 攻击,无需人工干预。作为我们不计量 DDoS 防护承诺的一部分,我们不会因为客户受到 DDoS 攻击而增加对客户的收费。

自主边缘防护

为了迅速并精准地为我们的客户防护 DDoS 攻击,我们打造了一套自主边缘检测与缓解系统,可自行做出决定而不需寻求在中心节点形成统一策略。这套系统是完全由软件定义的,在我们部署于边缘的普通服务器上运行。驱动这套系统的是我们的拒绝服务守护进程(dosd),后者最早于 2019 年上线,用于防护 L3/4 DDoS 攻击。自那以来,我们一直不断投资增强和改善其能力,以便保持领先攻击者一步,并破坏攻击的经济性。最新一轮改良将我们的边缘缓解组件进行了扩展,除了 L3/4 外,也能防御 L7 攻击。

这套系统在我们所有边缘数据中心的每一台服务器上运行。系统不断分析数据包和 HTTP 请求,扫描 DDoS 攻击。一旦发现攻击,系统立即将一条附有实时生成签名的缓解规则推送到 Linux 堆栈的最优位置,在此应用最具成本效益的缓解。

A conceptual diagram of Cloudflare DDoS mitigation systems
Cloudflare DDoS 缓解系统的概念图

我们的新边缘检测能力是我们现有全球威胁监测机制 Gatebot 的补充,后者位于我们网络的核心。通过 Gatebot 在网络核心检测攻击非常适用于较大型的分布式容量耗尽型攻击,此类攻击要求整个 Cloudflare 边缘的协调。但是,较小型的局部攻击需要以不同的方式来处理。通过在边缘检测网络层和 HTTP 攻击,我们能以更高速率采样,同时检测大型和小型攻击,并立即生成缓解规则。过去几个月来,所有 L3/4 攻击中的 98.6% 是由 dosd 检测到的。同样地,自从 dosd 的扩展版本部署以来,已经缓解了全部 L7 攻击的 81%。

我们已在此前的博文中介绍过 Gatebotflowtrackd ,因此本文着重介绍扩展后的 dosd 能力。

利用 Linux 网络在瞬间丢弃数据包和请求

10 年前,Linux 网络非常缓慢。今天,得益于 Linux —— 特别是 Linux iptables 和 eXpress Data Path (XDP),我们可在瞬间丢弃数据包。

数据包的生命周期

如果一个数据包的目的地是受 Cloudflare 保护的客户,这个数据包将通过 BGP Anycast 发送到最近的 Cloudflare 数据中心。到达后,数据包将经网络交换机使用等价多路径路由组(ECMP)通过一个路由器发往一个服务器。到达某个服务器后,网络接口卡(NIC)将数据包传送到一组 eXpress Data Path(XDP)程序中。第一组 XDP 程序—— L4Drop——应用来自此前检测到的攻击的缓解规则,并将数据包样本传送给 dosd 供进一步分析。

如果数据包没有被视为恶意并丢弃,其将被传送到 Unimog——我们的专利 L4 负载平衡器。根据服务器运行状况和性能指标,Unimog 决定是否应该将数据包保存在同一台服务器中,还是将其传递到数据中心内能够更好地处理它的另一台服务器。经过 Unimog 后,数据包将通过 iptables 防火墙。然后,如果目标是一个 L7 应用程序(例如受 Cloudflare WAF 保护的服务),数据包将传送到我们的 HTTP 反向代理。该反向代理在用户空间运行, 在此数据包被构建成 HTTP 请求并通过我们的 Web 应用程序防火墙、应用程序防火墙规则以及额外的客户配置。如果数据包的目的地是一个 TCP/UDP 应用程序(Spectrum)或一个被路由而非被代理的 IP 目的地(Magic Transit),则其将通过那些系统,而非我们的 HTTP 代理。

Life of a packet
数据包的生命周期

除了 L4Drop,我们的 HTTP 代理也将 HTTP 请求的样本和元数据发送到 dosd。这一边缘取样的速率相当于核心取样的 10 倍,因为请求可在本地分析(并据以处理),而非传送到某个核心数据中心。同样地,dosd 对数据包取样的速度相当于 gatebot 的 81 倍。

dosd、gatebot 和 flowtrackd 一同分析所收到的样本并在检测到 DDoS 攻击时应用缓解规则。它们将缓解规则添加到 Web 代理中以减轻 HTTP 攻击。根据系统逻辑,对攻击请求通过阻止、速率限制或质询动作来处理。然而,如果攻击容量较大,缓解规则将在堆栈中向下推送到 iptables 防火墙,使用 IP Jails 在 L4 中断 L7 攻击,以实现更具经济效益的缓解。同样地,对于 L3/4 攻击, 系统将使用 L4Drop 内的扩展伯克利包过滤器(eBPF)程序在 iptables 防火墙内缓解。利用这些组件,我们能大规模自动缓解 DDoS 攻击。

打破攻击经济

如上所述,我们的扩展自主系统,连同我们现有的威胁缓解组件,是为保护客户免受 DDoS 攻击而开发的。然而发动攻击的难度和成本已变得非常低。恶意行为者使用这些攻击来弄垮网站、移动应用、游戏或任何连接到互联网的资产。这些扩展保护措施很有必要,因为如我们在 DDoS 趋势报告中所记载的那样,过去一年来攻击有所增加。此外,攻击还变得更大规模和更加复杂,例如模拟声学拍频的攻击(见下图)。同样重要的是,小型攻击能弄垮一个小型网站,因此无论是大型还是小型攻击,我们都要进行阻止。

很多情况下,攻击者可利用公开工具免费发动 DDoS 攻击,或支付少量费用租用 DDoS 即服务僵尸网络,例如暗网上的 Moobot。根据 2020 年暗网价格指数,一次持续一小时、每秒 1000-5000 个请求的 DDoS 攻击起步价格为 10 美元。发动攻击的成本远低于其造成的损失。通过造成服务中断或 仅仅使其性能下降,攻击者就能使受害者损失严重。例如,弄垮一个商务网站将使用户无法登录和购物。甚至延迟增加都能导致用户放弃购物车并转向竞争对手。一分钟的停机时间很可能带来数万美元损失。

DDoS 攻击的频率、复杂程度和规模要求新方法——一种快速、准确和精确的方法。这就是我们开发本文所述扩展保护的原因。

帮助构建更好的互联网

Cloudflare的使命是帮助建立一个更好的互联网——对所有人而言都更安全、更快、更可靠。DDoS 团队的愿景源自这个使命:我们的目标是使 DDoS 攻击销声匿迹。上世纪 90 年底和本世纪初,垃圾电子邮件成为严重问题。今天,电子邮件服务为我们过滤了所有垃圾邮件,我们就是要对 DDoS 攻击做同样的事情。

要进一步了解 Cloudflare DDoS 防护,请联系我们,或者在这里评估 Cloudflare 的免费计划。