什么是 ACK 洪水 DDoS 攻击?| DDoS 攻击类型

在 ACK 洪水攻击中,攻击者试图用虚假的 ACK 数据包压垮目标,这些 ACK 数据包应被用来确认设备已成功接收到传输的数据。

学习目标

阅读本文后,您将能够:

  • 了解 ACK 的含义
  • 了解 ACK 洪水攻击的工作方式
  • 了解如何阻止 ACK 洪水攻击

相关内容


想要继续学习吗?

订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!

参阅 Cloudflare 的隐私政策,了解我们如何收集和处理您的个人数据。

复制文章链接

什么是 ACK 洪水 DDoS 攻击?

ACK 洪水攻击是指攻击者试图用 TCP ACK 数据包使服务器过载。像其他 DDoS 攻击一样,ACK 洪水的目的是通过使用垃圾数据来减慢攻击目标的速度或使其崩溃,从而导致拒绝向其他用户提供服务。目标服务器被迫处理接收到的每个 ACK 数据包,消耗太多计算能力,以致无法为合法用户提供服务。

想象一下,一个恶作剧呼叫者用虚假消息填充某人的语音信箱,使真实呼叫者的语音留言无法进入。现在假设,这些虚假消息全部说的是:“嗨,我打电话来是跟你说我已收到你的信息。”这有点像在 ACK 洪水 DDoS 攻击中发生的情况。

什么是数据包?

通过 Internet 发送的所有数据都分割为较小的片段,称为数据包。想象一下,某人想在 Twitter 上发表一个深入的观点或讲一个长篇故事,不得不将其文本分割成 280 个字符的片段,并以一系列推文的形式发布,而不是一次性发布全部。对于那些不使用 Twitter 的人,可以想一下没有专用短信应用的手机如何将长短信文本分成几个较小的部分。

传输控制协议(TCP)是 Internet 通信的重要组成部分。使用 TCP 协议发送的数据包在其标头中包含附加的信息。TCP 协议使用数据包标头来告诉接收方有多少个数据包以及它们应以什么顺序到达。标头还可以指示数据包的长度和类型等信息。

这有点像给文件夹取名,让人们知道其中的内容。回到 Twitter 的例子,发布大量推文的人通常会指明该系列中有多少条推文,以及每条推文的编号以帮助读者阅读它们。

什么是 ACK 数据包?

ACK 表示“确认”。ACK 数据包是确认接收到一条消息或一系列数据包的任何 TCP 数据包。ACK 数据包的技术定义是标头中设置了“ACK”标志的 TCP 数据包。

TCP 握手

ACK 数据包隶属于 TCP 握手,后者是三个连续的步骤,用于在 Internet 上任何两个连接的设备之间启动对话(就像现实生活中人们在开始交谈之前通过握手来问候一样)。TCP 握手的三个步骤是:

  1. SYN
  2. SYN ACK
  3. ACK

打开连接的设备(比如,用户的笔记本电脑)通过发送 SYN(“同步”的缩写)数据包来启动三向握手。位于连接另一端的设备(假设是托管在线购物网站的服务器)以 SYN ACK 数据包答复。最后,用户的笔记本电脑发送一个 ACK 数据包,此时三向握手宣告完成。此过程可确保两个设备都已联机并且准备好接收其他数据包,本例中为允许用户加载网站。

但是,这并非使用 ACK 数据包的唯一时间。TCP 协议要求连接的设备确认它们已按顺序接收了所有数据包。假设用户访问一个托管图片的网页。图片分解为数据包,并发送到用户的浏览器。整个图片到达后,用户设备就会向主机服务器发送一个 ACK 数据包,以确认一个像素也没丢失。如果没有此 ACK 数据包,主机服务器必须再次发送图片。

由于 ACK 数据包是在标头中设置了 ACK 标志的任何 TCP 数据包,因此 ACK 可以是笔记本电脑发送到服务器的其他消息的一部分。如果用户填写表单并将数据提交给服务器,则笔记本电脑可以将其中一个数据包作为图片的 ACK 数据包。它不需要是单独的数据包。

ACK 洪水攻击如何工作?

ACK 洪水以需要处理收到的每个数据包的设备为目标。防火墙和服务器最有可能成为 ACK 攻击的目标。负载均衡器、路由器和交换机不容易遭受这些攻击。

合法和非法 ACK 数据包看起来基本相同,因此,如果不使用内容分发网络 (CDN) 过滤掉不必要的 ACK 数据包,就很难阻止 ACK 洪水。尽管看起来很相似,但用于 ACK DDoS 攻击的数据包并不包含数据本身数据包的主要部分,也称为有效负载。为了显得合法,它们仅需在 TCP 标头中包含 ACK 标志。

ACK 洪水是第 4 层(传输层)DDoS 攻击。了解第 4 层和 OSI 模型

SYN ACK 洪水攻击如何工作?

SYN ACK 洪水 DDoS 攻击与 ACK 攻击略有不同,但基本思路仍然相同:用过多的数据包来压垮目标。

记住 TCP 三向握手的工作方式:握手的第二步是 SYN ACK 数据包。通常,服务器在响应来自客户端设备的 SYN 数据包时发送此 SYN ACK 数据包。在 SYN ACK DDoS 攻击中,攻击者使大量 SYN ACK 数据包涌向目标。这些数据包根本不属于三向握手协议的一部分,它们的唯一目的是打断目标的正常运作。

攻击者也有可能在 SYN 洪水 DDoS 攻击中使用 SYN 数据包。

Cloudflare 如何阻止 ACK 洪水 DDoS 攻击?

Cloudflare CDN 代理往返于 Cloudflare 客户的源站服务器的所有流量。CDN 不会传递与开放 TCP 连接无关的任何 ACK 数据包。这样可以确保恶意 ACK 流量不会到达源站服务器。由数据中心组成的 Cloudflare 网络的规模足够大,足以吸收几乎任何规模的 DDoS 攻击,因此 ACK 洪水对 Cloudflare 几乎没有影响。

Cloudflare Magic TransitCloudflare Spectrum 也可以阻止此类 DDoS 攻击。Magic Transit 代理第 3 层流量,Spectrum 则代理第 4 层流量,而不是 CDN 等第 7 层流量。两款产品均通过自动检测攻击模式并阻止攻击流量来阻止 ACK 洪水。

了解其他类型的 DDoS 攻击