目录

Memcached DDoS 攻击

https://www.cloudflare.com/zh-cn/learning/ddos/memcached-ddos-attack

内存缓存可以加快网站速度,但内存缓存服务器也可能被用于执行 DDoS 攻击。

学习目标

阅读本文后,您将能够:

  • 定义内存缓存 DDoS 攻击
  • 解释内存缓存的工作原理
  • 防护内存缓存攻击的重点方法

什么是内存缓存 DDoS 攻击?

内存缓存分布式拒绝服务 (DDoS) 攻击是一种网络攻击,攻击者试图使目标受害者的网络流量超载。攻击者将欺骗性的请求发送到易受攻击的 UDP 内存缓存*服务器,该服务器随后向目标受害者发送 Internet 流量,从而可能使受害者的资源不堪重负。当目标的 Internet 基础设施过载时,就无法处理新请求,而常规流量也无法访问Internet 资源,从而导致拒绝服务

*内存缓存是用于加速网站和网络的数据库缓存系统。

以下是 Cloudflare 全球网络中的数据中心,以及它们在近期一次攻击中收到的内存缓存攻击流量的相对数量。

内存缓存攻击的工作原理

内存缓存攻击的工作方式类似于所有 DDoS 放大攻击,例如 NTP 放大 DNS 放大。这种攻击欺骗性请求发送到易受攻击的服务器,该服务器随后会发出比初始请求大的数据量作为响应,因此放大了流量。

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

这种放大攻击的方法之所以成为可能,因为内存缓存服务器可以选择使用 UDP 协议进行操作。UDP 是一种网络协议,允许在不首先获得所谓握手的情况下发送数据 - 握手是指双方都同意通信的网络过程。之所以使用 UDP,是因为不用咨询目标主机是否愿意接收数据,无需事先征得它们的同意,就可以将大量数据发送给目标主机。

内存缓存攻击分为 4 个步骤:
  1. 攻击者将大量数据有效载荷*植入暴露的内存缓存服务器上。
  2. 接下来,攻击者使用目标受害者的 IP 地址伪造 HTTP GET 请求。
  3. 带有漏洞的内存缓存服务器接收到请求,试图通过响应来提供帮助,因此将大量响应发送到目标。
  4. 目标服务器或其周围的基础设施无法处理从内存缓存服务器发送的大量数据,因此导致过载和对正常请求拒绝服务。

这是针对 Cloudflare 网络的每秒 260 GB 的内存缓存攻击被防护的情况

内存缓存放大攻击的规模可以达到多大?

这种攻击的放大倍数十分惊人;在实践中,我们见过高达 51,200 倍的放大倍数!这意味着对于 15 字节的请求,可以发送 750 kB 的响应。这是一个巨大的放大倍数,无法承受如此大量攻击流量的 Web 资产则面临巨大的安全风险。巨大的放大倍数加上带有漏洞的服务器使内存缓存放大攻击成为攻击者针对各种目标发起 DDoS 攻击的主要用例。

如何防护内存缓存攻击?

  1. 禁用 UDP - 对于内存缓存服务器,请确保在不需要时禁用 UDP 支持。默认情况下,内存缓存启用了 UDP 支持,这可能会使服务器容易受到攻击。
  2. 对内存缓存服务器进行防火墙保护 - 通过在内存缓存服务器和 Internet 之间添加防火墙保护,系统管理员可以根据需要使用 UDP,而不必暴露于风险中。
  3. 防止 IP 欺骗 - 只要可以伪造 IP 地址,DDoS 攻击就可以利用此漏洞将流量定向到受害者的网络。防止 IP 欺骗是一个规模较大的解决方案,无法由特定的系统管理员实施,它要求传输提供商禁止源 IP 地址源自网络外部的任何数据包离开其网络。换句话说,Internet 服务提供商 (ISP) 之类的公司必须筛选流量,以使离开其网络的数据包不得假装成来自其他地方的其他网络。如果所有主要的传输提供商都实施了这种筛选,基于欺骗的攻击将在一夜之间消失。
  4. 开发具有减少 UDP 响应的软件 - 消除放大攻击的另一种方法是去除任何传入请求的放大因素;如果由于 UDP 请求而发送的响应数据小于或等于初始请求,则放大就不复可能。

Cloudflare 在我们的网络边缘筛选 UDP 流量,消除了诸如此类的放大攻击带来的风险。探索 Cloudflare 的高级 DDoS 防护。

要更深入地了解 Cloudflare 遇到内存缓存攻击的情况以及用于防护的特定命令和过程,请浏览博客文章内存缓存 - 来自 UDP 端口 11211 的主要放大攻击。

NTP 放大 DDoS 攻击

https://www.cloudflare.com/zh-cn/learning/ddos/ntp-amplification-ddos-attack/

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

学习目标

阅读本文后,您将能够:

    • 定义 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 服务器进行正常活动的情况下防护这种攻击流量。由于 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 防护的更多信息。

DNS 放大攻击

https://www.cloudflare.com/zh-cn/learning/ddos/dns-amplification-ddos-attack/

DNS 放大是 DDoS 攻击的一种,它利用 DNS 解析器产生大量流量,使受害者不堪重负。

学习目标

阅读本文后,您将能够:

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

 

什么是 DNS 放大攻击?

这种 DDoS 攻击是基于反射的大规模分布式拒绝服务 (DDoS) 攻击,其中,攻击者利用开放 DNS 解析器的功能产生大量流量,使目标服务器或网络不堪重负,导致服务器及其周围基础设施无法访问。

DNS 放大攻击的工作原理

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

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

由于每个机器人向开放 DNS 解析器提出请求时都提供欺骗性 IP 地址,也就是目标受害者的真实源 IP 地址,目标随后会收到来自 DNS 解析器的响应。为了产生大量流量,攻击者在构造请求时,会以让 DNS 解析器产生尽可能大响应为目的。因此,目标接收攻击者的初始流量的放大结果,而其网络则被虚假流量堵塞,导致拒绝服务

DNS 放大可分为四个步骤:

  1. 攻击者使用受损的端点将有欺骗性 IP 地址的 UDP 数据包发送到 DNS 重定向器。数据包上的欺骗性地址指向受害者的真实 IP 地址。
  2. 每个 UDP 数据包都向 DNS 解析器发出请求,通常传递一个参数(例如“ANY”)以接收可能的最大响应。
  3. 收到请求后,试图通过响应来提供帮助的 DNS 解析器会向欺骗性 IP 地址发送较大的响应。
  4. 目标的 IP 地址接到响应,并且周围的网络基础设施被大量流量淹没,从而导致拒绝服务。

尽管少量请求不足以导致网络基础设施下线,但是当此序列通过多个请求和 DNS 解析器进行扩展时,目标接收的数据的放大倍数可能会很大。探索更多关于反射攻击的技术详情

如何防护 DNS 放大攻击?

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

减少开放 DNS 解析器的总数

DNS 放大攻击的一个重要组成部分是对开放 DNS 解析器的访问权限。如果 Internet 上有配置不当的 DNS 解析器,那么攻击者仅仅需要找到这种 DNS 解析器即可利用。理想情况下,DNS 解析器应仅向源自受信任域名的设备提供服务。对于基于反射的攻击,开放DNS解析器将响应 Internet 上任何位置的查询,因此有可能被利用。限制 DNS 解析器,使其仅响应来自受信任来源的查询,即可使服务器无法被用于任何类型的放大攻击。

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

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

Cloudflare 如何防护 DNS 放大攻击?

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

SSDP DDoS 攻击

https://www.cloudflare.com/zh-cn/learning/ddos/ssdp-ddos-attack/

利用通用即插即用中的漏洞的 DDoS 攻击

学习目标

阅读本文后,您将能够:

  • 定义 SSDP DDoS 攻击
  • 说明 SSDP 攻击的详细信息
  • 实施防护 SSDP 洪水攻击的策略

什么是 SSDP DDoS 攻击?

简单服务发现协议 (SSDP) 攻击是一种基于反射的分布式拒绝服务 (DDoS) 攻击,它利用通用即插即用 (UPnP) 网络协议将放大的流量发送给目标受害者,使目标的基础设施不堪重负并使它们的 Web 资源脱机。

这是一个免费工具,可检查您的公共 IP 是否具有暴露的 SSDP 设备:检查 SSDP DDoS 漏洞

SSDP 攻击的工作原理

在正常情况下,SSDP 协议用于允许 UPnP 设备向网络上的其他设备广播其存在。例如,当 UPnP 打印机连接到典型网络时,在它收到 IP 地址之后,该打印机能够通过将消息发送到称为多播地址的特殊 IP 地址,以向网络上的计算机通告其服务。然后,多播地址将新打印机的存在告知网络上的所有计算机。一旦计算机收到有关打印机的发现消息,它就会向打印机发出请求,要求打印机完整描述其服务。然后,打印机将发出其提供的所有内容的完整列表来直接响应该计算机。SSDP 攻击通过要求设备响应目标受害者来利用最终步骤的服务请求。

下面是典型的 SSDP DDoS 攻击的 6 个步骤:

  1. 首先,攻击者进行扫描,寻找可以用作放大因子的即插即用设备。
  2. 攻击者发现联网设备后,创建所有发出响应的设备的列表。
  3. 攻击者使用目标受害者的欺骗性 IP 地址创建 UDP 数据包。
  4. 然后,攻击者使用僵尸网络通过设置某些标志(比如 ssdp:rootdevice 或 ssdp:all),向每个即插即用设备发送一个欺骗性发现数据包,并请求尽可能多的数据。
  5. 结果,每个设备都会向目标受害者发送回复,其数据量最多达到攻击者请求的 30 倍。
  6. 然后,目标从所有设备接收大量流量,因此不堪重负,可能导致对正常流量拒绝服务

如何防护 SSDP 攻击?

对于网络管理员,一个关键的防护措施是在防火墙的 1900 端口阻止传入 UDP 流量。如果流量不足以使网络基础设施不堪重负,则从此端口筛选流量可能能够防护这种攻击。要深入了解 SSDP 攻击和更多缓解策略,请探索有关 SSDP 攻击的技术详情

您是否想知道您是否有可用于 DDoS 攻击的带有漏洞的 SSDP 服务?如前所述,我们创建了一个免费工具来检查您的公共 IP 是否有暴露的 SSDP 设备。要检查 SSDP DDoS 漏洞,可以使用此免费工具

Cloudflare 如何防护 SSDP 攻击?

Cloudflare 通过在攻击流量到达目标之前阻止所有攻击流量来消除 SSDP 攻击;针对 1900 端口的 UDP 数据包不会被代理到源站,而用于接收初始流量的负载由 Cloudflare 的网络承受。我们提供针对 SSDP 和其他第 3 层放大攻击的全面保护。

尽管攻击是针对单个 IP 地址,但我们的 Anycast 网络会将所有攻击流量分散到不再具有破坏力的地步。Cloudflare 能够利用我们的规模优势在许多数据中心之间分配攻击、平衡负载,从而保证服务永远不会中断,保证攻击不会使目标服务器的基础设施不堪重负。在最近的六个月内,我们的 DDoS 缓解系统“Gatebot”检测到 6,329 次简单的反射攻击(相当于每 40 分钟一次),我们的网络成功地防护了所有攻击。了解有关 Cloudflare 的 DDoS 保护的更多信息。

DNS 洪水 DDoS 攻击

https://www.cloudflare.com/zh-cn/learning/ddos/dns-flood-ddos-attack/

旨在淹没目标 DNS 服务器并使其不堪重负的攻击。

学习目标

阅读本文后,您将能够:

  • 定义 DNS 洪水 DDoS 攻击
  • 深入探讨 DNS 洪水攻击如何禁用目标
  • 了解防护 DNS 洪水的方法

什么是 DNS 洪水?

域名系统 (DNS) 服务器是 Internet 的“电话簿”;它们是 Internet 设备查找特定 Web 服务器以访问 Internet 内容的途径。DNS 洪水是分布式拒绝服务攻击 (DDoS) 的一种,攻击者对特定域的 DNS 服务器发起流量洪水,以图破坏该的 DNS 解析。如果用户找不到电话簿,则它将无法查找地址以调用特定资源。通过破坏 DNS 解析,DNS 洪水攻击将损害网站、API 或 Web 应用程序对合法流量的响应能力。DNS 洪水攻击可能很难与正常的繁忙流量区分开来,因为大量流量通常来自多个位置,它们查询域中的真实记录,完全模仿合法流量。

DNS 洪水攻击的工作原理

域名系统的功能是在易于记忆的名称(例如 example.com)和难以记忆的网站服务器地址(例如 192.168.0.1)之间进行转换,因此成功攻击 DNS 基础设施会使大多数人无法使用 Internet。DNS 洪水攻击构成了一种相对新型的基于 DNS 的攻击,随着高带宽物联网 (IoT) 僵尸网络(如 Mirai)的兴起而激增。DNS 洪水攻击使用 IP 摄像头、 DVR 盒和其他 IoT 设备的高带宽连接来直接淹没主要提供商的 DNS 服务器。来自物联网设备的请求数量使 DNS 提供商的服务不堪重负,并阻止合法用户访问提供商的 DNS 服务器。

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

如何防护 DNS 洪水攻击?

DNS 洪水是传统上基于放大的攻击方法的变更结果。借助易于访问的高带宽僵尸网络,攻击者现在可以针对大型组织发起攻击。在可以更新或更换受损的 IoT 设备之前,抵御这些攻击的唯一方法是使用大型、高度分散的 DNS 系统,以实时监视、吸收和阻止攻击流量。了解 Cloudflare 的 DDoS 保护如何防御 DNS 洪水攻击。

HTTP 洪水攻击

https://www.cloudflare.com/zh-cn/learning/ddos/http-flood-ddos-attack/

HTTP 洪水攻击是一种大规模分布式拒绝服务 (DDoS) 攻击,旨在利用 HTTP 请求使目标服务器不堪重负。

学习目标

阅读本文后,您将能够:

  • 定义 HTTP 洪水 DDoS 攻击
  • 解释 HTTP 洪水攻击的工作原理
  • 概述防护 HTTP 洪水攻击的方法

什么是 HTTP 洪水 DDoS 攻击?

HTTP 洪水攻击是一种大规模分布式拒绝服务 (DDoS) 攻击,旨在利用 HTTP 请求使目标服务器不堪重负。目标因请求而达到饱和,且无法响应正常流量后,将出现拒绝服务,拒绝来自实际用户的其他请求。

HTTP 洪水攻击的工作原理

HTTP 洪水攻击是“第 7 层”DDoS 攻击的一种。第 7 层 OSI 模型的应用程序层,指的是 HTTP 等 Internet 协议。HTTP 是基于浏览器的 Internet 请求的基础,通常用于加载网页或通过 Internet 发送表单内容。防护应用程序层攻击特别复杂,因为恶意流量和正常流量很难区分。

为了获得最大效率,恶意行为者通常会利用或创建僵尸网络,以最大程度地扩大攻击的影响。通过利用感染了恶意软件的多台设备,攻击者可以发起大量攻击流量来进行攻击。

HTTP 洪水攻击有两种:

  1. HTTP GET 攻击 - 在这种攻击形式下,多台计算机或其他设备相互协调,向目标服务器发送对图像、文件或其他资产的多个请求。当目标被传入的请求和响应所淹没时,来自正常流量源的其他请求将被拒绝服务。
  2. HTTP POST 攻击 - 一般而言,在网站上提交表单时,服务器必须处理传入的请求并将数据推送到持久层(通常是数据库)。与发送 POST 请求所需的处理能力和带宽相比,处理表单数据和运行必要数据库命令的过程相对密集。这种攻击利用相对资源消耗的差异,直接向目标服务器发送许多 POST 请求,直到目标服务器的容量饱和并拒绝服务为止。

如何防护 HTTP 洪水攻击?

如前所述,防护第 7 层攻击非常复杂,而且通常要从多方面进行。一种方法是对发出请求的设备实施质询,以测试它是否属于机器人,这与在线创建帐户时常用的 CAPTCHA 测试非常相似。通过提出诸如 JavaScript 计算挑战之类的要求,可以防护许多攻击。

其他阻止 HTTP 洪水攻击的途径包括使用 Web 应用程序防火墙 (WAF)、管理 IP 信誉数据库以跟踪和有选择地阻止恶意流量,以及由工程师进行动态分析。Cloudflare 具有超过 2000 万个 Internet 资产的规模优势,能够分析来自各种来源的流量并通过快速更新的 WAF 规则和其他防护策略来防护潜在的攻击,从而消除应用程序层 DDoS 流量。

Cloudflare DDoS 保护

SYN 洪水攻击

https://www.cloudflare.com/zh-cn/learning/ddos/syn-flood-ddos-attack/

SYN 洪水利用 TCP/IP 握手漏洞尝试破坏 Web 服务。

学习目标

阅读本文后,您将能够:

  • 定义 SYN 洪水 DDoS 攻击
  • 解释 SYN 洪水攻击的工作原理
  • 区分不同类型的 SYN 攻击
  • 了解一些 SYN 洪水攻击缓解技巧

什么是 SYN 洪水攻击?

SYN 洪水(半开连接攻击)是一种拒绝服务 (DDoS) 攻击,旨在耗尽可用服务器资源,致使服务器无法传输合法流量。通过重复发送初始连接请求 (SYN) 数据包,攻击者将可击垮目标服务器计算机上的所有可用端口,导致目标设备在响应合法流量时表现迟钝乃至全无响应。

SYN 洪水攻击如何工作?

SYN 洪水攻击利用 TCP 连接的握手过程发动攻击。正常情况下,TCP 连接将完成三次握手以建立连接。

  1. 首先,客户端向服务器发送 SYN 数据包以发起连接。
  2. 接着,服务器通过 SYN/ACK 数据包对该初始数据包做出响应,以便确认通信。
  3. 最后,客户端返回 ACK 数据包以确认接到服务器发出的数据包。完成这一系列数据包发送和接收操作后,TCP 连接将处于打开状态并且能够发送和接收数据。

为发起拒绝服务攻击,攻击者需利用这样一项事实:收到初始 SYN 数据包后,服务器将通过一个或多个 SYN/ACK 数据包做出回响,等待完成握手过程的最后一步。工作方式如下:

  1. 攻击者通常使用伪造的 IP 地址向目标服务器发送大量 SYN 数据包。
  2. 然后,服务器分别对每一项连接请求做出响应,并确保打开的端口做好接收响应的准备。
  3. 在服务器等待最后一个 ACK 数据包(永远不会到达)的过程中,攻击者将继续发送更多 SYN 数据包。每当有新的 SYN 数据包到达,服务器都会临时打开一个新的端口并在一段特定时间内保持连接;用遍所有可用端口后,服务器将无法正常运行。

在网络中,如果服务器连接处于打开状态但另一端的机器连接未打开,则视为半开连接。在此类 DDoS 攻击中,目标服务器将使连接一直处于打开状态,静待各个连接超时,避免再次开放端口。因此,此类攻击可视为“半开连接攻击”。

恶意用户可通过三种不同方式发起 SYN 洪水攻击:

  1. 直接攻击:不伪造 IP 地址的 SYN 洪水攻击称为直接攻击。在此类攻击中,攻击者完全不屏蔽其 IP 地址。由于攻击者使用具有真实 IP 地址的单一源设备发起攻击,因此很容易发现并清理攻击者。为使目标机器呈现半开状态,黑客将阻止个人机器对服务器的 SYN-ACK 数据包做出响应。为此,通常采用以下两种方式实现:部署防火墙规则,阻止除 SYN 数据包以外的各类传出数据包;或者,对传入的所有 SYN-ACK 数据包进行过滤,防止其到达恶意用户机器。实际上,这种方法很少使用(即便使用过也不多见),因为此类攻击相当容易缓解 – 只需阻止每个恶意系统的 IP 地址。哪怕攻击者使用僵尸网络(如 Mirai 僵尸网络),通常也不会刻意屏蔽受感染设备的 IP。
  2. 欺骗攻击:恶意用户还可以伪造其发送的各个 SYN 数据包的 IP 地址,以便阻止缓解措施并加大身份暴露难度。虽然数据包可能经过伪装,但还是可以通过这些数据包追根溯源。此类检测工作很难开展,但并非不可实现;特别是,如果 Internet 服务提供商 (ISP) 愿意提供帮助,则更容易实现。
  3. 分布式攻击(DDoS):如果使用僵尸网络发起攻击,则追溯攻击源头的可能性很低。随着混淆级别的攀升,攻击者可能还会命令每台分布式设备伪造其发送数据包的 IP 地址。哪怕攻击者使用僵尸网络(如 Mirai 僵尸网络),通常也不会刻意屏蔽受感染设备的 IP。

恶意用户可以通过 SYN 洪水攻击尝试在目标设备或服务中创建拒绝服务,其流量远低于其他 DDoS 攻击。SYN 攻击不属于容量耗尽攻击,其目的并非使目标周围的网络基础设施达到饱和,只需保证大于目标操作系统的可用积压工作即可。如果攻击者能够确定积压工作规模以及每个连接保持打开状态的时间长度(超出时间将进入超时状态),攻击者将可以找出禁用系统所需的确切参数,从而将创建拒绝服务所需的总流量降至最低。

如何缓解 SYN 洪水攻击?

SYN 洪水漏洞早已为世人所知,而且开创了大量缓解方法。其中一些方法包括:

扩展积压工作队列

目标设备安装的每个操作系统都允许具有一定数量的半开连接。若要响应大量 SYN 数据包,一种方法是增加操作系统允许的最大半开连接数目。为成功扩展最大积压工作,系统必须额外预留内存资源以处理各类新请求。如果系统没有足够的内存,无法应对增加的积压工作队列规模,将对系统性能产生负面影响,但仍然好过拒绝服务。

回收最先创建的 TCP 半开连接

另一种缓解策略是在填充积压工作后覆盖最先创建的半开连接。这项策略要求完全建立合法连接的时间低于恶意 SYN 数据包填充积压工作的时间。当攻击量增加或积压工作规模小于实际需求时,这项特定的防御措施将不奏效。

SYN Cookie

此策略要求服务器创建 Cookie。为避免在填充积压工作时断开连接,服务器使用 SYN-ACK 数据包响应每一项连接请求,而后从积压工作中删除 SYN 请求,同时从内存中删除请求,保证端口保持打开状态并做好重新建立连接的准备。如果连接是合法请求并且已将最后一个 ACK 数据包从客户端机器发回服务器,服务器将重建(存在一些限制)SYN 积压工作队列条目。虽然这项缓解措施势必会丢失一些 TCP 连接信息,但好过因此导致对合法用户发起拒绝服务攻击。

Cloudflare 如何缓解 SYN 洪水攻击?

Cloudflare 通过隔离目标服务器与 SYN 洪水攻击来缓解此类攻击。当发出初始 SYN 请求时,Cloudflare 将在云中完成握手过程,拒绝与目标服务器建立连接,直到完成 TCP 握手过程。此策略使目标服务器不再需要浪费资源与伪造的 SYN 数据包建立连接,而是将资源用于打造 Cloudflare Anycast network。了解有关 Cloudflare DDoS 保护工作原理的更多信息。

UDP 洪水攻击

https://www.cloudflare.com/zh-cn/learning/ddos/udp-flood-ddos-attack/

UDP 洪水可以使服务器和保护它的防火墙不堪重负。

学习目标

阅读本文后,您将能够:

  • 定义 UDP 洪水 DDoS 攻击
  • 能够解释 UDP 洪水攻击的工作原理
  • 了解 UDP 洪水的几种防护策略

什么是 UDP 洪水攻击?

UDP 洪水是一种拒绝服务攻击,攻击者将大量用户数据报协议 (UDP) 数据包发送到目标服务器,旨在让该设备的处理和响应能力无力承担。由于 UDP 洪水攻击,保护目标服务器的防火墙也可能不堪重负,导致对正常流量拒绝服务。

UDP 洪水攻击的工作原理

UDP 洪水的工作原理主要是利用服务器响应发送到其端口之一的 UDP 数据包时所采取的步骤。在正常情况下,服务器在特定端口上收到 UDP 数据包时,将通过以下两个步骤进行响应:

  1. 服务器首先检查是否有任何当前侦听指定端口请求的程序正在运行。
  2. 如果该端口上没有程序正在接收数据包,则服务器将以 ICMP (ping) 数据包作为响应,以告知发送方目标不可达。

UDP 洪水就好比酒店接待员转接呼叫的情况。首先,接待员接到电话,呼叫者要求将其连接到特定客房。然后,接待员需要查看所有房间的列表,以确保客人在客房内,并愿意接听电话。如果接待员了解到客人没有接听电话,他们就必须重新接听电话,并告诉呼叫者客人不会接听电话。如果所有电话线路都突然同时发出类似请求,他们很快就会变得不堪重负。

当服务器接收到新的 UDP 数据包时,它会逐步进行处理,并在此过程中利用服务器资源来处理请求。传输 UDP 数据包时,每个数据包都将包括源设备的 IP 地址。在这种类型的 DDoS 攻击期间,攻击者通常不会使用自己的真实 IP 地址,而是将伪造 UDP 数据包的源 IP 地址,从而避免攻击者的真实位置被暴露,并且由于来自目标服务器的数据包而达到饱和状态。

由于目标服务器利用资源来检查并响应每个接收到的 UDP 数据包,当收到大量 UDP 数据包时,目标资源会很快耗尽,从而导致对正常流量拒绝服务。

如何防护 UDP 洪水攻击?

大多数操作系统限制 ICMP 数据包的响应速率,部分原因是为了中断需要 ICMP 响应的 DDoS 攻击。这种防护措施的一个缺点是,在攻击期间,合法数据包也可能在此过程中被过滤。如果 UDP 洪水的大小足以使目标服务器的防火墙的状态表饱和,则在服务器级别发生的任何防护都将是不够的,因为瓶颈将发生在目标设备的上游。

Cloudflare 如何防护 UDP 洪水攻击?

为了在 UDP 攻击到达目标之前防护 UDP 攻击流量,Cloudflare 将与 DNS 不相关的所有 UDP 流量丢弃在网络边缘。由于 Cloudflare 的 Anycast 网络将 Web 流量分散在许多数据中心,因此我们有足够的能力来处理任何规模的 UDP 洪水攻击。了解有关 Cloudflare DDoS保护的更多信息。

Ping (ICMP) 洪水 DDoS 攻击

https://www.cloudflare.com/zh-cn/learning/ddos/ping-icmp-flood-ddos-attack/

利用 ICMP 请求使对象不堪重负的 DDoS 攻击。

学习目标

阅读本文后,您将能够:

  • 定义 Ping 洪水 DDoS 攻击
  • 能够解释 Ping 洪水攻击的工作原理
  • 了解 Ping 攻击的类型
  • 实施防护 Ping 洪水攻击的策略

什么是 Ping (ICMP) 洪水攻击?

Ping 洪水是一种拒绝服务攻击,攻击者试图用 ICMP 回显请求包使目标设备不堪重负,导致正常流量无法正常访问目标。当攻击流量来自多个设备时,攻击将成为 DDoS 或分布式拒绝服务攻击。

Ping 洪水攻击的工作原理

Ping 洪水攻击中会利用 Internet 控制消息协议 (ICMP),后者是网络设备用来通信的 Internet 层协议。网络诊断工具 traceroute 和 ping 都使用 ICMP 工作。通常,ICMP 回显请求和回显回复消息被用于 ping 网络设备,以便诊断设备的运行状况和连接性以及发送方和设备之间的连接。

ICMP 请求需要一些服务器资源来处理每个请求并发送响应。该请求对于传入消息(回显请求)和传出响应(回显回复)也都需要带宽。Ping 洪水攻击旨在利用虚假流量使目标设备无法响应大量请求和/或让网络连接超负荷。通过利用 ICMP 请求使僵尸网络中的许多设备针对相同的 Internet 资产或基础设施组件,攻击流量将大大增加,进而可能导致正常网络活动的中断。在以前,攻击者通常会在伪造的 IP 地址中进行欺骗来掩盖发送设备。借助现代僵尸网络攻击,恶意行为者几乎不需要掩盖机器人 IP 的需要,而是依靠未伪造的机器人构成的大型网络来使目标的容量达到饱和。

Ping (ICMP) 洪水的 DDoS 形式可分为 2 个重复步骤:

  1. 攻击者使用多个设备将许多 ICMP 回显请求数据包发送到目标服务器。
  2. 然后目标服务器将 ICMP 回显回复包发送到每个请求设备的 IP 地址作为响应。

Ping 洪水的破坏效果与对目标服务器发出的请求数量成正比。与基于反射的 DDoS 攻击(例如 NTP 放大 DNS 放大攻击),Ping 洪水的攻击流量是对称的;目标设备接收的带宽量是每个机器人发送的总流量之和。

如何防护 Ping 洪水攻击?

禁用 ping 洪水最简单的方法是禁用目标路由器、计算机或其他设备的 ICMP 功能。网络管理员访问设备的管理界面,并禁用其使用 ICMP 发送和接收任何请求的能力,即可有效地消除对请求的处理和对回显回复的处理。在此后,所有涉及 ICMP 的网络活动都会被禁用,设备对 ping 请求、traceroute 请求和其他网络活动无响应。

Cloudflare 如何防护 Ping 洪水攻击?

Cloudflare 位于目标源站和 Ping 洪水之间,因此对这种类型的攻击起到了部分防护效果。每个 ping 请求发出后,Cloudflare 会在我们的网络边缘处理 ICMP 回显请求和回复的处理和响应过程。这种策略可以节省目标服务器的带宽和处理能力的资源成本,并将其放置在 Cloudflare 的 Anycast 网络上。了解有关 Cloudflare DDoS 保护的更多信息。