为什么浏览器 DNS 缓存不能缓解对 DNS 提供商的 DDOS 攻击?

信息安全 dns ddos
2021-09-01 12:29:22

为什么最近针对 DNS 提供商 Dyn 的 DDoS 攻击以及其他类似的攻击都成功了?当然,DDoS 攻击可以使实体崩溃,如果该实体控制 DNS 服务器,则对这些名称服务器的查询将失败,并且这些名称服务器下列出的域将无法被任何没有 IP 信息的主机访问。

但是由于浏览器缓存 DNS 记录,许多主机已经拥有这些域的 IP 信息(至少在它们的缓存条目过期之前),因此名称服务器关闭的事实对于具有缓存的主机来说应该无关紧要。但情况似乎并非如此:在昨天的攻击中,我无法访问 github、npm 等。

4个回答

您是正确的,DNS 缓存会缓解名称服务器不可用的情况。TTL 为 5 分钟或更低是非常常见的。因此,在 DDOS 攻击导致 Dyn 瘫痪 5 分钟后,您的缓存将失效,您将无法访问 github,等等。

对 DNS 缓存进行小的设计更改可能会产生很大的不同。大多数 DNS 缓存会在 TTL 过期时删除一个条目。缓存可以改为保留条目,但将其标记为过期。如果查询到过期条目,缓存将首先尝试解析上游名称,如果失败,则返回过期条目。我希望这在技术上违反了 DNS 协议,但仍然是一种更好的失败行为。

但是,我不希望看到这种情况发生。DNS 服务器宕机的影响仍然很大——缓存中没有的所有站点。重点仍将是保持 DNS 基础设施正常运行。

更新:@MatthieuM 指出EdgeDNS 会这样做

@Shackledtodesk 是正确的(+1),浏览器缓存会保留很短的时间。具有讽刺意味的是,Dyn 发表了一些关于这一事实的最佳参考资料:

我为查询前 1000 个网站(根据 Alexa)编写的一个简单程序显示 212 次点击,TTL 值为 300(5 分钟),192 次点击,TTL 为 3600(1 小时),116 次点击,TTL 为 600( 10 分钟)和 79 次点击,TTL 为 86400。其余结果的点击次数在 50 秒或更少,范围从 TTL 5(1 次点击)到 TTL 864000(1 次点击)。

这是来自 Dyn 的研究员和技术作家 Ben Anderson 的一句话。

查看这些结果,如果您的浏览器使 DNS 缓存失效,您可以看到一小部分。您的 DNS 解析开始失败。

参考


PS:为了雪上加霜,来自 Dyn 的链接文章认为浏览器 DNS 缓存是一件坏事。

浏览器不缓存 DNS 记录

这是解析器的一个功能,它是网络堆栈的附属品。

DNS缓存没有多大帮助

mirai 被奴役的设备能够按照 CnC 的指示执行任意数量的不同攻击。在对 Krebbs 安全和 DYN 的攻击中,攻击者只是用流量填充了他们的带宽——实际上流量是多少并不重要。虽然可以利用 DNS 进行间接放大攻击,但据我了解,这不适用于对 Krebss 和 DYN 的攻击。在后一种攻击中使用了 DNS,因为它使得从攻击流量中过滤掉真实流量变得不切实际。

如果 DNS 记录缓存在普通用户可以访问的其他地方(在 DNS 缓存上,而不是在浏览器中),那么攻击的影响就会小得多,但是 DYN 业务模型主要针对 DNS 托管和最终用户提供。后者无论如何都会被打乱。中间缓存/其他最终用户提供商中数据的存在取决于流量和到期时间(我的经验是,到期时间少于 2 小时是无效的)。此外,高流量站点将具有多个地理存在点以及每个 POP 上的多个 A 记录 - 多播地址很昂贵,并且(由于 edns-client-subnet)除了 DNS(在没有 DOS 攻击的情况下)之外不需要)。