你的DNS服务器是否可能被用于DDoS攻击?技术解析与防护指南

本文深入探讨DNS服务器如何被恶意利用进行分布式拒绝服务(DDoS)攻击,通过dig命令演示攻击原理,并提供具体的配置检查和防护措施,帮助管理员加固DNS服务器安全。

你是否知道你的DNS服务器可能被用于DDoS攻击?

Melissa Bruno //

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

你可能听说过开放邮件中继服务器的危险:攻击者可以利用配置不当的SMTP服务器向受害者发送垃圾邮件或钓鱼邮件,因此运行这些服务器的人有责任确保它们不能被用于恶意目的。类似地,配置不当的DNS服务器也可能被用来发起攻击,因此检查你的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。

命令

1
dig +qr @8.8.8.8 google.com

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

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

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

1
dig +qr @8.8.8.8 google.com any

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

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

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

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

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

1
dig +qr @8.8.8.8 whitehouse.gov. ANY

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

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

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

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

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

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

1
dig @8.8.8.8 www.mycompany.com. A

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

你应该始终知道网络上运行着什么样的东西以及它们能做什么。检查你的DNS服务器配置是使互联网整体更安全的好方法。

(特别感谢Bill Stearns提供额外的配置检查!)

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