我们自豪地推出 Advanced DNS Protection 系统,它是一种强大的防御机制,旨在抵御最复杂的基于 DNS 的 DDoS 攻击。该系统旨在提供顶级安全性,确保您的数字基础设施能够从容应对不断变化的威胁。
我们现有的系统已经成功地检测出并缓解了针对 DNS 的“较简单”的 DDoS 攻击,但在应对较复杂的攻击时却显得力不从心。Advanced DNS Protection 系统能够利用我们在这篇博文中展示的新技术来弥补不足之处。
Advanced DNS Protection 目前处于测试阶段,所有 Magic Transit 客户均可免费使用。请继续阅读,深入了解 DNS DDoS 攻击、新系统的工作原理以及未来新功能的预期。
注册您的兴趣,以深入了解我们可如何帮助让您的 DNS 服务器保持受保护、可用和高性能。
三分之一的 DDoS 攻击以 DNS 服务器为目标
分布式拒绝服务 (DDoS) 攻击是一种网络攻击,旨在破坏网站及其他在线服务并使它们脱机。当 DDoS 攻击得逞并导致网站脱机时,会造成巨大的收入损失和声誉受损。
2023 年 DDoS 攻击类型分布情况
破坏网站并使它脱机的一种常见方法是向其服务器灌入超过其处理能力的流量。这就是所谓的 HTTP 洪水攻击。这是一种通过大量 HTTP 请求_直接_攻击网站的 DDoS 攻击。根据我们最新的 DDoS 趋势报告,在 2023 年,我们的系统自动缓解了 520 万次 HTTP DDoS 攻击,占所有 DDoS 攻击的 37%。
HTTP 洪水攻击示意图
不过,还有另一种方法可以让网站脱机:_间接_攻击网站。威胁者不是向网站服务器灌入大量流量,而是向 DNS 服务器灌入大量流量。如果 DNS 服务器被超过其能力的查询数量压垮,主机名到 IP 地址的转换就会失败,网站就会因为 DNS 服务器无法响应合法查询而间接中断。
一个值得注意的例子是 2016 年 10 月针对 DNS 提供商 Dyn 的攻击。这是一次由臭名昭著的 Mirai 僵尸网络发起的毁灭性 DDoS 攻击。它导致 Airbnb、Netflix 和 Amazon 等主要网站的服务中断,Dyn 花了整整一天的时间才恢复服务。对于可能导致重大声誉和收入影响的服务中断来说,这是很长的时间了。
七年多过去了,Mirai 攻击和 DNS 攻击仍然非常普遍。在 2023 年,DNS 攻击是第二大最常见的攻击类型,占所有 DDoS 攻击(460 万次)的 33%。由 Mirai 变体僵尸网络发起的攻击是排名第五的最常见网络层 DDoS 攻击类型,占所有网络层 DDoS 攻击的 3%。
DNS 查询洪水攻击示意图
什么是基于 DNS 的复杂 DDoS 攻击?
如果每次查询都有重复出现的模式,那么基于 DNS 的 DDoS 攻击就更容易缓解。这就是所谓的“攻击指纹”。基于指纹的缓解系统可以识别这些模式,然后部署缓解规则,在不影响合法流量的情况下对攻击流量进行有针对性的过滤。
例如,假设攻击者向目标发送了大量 DNS 查询。在这个例子中,攻击者只是随机化了 IP 地址。所有其他查询字段保持一致。缓解系统检测到了这种模式(源端口为 1024,查询的域为 `example.com
`),并将生成一个短暂的缓解规则来过滤这些查询。
攻击指纹识别概念简图
然而,有些基于 DNS 的 DDoS 攻击更为复杂和随机,没有明显的攻击模式。如果没有一致的模式来锁定攻击,就几乎不可能使用基于指纹的缓解系统来缓解攻击。此外,即使在高度随机化的攻击中检测到攻击模式,该模式也很可能非常通用,以至于会错误地减少合法用户流量和/或无法捕捉到整个攻击。
在这个例子中,攻击者还在 DNS 查询洪水攻击中随机化了查询域。与此同时,一个合法客户端(或服务器)也在查询 `example.com
`。它们被分配了一个随机端口号,恰好是 1024。缓解系统检测到的模式(源端口为 1024,查询的域为 `example.com
`)只捕捉到攻击中符合指纹的部分。缓解系统漏掉了攻击中查询其他主机名的部分。最后,缓解系统错误地捕获了与攻击流量相似的合法流量。
随机 DNS 洪水攻击简图
这只是一个非常简单的例子,说明指纹识别如何无法阻止随机化的 DDoS 攻击。当攻击者通过信誉良好的公共 DNS 解析器(一种 DNS 解析器,也称为递归 DNS 服务器,是一种负责从其他各种 DNS 服务器追踪网站 IP 地址的 DNS 服务器)“清白”其攻击流量时,这一挑战就会被放大。这就是所谓的 DNS Laundering 攻击。
DNS 解析过程示意图
在 DNS 洗钱攻击期间,攻击者将查询由受害者的权威 DNS 服务器管理的实时域的子域。定义子域的前缀是随机的,并且使用的次数绝不会超过一次。由于存在随机化元素,递归 DNS 服务器永远不会有缓存响应,而是需要将查询转发到受害者的权威性 DNS 服务器。这样,权威性 DNS 服务器就会受到大量查询的轰炸,直到无法为合法查询提供服务,甚至完全崩溃。
DNS Laundering 攻击示意图
复杂的 DNS DDoS 攻击的复杂性在于其吊诡性:虽然它们相对容易被发现,但有效地缓解它们却要困难得多。造成这一困难的原因是,权威 DNS 服务器不能一概阻止来自递归 DNS 服务器的查询,因为这些服务器也会发出合法请求。此外,权威 DNS 服务器无法过滤针对目标域的查询,因为它是一个真正的域,需要保持可访问性。
利用 Advanced DNS Protection 系统缓解基于 DNS 的复杂 DDoS 攻击
此类基于 DNS 的复杂 DDoS 攻击的增加促使我们开发出一种新的解决方案——一种能够更好地保护客户并弥补传统指纹识别方法不足的解决方案。这个解决方案就是 Advanced DNS Protection 系统。与 Advanced DNS Protection 系统类似,它是我们构建的软件定义系统,由我们的具状态缓解平台 flowtrackd(流量跟踪守护进程)提供支持。
Advanced DNS Protection 系统是对我们现有 DDoS 防御系统套件的补充。Advanced DNS Protection 系统采用我们的其他 DDoS 防御系统采用相同的方法,它也是一个分布式系统,它的实例在世界各地的每个 Cloudflare 服务器上运行。系统启动后,每个实例都能自主检测和缓解攻击,无需任何集中监管。检测和缓解瞬时发生(零秒)。每个实例还会与数据中心其他服务器上的其他实例通信。它们_相互交流_并共享威胁情报,以便在每个数据中心内提供全面的缓解措施。
Cloudflare 仪表板的屏幕截图,其中展示 Advanced DNS Protection 系统缓解了基于 DNS 的 DDoS 攻击
我们基于指纹的系统(DDoS 防护托管规则集)和具状态缓解系统共同提供了稳健的多层防御策略,可抵御最复杂和随机化的基于 DNS 的 DDoS 攻击。该系统还可定制,从而允许 Cloudflare 客户根据自身需要进行调整。查看我们的文档,了解有关配置选项的更多信息。
Cloudflare 的 DDoS 防护系统示意图
我们还新增了以 DNS 为中心的数据点,以帮助客户更好地了解 DNS 流量模式和攻击。这些新数据点可在 Cloudflare 网络分析仪表板中的新选项卡“DNS 保护”中找到。新选项卡可让用户了解哪些 DNS 查询已通过和被丢弃,以及这些查询的特征,包括查询的域名和记录类型。您还可以使用 Cloudflare GraphQL API 以及通过 Logpush 将日志导出到自己的监控仪表板来获取分析结果。
DNS 查询:辨别好坏
为了防范复杂且高度随机化的基于 DNS 的 DDoS 攻击,我们需要更好地判断哪些 DNS 查询对客户来说可能是合法的。不过,仅凭查询名称并不容易推断出哪些是合法的,哪些可能是攻击的一部分。我们不能完全依赖基于指纹的检测机制,因为有时看似随机的查询,如 abc123.example.com 可能是合法的。反之亦然:对 mailserver.example.com 的查询可能看起来合法,但最终可能不是客户的真正子域。
更糟糕的是,我们的第 3 层数据包基于路由的缓解服务 Magic Transit 使用直接服务器返回 (DSR),这意味着我们无法看到 DNS 源服务器的响应,从而无法反馈哪些查询最终是合法的。
使用直接服务器返回 (DSR) 的 Magic Transit 图表
我们决定,对抗这些攻击的最佳方法是根据我们建立的历史记录,为每个客户的预期 DNS 查询建立一个数据模型。有了这个模型,我们就能更有把握地判断哪些查询可能是合法的,并丢弃那些我们认为不合法的查询,从而保护客户的 DNS 服务器。
这是 Advanced DNS Protection 的基础。它会检查发送给 Magic Transit 客户的每个 DNS 查询,并根据数据模型和每个客户的个别设置通过或丢弃这些查询。
为此,我们全球网络中的每台服务器都会不断地向我们的核心数据中心发送某些与 DNS 相关数据,如查询类型(如 A 记录)和查询的域(但不包括查询的来源),我们会在核心数据中心中定期计算每个客户的 DNS 查询流量概况。这些概况分布在我们的全球网络中,通过查阅这些概况,可以帮助我们更自信、更准确地决定哪些查询是好的,哪些查询是坏的。考虑到客户对基于其配置的非预期 DNS 查询的容忍度,我们会丢弃坏的查询,通过好的查询。
解决设计 Advanced DNS Protection 系统时出现的技术难题
在建立此系统的过程中,我们面临几个具体的技术挑战:
数据处理
我们每天在我们的全球网络上为我们的 Magic Transit 客户处理几千万个 DNS 查询,这还不包括 Cloudflare 的其他 DNS 产品套件,我们使用上述与 DNS 相关的数据构建自定义查询流量概况。分析这类数据需要我们仔细处理数据管道。在构建这些流量概况时,我们在写入和读取必要数据时分别使用了写入采样和自适应比特率技术,以确保在保护我们的数据基础设施的同时捕获细粒度的数据,并丢弃可能会影响最终用户隐私的信息。
查询数据的紧凑表示
我们的一些客户每天单单 DNS 查询量就达几千万次。要以未压缩格式存储和分发如此大量的数据,其成本之高令人承受不起。为了解决这一难题,我们决定对每个客户的流量概况使用计数布隆过滤器。这是一种概率数据结构,允许我们简洁地存储和分发每个客户的 DNS 概况,然后在数据包处理时有效地查询它。
数据分布
我们需要定期在我们的数据中心之间重新计算和重新分配每个客户的 DNS 流量概况到我们机群中的每台服务器。我们使用自己的 R2 存储服务大大简化了这项工作。在启用区域提示和自定义域的情况下,我们启用了缓存,并且只使用了少量 R2 存储桶。每次我们需要更新整个边缘机群的客户数据模型的全局视图时,98% 的传输的位都是从缓存中提供的。
内置容错能力
当新域名投入使用时,我们的数据模型不会立即意识到这些域名,因为使用这些域名进行的查询以前从未见过。这种情况以及其他可能出现误报的原因要求我们必须在系统中建立一定的容错能力,以允许潜在的合法查询。为此,我们采用了令牌存储桶算法。客户可以通过更改 Advanced DNS Protection 系统的灵敏度级别来配置令牌存储桶的大小。灵敏度越低,令牌存储桶越大,反之亦然。令牌存储桶桶越大,对非预期 DNS 查询和偏离概况的预期 DNS 查询的容错能力就越高。灵敏度级别越高,令牌存储桶越小,方法越严格。
利用 Cloudflare 的全球软件定义网络
归根结底,这些都是 Cloudflare 擅长解决的挑战类型。我们的客户信任我们,让我们负责处理他们的流量,并确保他们的互联网资产受到保护、可用且性能良好。我们非常重视这份信任。
Advanced DNS Protection 系统利用我们的全球基础设施和数据处理能力以及智能算法和数据结构来保护我们的客户。
如果您还不是 Cloudflare 客户,请告诉我们您是否希望保护您的 DNS 服务器。现有的 Cloudflare 客户可以联系他们的客户团队或 Cloudflare 支持部门来启用新系统。