你的DNS服务器是否可能被用于DDoS攻击?
作者:Melissa Bruno
如果你有一台面向互联网的DNS服务器——无论是为乐趣在家搭建,还是公司用于支持其他服务——你很可能设想了特定用户群来使用它。但你能确定只有这些人在打它的主意吗?
你可能听说过开放邮件中继服务器的风险:攻击者可利用配置不当的SMTP服务器发送垃圾邮件或钓鱼邮件,因此运维人员有责任确保服务器不被滥用。类似地,配置不当的DNS服务器也可能被用于发动攻击,检查服务器设置是成为互联网“好撒玛利亚人”的重要一环。
若不熟悉DNS,可将其比作一本精细的电话簿,用域名和IP地址替代人名和电话号码。权威DNS服务器仅在持有相关信息时才会返回主机名的IP地址(或其他信息)。递归DNS服务器若没有答案但知道何处可寻,会向其他服务器查询以解析主机名。若想深入了解DNS基础,DigitalOcean提供了详尽指南。
若DNS解析器能解析来自任意源IP的任何查询,则被视为完全“开放”,这为攻击者提供了最多选项。他们甚至可能通过DNS缓存窥探技术,窥探你访问的网站类型。本文将重点讨论DNS解析器如何通过放大效应被用于分布式拒绝服务(DDoS)攻击。
在DDoS放大攻击中,攻击者使用极小的DNS请求来获取放大数倍的响应。初始请求被伪造为源自受害者IP地址,DNS服务器则将放大后的响应发送给受害者。当足够多的开放DNS解析器发送足够多的伪造请求时,受害者的资源可能被耗尽,无法处理正常流量。
以下通过dig命令查看几个DNS请求示例。Dig默认包含在大多数Linux和Mac OS X发行版中,Windows用户可通过安装最新版BIND的“仅工具”选项来使用。
命令:
|
|
可展示典型DNS查询的大小。@8.8.8.8指定查询Google的DNS解析器,google.com为查询的主机名,+qr标志在输出中返回查询大小。响应大小默认返回。
此请求较小且平衡:请求51字节,响应仅55字节。攻击者对此类查询不感兴趣,因其放大因子略高于1.0。
再试同一解析器和主机,但此次指定返回任何资源记录类型:
|
|
此查询放大因子约为13,对攻击者更具吸引力,可最小化资源消耗的同时对目标造成更大伤害。
若DNS服务器设置为解析查询,攻击者可能用它向专为此目的设置的自家服务器发送请求,触发响应比原始请求大80倍。因此,递归DNS服务器风险最高。
即使服务器非递归,正常情况也可能生成大DNS响应,此时缓解攻击更棘手。响应速率限制和IP白名单通常是非递归DNS服务器缓解放大攻击的最有效方法。
那么,如何降低服务器被用于攻击的风险?
-
检查DNS服务器设置,尽可能限制允许的查询类型。尤其应禁用ANY资源记录类型查询。测试服务器是否响应ANY请求:
1
dig +qr @8.8.8.8 whitehouse.gov. ANY
逐一替换8.8.8.8为你的名称服务器IP,whitehouse.gov.为你的域名。若获答案,则服务器响应ANY请求。
-
若不需要,禁用递归解析支持。常见DNS服务器旧版本默认启用递归,请仔细检查未意外启用。测试方法:向名称服务器查询其非权威的域名:
1
dig +recurse @8.8.8.8 www.yahoo.com. A
多次运行,每次替换8.8.8.8为一个名称服务器IP,保持“www.yahoo.com. A”不变。若获答案,则该名称服务器响应递归请求;若无,则不响应。
-
实施每分钟接受查询数的速率限制。若需递归或服务器返回大权威响应,此点尤为重要。
-
仅允许来自受信任主机的查询。测试方法:从网络外部地址运行(再次逐一替换8.8.8.8为名称服务器IP):
1
dig @8.8.8.8 www.mycompany.com. A
若成功,可能需要限制应答查询的网络范围。
应始终了解网络中运行的服务及其能力。检查DNS服务器配置是让互联网整体更安全的重要一步。
(特别感谢Bill Stearns提供额外配置检查建议!)