我没有最强的计算机安全背景,但昨天我们公司的一台服务器被我们的主机关闭了。
这是一台分配了公共 IP 的服务器,我托管了多个 Web 服务应用程序,包括网站和 API。我被告知我的服务器“正在运行一个开放 DNS 解析器,用于将拒绝服务攻击中继到外部实体。”
这意味着什么?这种攻击是如何进行的?我该如何保护我的系统免受此类攻击?
在我的具体情况下,有问题的服务器位于 Windows Server 2012 上,并且它为 Active Directory 域提供 DNS 服务。
答案1
“开放 DNS 解析器”是一种愿意为互联网上的任何人解析递归 DNS 查询的 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/16
和172.16.0.0/12
。
- 选择 DNS 规则(TCP 和 UDP),转到部分