什么是 DNS 放大攻击?
这种 DDoS 攻击是基于反射的大规模分布式拒绝服务 (DDoS) 攻击,其中,攻击者利用开放 DNS 解析器的功能产生大量流量,使目标服务器或网络不堪重负,导致服务器及其周围基础设施无法访问。
DNS 放大攻击的工作原理是什么?
所有放大攻击都利用攻击者和目标 Web 资源之间的带宽消耗差异。当消耗差异经过多次请求而被放大时,所产生的流量可导致网络基础设施中断。通过发送小型请求来导致大规模响应,恶意用户就能达到四两拨千斤的效果。当通过某个僵尸网络中的每个自动程序都发出类似请求来使这种放大效果倍增时,攻击者既能躲避检测,又能收获攻击流量大增的好处。
在 DNS 放大攻击中,其中一个机器人好比是一个心怀恶意的青少年打电话给一家餐厅,说“我要每样东西点一份,请给我回电话,告诉我整个订单”。当餐厅询问回电号码时,提供的是目标受害者的电话号码。然后目标会接到来自餐厅的电话,提供其并未请求的大量信息。
由于每个自动程序向开放 DNS 解析器提出请求时都提供欺骗性 IP 地址,也就是目标受害者的真实源 IP 地址,目标随后会收到来自 DNS 解析器的响应。为了产生大量流量,攻击者会以某种方式来构造请求,以便让 DNS 解析器产生尽可能大的响应。因此,目标接收攻击者的初始流量的放大结果,其网络被虚假流量堵塞,导致拒绝服务。
DNS 放大可分为四个步骤:
- 攻击者使用受损的端点将有欺骗性 IP 地址的 UDP 数据包发送到 DNS 递归服务器。数据包上的欺骗性地址指向受害者的真实 IP 地址。
- 每个 UDP 数据包都向 DNS 解析器发出请求,通常传递一个参数(例如“ANY”)以接收尽可能最大的响应。
- DNS 解析器收到请求后,会向欺骗性 IP 地址发送较大的响应。
- 目标的 IP 地址接收响应,其周边的网络基础设施被大量流量淹没,从而导致拒绝服务。
尽管少量请求不足以导致网络基础设施下线,但在这一过程通过多个请求和 DNS 解析器翻倍后,目标最终接收的数据量变得非常大。
如何防护 DNS 放大攻击?
对于运行网站或服务的个人或公司来说,缓解选择并不多。这是因为,尽管个人或公司的服务器可能是攻击目标,但其并非容量耗尽攻击影响最大的地方。鉴于攻击所产生的大量流量,服务器周围的基础设施感受到影响。互联网服务提供商(ISP)或其他上游基础设施提供商可能无法处理传入流量而不堪重负。因此,ISP 可能会将向受害者 IP 地址发送的所有流量传送到一个黑洞路由,以保护自己并将目标站点下线。
减少开放 DNS 解析器的总数
DNS 放大攻击的一个重要组成部分是对开放 DNS 解析器的访问权限。如果互联网上有配置不当的 DNS 解析器,那么攻击者只要找到这种 DNS 解析器就能加以利用。理想情况下,DNS 解析器应仅向源自受信任域名的设备提供服务。在基于反射的攻击中,开放 DNS 解析器将响应来自互联网任何位置的查询,因此有可能被利用。限制 DNS 解析器,使其仅响应来自受信任来源的查询,即可使服务器无法被用于任何类型的放大攻击。
源 IP 验证 —— 阻止欺骗性数据包离开网络
由于攻击者僵尸网络发送的 UDP 请求必须有一个伪造为受害者 IP 地址的源 IP 地址,对于基于 UDP 的放大攻击,降低其有效性的一个关键是互联网服务提供商(ISP)拒绝带有伪造 IP 地址的所有内部流量。如果一个从网络内部发送的数据包带有一个看起来像来自网络外部的源地址,那么它就有可能是伪造数据包并可被丢弃。