NTP 放大 DDoS 攻击

大规模 DDoS 攻击,利用 NTP 协议中的漏洞,目标是向服务器发送 UDP 流量。

Share facebook icon linkedin icon twitter icon email icon

NTP 放大攻击

学习目标

阅读本文后,您将能够:

  • 定义 NTP 放大 DDoS 攻击
  • 说明 NTP 放大攻击的工作原理
  • 了解此类 DDoS 放大攻击的几种缓解策略

什么是 NTP 放大攻击?

NTP 放大攻击是基于反射的分布式拒绝服务 (DDoS) 攻击,在这种攻击中,攻击者利用网络时间协议 (NTP) 服务器功能,发送放大的 UDP 流量,使目标网络或服务器不堪重负,导致正常流量无法到达目标及其周围基础设施。

NTP 放大攻击的工作原理

所有放大攻击都利用攻击者和目标 Web 资源之间的带宽消耗差异。当许多请求的成本差异被放大时,由此产生的巨大流量可以破坏网络基础设施。通过发送导致大型响应的小型查询,恶意用户可以凭借更少的资源消耗获取更大益。通过让僵尸网络中的每个机器人提出相似的请求使放大倍增,攻击者既可以躲避检测,又会获得攻击流量大幅增加的好处。


DNS 洪水攻击 DNS 放大攻击不同。DNS 放大攻击会反射和放大来自不安全的 DNS 服务器的流量,以隐藏攻击的来源并提高其有效性。DNS 放大攻击使用带宽连接较小的设备向不安全的 DNS 服务器发出大量请求。设备发出许多较小的请求,形成非常大的 DNS 记录,但是在发出请求时,攻击者将返回地址伪造为预期受害者的地址。放大使攻击者使用有限的攻击资源即可破坏更大的目标。


NTP 放大攻击与 DNS 放大攻击非常相似,就好比是一个心怀恶意的青少年打电话给一家餐厅说“我要菜单上的东西每样来一份,请给我回电话并告诉我整个订单的信息”。当餐厅询问回叫号码时,他却给出目标受害者的电话号码。然后,目标会收到来自餐厅的呼叫,接到他们未请求的大量信息。


网络时间协议旨在允许联网的设备同步其内部时钟,并在 Internet 体系结构中发挥重要作用。通过利用在某些 NTP 服务器上启用的 monlist 命令,攻击者可以倍增其初始请求流量,从而导致较大的响应。在较旧的设备上,此命令默认为启用状态,并以对 NTP 服务器的请求的最后 600 个源 IP 地址作为响应。来自内存中具有 600 个地址的服务器的 monlist 请求将比初始请求大 206 倍。这意味着拥有 1 GB Internet 流量的攻击者可以进行 200 Gb 以上的攻击 - 导致的攻击流量大幅增加。

NTP 放大攻击可分为四个步骤:

  1. 攻击者使用僵尸网络将具有欺骗性 IP 地址的 UDP 数据包发送到启用了 monlist 命令的 NTP 服务器。每个数据包上的欺骗性 IP 地址指向受害者的真实 IP 地址。
  2. 每个 UDP 数据包使用其 monlist 命令向 NTP 服务器发出请求,导致较大的响应。
  3. 然后,服务器用结果数据响应欺骗性的地址。
  4. 目标的 IP 地址接到响应,并且周围的网络基础设施被大量流量淹没,从而导致拒绝服务
NTP Amplification DDoS Attack

由于攻击流量看似来自有效服务器的正常流量,因此很难在不阻止实际 NTP 服务器进行正常活动的情况下防护这种攻击流量。由于 UDP 数据包不需要握手,因此 NTP 服务器将向目标服务器发送较大的响应,而无需验证请求是否真实。这些条件,加上在默认情况下会发送较大响应的内置命令,使 NTP 服务器成为 DDoS 放大攻击的高效反射来源。

如何防护 NTP 放大攻击?

对于运行网站或服务的个人或公司而言,他们的缓解方案非常有限。这是因为尽管个人服务器可能是攻击目标,但并不是容量耗尽攻击主要作用所在的地方。由于攻击产生的大量流量,服务器周围的基础设施会受到影响。Internet 服务提供商(ISP) 或其他上游基础设施提供商可能无法处理传入的流量,变得不堪重负。在这种情况下,该 ISP 可能将所有流量传送到目标受害者的 IP 地址,保护自己,并使目标的网站离线。除 Cloudflare DDoS 保护之类的异地保护服务外,缓解策略主要是预防性 Internet 基础设施解决方案。

禁用 monlist - 减少支持 monlist 命令的 NTP 服务器的数量。

修补 monlist 漏洞的一个简单解决方案是禁用该命令。默认情况下,4.2.7 版本之前的所有 NTP 软件都容易受到攻击。将 NTP 服务器升级到 4.2.7 或更高版本,该命令即被禁用,即可修补漏洞。如果无法升级,则服务器的管理员可遵循 US-CERT 的说明进行必要的更改。

源 IP 验证- - 阻止欺骗性数据包离开网络。

由于攻击者的僵尸网络发送的 UDP 请求必须具有指向受害者 IP 地址的欺骗性源 IP 地址,因此,要降低基于 UDP 的放大攻击的有效性,其关键在于 Internet 服务提供商 (ISP) 拒绝任何具有欺骗性 IP 地址的内部流量。如果有数据包从网络内部发送,但其源地址看似源于网络外部,则可能是欺骗性的数据包,可以将其丢弃。Cloudflare 强烈建议所有提供商实施入口筛选,并且会不时联系不知情地参与 DDoS 攻击(在违反 BCP38 的情况下)的 ISP 并帮助他们意识到漏洞。


禁用 NTP 服务器上的 monlist 并在当前允许 IP 欺骗的网络上实施入口筛选,是在此类攻击到达其预期网络之前阻止攻击的有效方法。

Cloudflare 如何防护 NTP 放大攻击?

有了正确配置的防火墙和足够的网络容量(除非您拥有 Cloudflare 的规模,否则这总是不足够的),阻止 NTP 放大攻击等反射攻击就很简单。尽管攻击将针对单个 IP 地址,但我们的 Anycast 网络会将所有攻击流量分散到不再造成破坏的地步。Cloudflare 能够利用我们的规模优势,将攻击分配到许多数据中心,平衡负载,从而确保服务永不中断,并且攻击也不会使目标服务器的基础设施不堪重负。在最近六个月的时期内,我们的 DDoS 防护系统“Gatebot”检测到 6,329 次简单的反射攻击(相当于每 40 分钟一次),而我们的网络成功地防护了所有攻击。了解有关 Cloudflare 的高级 DDoS 防护的更多信息。