什么是开放式DNS解析器,如何保护我的服务器免遭黑客滥用?


15

我在计算机安全方面没有最强大的背景,但是昨天我的一台公司服务器被我们的主机关闭了。

这是一台分配了公共IP的服务器,在其中托管了多个Web服务应用程序,包括网站和API。有人告诉我我的服务器“正在运行一个开放的dns解析器,该解析器用于将拒绝服务攻击中继到外部实体。”

这是什么意思?这种攻击如何起作用?以及如何保护我的系统免受此类滥用?

在我的特定情况下,该服务器位于Windows Server 2012上,并且正在为Active Directory域提供DNS。


如果您让我们知道您使用的是哪个DNS服务器,那么有人可能会准确地告诉您您需要设置哪种配置以及哪种方式。没有这些信息,我只是猜测BIND和所有专用IP地址空间,因为BIND是最常见的DNS服务器,并且专用地址空间是安全的。您可能还希望允许来自外部地址块的递归请求(如果适用)。
HopelessN00b 2014年

@ HopelessN00b谢谢,您的回答非常有用。我没有使用BIND(我的主机也假定我在使用BIND,并提供了一些要运行的命令);我已将DNS服务器设置为IIS中的角色。有趣的是,我没有手动配置DNS服务器,而且我不确定我是否理解我什至需要此服务器。如果被禁用会怎样?
JSideris 2014年

嗯,不要在Windows环境中禁用DNS。您可能会破坏Active Directory。让我知道Windows Server的版本,我可以(可能)在一些屏幕截图中进行编辑,以向您展示如何保护Windows DNS框。
HopelessN00b 2014年

好的。我实际上刚刚在这个周末设置了活动目录。这是Windows Server 2012标准版。
JSideris

Answers:


28

“开放式DNS解析器”是一种DNS服务器,它愿意为Internet上的任何人解析递归DNS查找。这很像一个开放的SMTP中继,因为简单的身份验证缺失使恶意的第三方可以使用您不安全的设备传播其有效负载。对于开放的SMTP中继,问题在于它们转发垃圾邮件。使用开放式DNS解析器时,问题在于它们允许拒绝服务攻击,即DNS放大攻击。

攻击的方式非常简单-因为您的服务器将解析任何人的递归DNS查询,所以攻击者可以通过向服务器发送递归DNS查询来使它参与DDoS,该查询将返回大量数据,比原始DNS请求数据包。通过欺骗(伪造)他们的IP地址,他们会将多余的流量引向受害者的计算机,而不是他们自己的计算机,当然,他们将尽可能快地向您的服务器以及任何其他开放的DNS发出请求他们可以找到的解析器。以这种方式,具有相对较小管道的某人可以通过使用其管道上的所有带宽将大量流量定向到受害者身上,从而“放大”拒绝服务攻击。

ArsTechnica在最近针对Spamhaus的DNS放大DDoS攻击方面写了一篇不错的文章,值得快速阅读以了解基础知识(以及对放大的直观了解)。

保护您的系统免受滥用的最简单方法是,限制服务器将对本地子网执行递归查找的地址。(当然,具体取决于您使用的是哪个DNS服务器)。


例如,如果我使用的是BIND 9,并且想简单地防止外部地址进行DNS递归,则可以在配置中使用以下代码:

options {
    directory "/var/named/master";
    allow-recursion { 127.0.0.1; 10.0.0.0/8; 192.168.0.0/16; 172.16.0.0/12; };

该行代码告诉我的BIND服务器仅处理对本地环回地址(我可以/应该将其设置为本地环回块,整个/ 8)和3个私有IPv4地址空间的递归DNS请求。


对于您说正在使用的Windows Server 2012,具有以下选项。

1.将DNS服务器与IIS服务器分开。

  • 至少在理想情况下,没有理由需要在与IIS相同的机器上运行DNS。
    • 将DNS放在没有NAT的内部设备上,这样外部世界就无法使用它,而IIS则位于世界其他地方可以使用的面向外部的设备上。您可以使用双宿主或防火墙规则来选择性地允许从IIS服务器访问DNS服务器。

2.使用防火墙(例如内置Windows防火墙)阻止外部DNS请求。

  • 令我惊讶的是,Windows DNS不允许您将递归DNS请求的地址限制为接受地址,因此这实际上是Microsoft推荐的方法。
  • 在此处输入图片说明
    • 选择DNS规则(TCP和UDP),转到Remote IP address部分,并添加LAN上正在使用的子网以及需要访问Active Directory的服务器的所有面向公众的IP地址。与BIND示例一样,IPv4专用地址空间为127.0.0.0/8 10.0.0.0/8 192.168.0.0/16172.16.0.0/12

3. 禁用递归

  • 老实说,我不确定这将对您的环境产生什么影响,因为您尚未真正说明环境中如何配置DNS和AD,因此,这是最后的选择。
  • 在此处输入图片说明
    1. 打开DNS管理器。
    2. 在控制台树中,右键单击适用的DNS服务器,然后单击“属性”。
    3. 哪里?
    4. DNS /适用的DNS服务器
    5. 单击高级选项卡。
    6. 在服务器选项中,选择禁用递归复选框,然后单击确定。
      • 因为我们有一个多林环境,并且使用条件转发器来工作,所以我不会选中该框。也可能是您要考虑的东西。

很好的答案!
弗雷德神奇狗

完善的,有据可查的解决方案:)。
JSideris 2014年

2
那么8.8.8.8或1.1.1.1如何防止自己成为开放的解析器?
LinuxBabe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.