针对 DNS 服务器的放大反射攻击

针对 DNS 服务器的放大反射攻击

这个术语Amplified reflected attack对我来说很新,我对此有几个疑问。

我听说这种情况大多发生在 DNS 服务器上 - 是真的吗?
您如何防范这种情况?
您如何知道您的服务器是否会受到此类攻击 - 这是配置问题吗?

答案1

首先,这种攻击并非(主要)针对 DNS 本身,正如标题所示。它当然会给 DNS 服务器带来一些额外负载,但主要目的是对其他人进行 DDoS。服务器配置不当可能会使情况变得更糟,但归根结底,这个问题是 DNS 和 UDP 的设计所固有的,事实上,也是任何无状态通信协议所固有的。

它的基本工作原理如下:攻击者向 (DNS) 服务器发送普通 (DNS) 查询。这些查询被伪造,看起来好像来自目标系统。DNS 服务器现在回答查询,将答案发送回其据称起源——受害者。这就是为什么它被称为反射攻击。

这是可能的,因为您可以验证无状态通信(如 UDP 上的 DNS)的来源,就像您可以信任明信片上的发件人地址一样。服务器无法确定查询是合法的还是此类攻击的一部分。DNS 是这里最流行的协议,因为周围有很多服务器可以使用它,而且您不需要太多的技术知识或特殊设备就可以(误用)它。

让事情变得更糟的是(并且完全没有攻击效率),看看放大部分。如果攻击者的流量与结果流量大小相等,则不会造成太大伤害。攻击者的唯一好处是他的地址隐藏在 DNS 服务器后面。他可以直接伪造发件人地址,完全不需要通过 DNS 重新路由。但 DNS 答案,这也是 DNS 在这里如此受欢迎的另一个原因,可以很多比问题更大。根据所使用的具体查询,您可以找到不同的数字,但它最多可以达到1:60如果服务器足够友好,可以执行递归查询为你。因此攻击者不需要控制很多机器就能产生大量恶意流量。

由于您可以在公共互联网上轻松找到数百和数千个“开放”的 DNS 服务器,因此您可以快速计算出,如果攻击者知道每个开放的 DNS 服务器都会将他的查询放大 60 倍并反射到目标,那么攻击者需要做的工作量是多么少。正如我在开头所说的,没有真正好的方法来应对这种情况。由于配置错误,许多 DNS 服务器自然地向所有人开放,而它们不应该这样做。但有许多开放的服务器必须开放,因为这正是它们的用途。

虽然你无法判断请求是否是攻击的一部分,但你唯一的选择是不再运行服务器。你可以摆弄速率限制和其他玩具,但你无法完全摆脱它。如果你提供 DNS 只是为了好玩,你可以将请求的源 IP 列入黑名单。但如果你的规模更大,这会对受害者造成更大的损害。请记住,你在 DNS 服务器上看到的只是受害者的地址。想象一下,你的公司通过提供商的 DNS 受到攻击,而你的提供商决定切断你公司的 DNS 服务。攻击者可以将此作为无数的加分项,涉及阻断服务

无论如何,这些攻击日夜都在发生,它们被视为互联网的“背景噪音”。如果您设置了公共(递归)DNS服务器,那么您很快就会参与随机攻击。当然,当大型基础设施(例如DNS根服务器)被滥用来放大时,情况有时会变得非常糟糕,但在这种情况下,人员会采取主动的对策,直到攻击降至“正常”水平。


教学到此结束。最后回答你的问题:

如果您的服务器不受限制地回答查询,您就会知道它很容易受到攻击。就是这样。如果您正在提供递归查询,您的服务器可以为攻击者生成上述 1:60 的比例。如果它只提供非递归查询,情况就不会那么糟糕,但仍然……

所以...

  • 确保你确实需要运行民众DNS 服务器
  • 如果有必要,请查看 BINDallow-recursionallow-query指令
  • 如果你的 DNS 服务器您所在区域的权威,完全不需要递归,设置allow-recursion为“none;”
  • 如果你想运行一个其他域名的解析器,限制允许查询和递归查询的用户。您可以在上述指令中定义 IP 地址、网络或访问列表
  • 想一想速率限制DNS 流量不仅在 BIND 中,而且在系统级别。举一个非常简单的例子,这些 iptables 规则不允许每个 IP 地址每分钟发出超过 10 个查询:

iptables -A INPUT -p udp --dport 53 --set --name dnslimit
iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 11 --name dnslimit -j DROP

现在,记住这些要点,你就可以开始了。你的服务器上可能偶尔还会有恶意流量,但数量不会让你晚上睡不着觉。

相关内容