你的DNS服务器可能被用于DDoS攻击吗?深入解析DNS放大攻击与防护

本文详细探讨了开放DNS解析器如何被恶意利用进行分布式拒绝服务(DDoS)放大攻击,通过实际dig命令演示查询放大效应,并提供禁用ANY查询、关闭递归解析、实施速率限制等具体防护措施,帮助管理员加固DNS服务器安全。

你的DNS服务器可能被用于DDoS攻击吗?

梅丽莎·布鲁诺 //

假设你有一台面向互联网的DNS服务器。也许你是为了乐趣在家搭建的,或是公司拥有与其他服务协同工作的服务器。无论如何,你心目中可能有一组应该使用它的人。但你能确定只有这些人才会对它感兴趣吗?

你可能听说过开放邮件中继服务器的危险:攻击者可以利用配置不当的SMTP服务器向受害者发送垃圾邮件或钓鱼邮件,因此运营者有责任确保它们不被用于恶意目的。同样,配置不当的DNS服务器也可被用来发起攻击,因此检查你的服务器设置是成为互联网好公民的重要一环。

如果你不熟悉DNS,最简单的类比是它类似于一个精细的电话簿,使用域名和IP地址代替人名和电话号码。向权威DNS服务器发出的查询只有在服务器手头有该信息时才会返回主机名的IP地址(或其他信息)。递归DNS服务器如果自己没有答案但知道在哪里找到,会向其他服务器寻求解答或解析关于主机名的查询。如果你对更全面的解释感兴趣,DigitalOcean对DNS基础有深入的探讨。

如果DNS解析器能解析来自任何源IP的任何类型查询,它就被认为是完全“开放”的。这给攻击者提供了最多的选择。他们甚至可能使用DNS服务器通过一种称为DNS缓存窥探的技术来窥探你访问的网站类型。在这篇博客文章中,我们将探讨DNS解析器如何通过放大被用于分布式拒绝服务(DDoS)攻击。

为了通过放大进行DDoS攻击,攻击者会使用非常小的DNS请求来返回大许多倍(放大)的答案。初始请求被伪造,使其看起来来自受害者的IP地址,进而DNS服务器将放大的响应发送给受害者。如果有足够多的开放DNS解析器发出足够多的伪造请求,接收者的资源可能会被耗尽,无法接受正常流量。

让我们看几个使用dig命令的DNS请求示例。Dig默认包含在大多数Linux和Mac OS X发行版中。Windows用户可以通过执行最新版本BIND的“仅工具”安装来访问dig。

命令
dig +qr @8.8.8.8 google.com

将让我们了解典型DNS查询的大小。@8.8.8.8告诉dig查询Google在8.8.8.8的DNS解析器,google.com是要查询的主机名,添加+qr标志会在命令输出中返回查询大小。答案大小默认返回。

这个请求相当小且平衡。请求是51字节,响应仅稍大为55字节。攻击者不会对进行这种类型的查询感兴趣,因为它只有略高于1.0的放大因子。

现在让我们用相同的解析器和主机进行另一个查询,但这次指定应返回任何资源记录类型,使用命令:
dig +qr @8.8.8.8 google.com any

这个查询的放大因子约为13,对攻击者来说更有吸引力。它允许他们最小化资源消耗,同时对目标造成更多损害。

如果DNS服务器设置为解析查询,攻击者可能使用它向专门为此目的设置的自己的服务器发出请求,触发响应比原始请求大80倍。因此,递归DNS服务器构成最大风险。

即使服务器是非递归的,在正常情况下也可能生成大的DNS响应,在这种情况下缓解攻击可能更棘手。响应速率限制和IP白名单通常是在非递归DNS服务器上缓解DNS放大攻击的最有效方法。

那么,你可以做些什么来降低服务器被用于攻击的风险?

检查你的DNS服务器设置,并在可能的情况下限制允许的查询类型。尤其是对ANY资源记录类型的查询,如果可能应禁用。要查看你的服务器是否会响应ANY请求,使用以下命令:

dig +qr @8.8.8.8 whitehouse.gov. ANY

将8.8.8.8一次一个地替换为你的名称服务器的IP地址,并将whitehouse.gov.替换为你的域名。如果你得到任何答案,你的DNS服务器确实会响应ANY请求。

如果不需要,禁用递归解析支持。常见DNS服务器的旧版本默认启用递归,因此请仔细检查此功能是否未被意外启用。要测试这一点,向你的名称服务器查询一个它们不是权威的域名:

dig +recurse @8.8.8.8 www.yahoo.com. A

像之前一样,多次运行它,每次将8.8.8.8替换为你的一个名称服务器。但这次保持“www.yahoo.com. A”不变:你想问一个你的名称服务器通常不会回答的问题。如果你得到任何答案,该名称服务器将响应递归请求。如果你没有得到任何答案,它不会。

对每分钟接受的查询数量实施速率限制。如果需要递归或服务器返回大的权威响应,这一点尤其重要。

仅允许来自受信任主机的查询。要测试,尝试从网络外部地址运行此命令(再次,将8.8.8.8依次替换为你的每个名称服务器):

dig @8.8.8.8 www.mycompany.com. A

如果成功,你可能需要限制你将回答查询的网络。

你应该始终知道网络上运行着哪些类型的服务以及它们的能力。检查你的DNS服务器配置是使互联网整体更安全一点的好方法。

(特别感谢比尔·斯特恩斯提供额外的配置检查!)

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计