因此,我了解了 (D)DoS 用于泛洪的基本概念,但我不太明白这如何导致服务器崩溃或由于 CPU 过度使用而导致它们变慢。
据我所知,用于减慢服务器速度的是 TCP SYN 握手,但这需要微不足道的 CPU。
使用 (D)DoS 如何使服务器崩溃?
因此,我了解了 (D)DoS 用于泛洪的基本概念,但我不太明白这如何导致服务器崩溃或由于 CPU 过度使用而导致它们变慢。
据我所知,用于减慢服务器速度的是 TCP SYN 握手,但这需要微不足道的 CPU。
使用 (D)DoS 如何使服务器崩溃?
使用 (D)DoS 如何使服务器崩溃?
要专门回答您的问题,要使仅使用 DDoS 的服务器崩溃,您需要针对应用层(下面有详细说明)。这些类型的攻击专门尝试尽可能多地使用目标服务器资源并将其关闭,而不是仅仅通过网络流量来打击它。
但是,为了将其与其他类型的 DDoS 攻击放在一起,让我们探索它们的主要类别和用途。
本文介绍了 DDoS 的 3 种主要攻击类型。来自文章:
DDoS 攻击大致可以分为三种类型:
基于体积的攻击
包括 UDP 泛洪、ICMP 泛洪和其他欺骗性数据包泛洪。攻击的目标是使被攻击站点的带宽饱和,并且幅度以每秒比特数 [sic] "(Bps)" [sic] 为单位。
协议攻击
包括 SYN 泛洪、分段数据包攻击、Ping of Death、Smurf DDoS 等。这种类型的攻击消耗实际的服务器资源,或中间通信设备的资源,例如防火墙和负载平衡器,并以每秒数据包数为单位。
应用层攻击
包括低速和慢速攻击、GET/POST 洪水、针对 Apache、Windows 或 OpenBSD 漏洞的攻击等。由看似合法和无辜的请求组成,这些攻击的目标是使 Web 服务器崩溃,其大小以每秒请求数来衡量。
TL;DR - 根据攻击者想要达到的目的,有多种类型的 DDoS 攻击。有时攻击者只想占用所有可用带宽,有时他们会试图压倒 CPU。
值得注意的是,DDoS 只是通用“拒绝服务”的一种分布式类型——它根本不意味着服务器崩溃,只是阻止服务器做它打算做的任何事情,无论这是否通过使用阻止实际业务发生所有带宽或其他。
SYN 洪水不是耗尽 CPU,而是耗尽内存。
TCP 连接是通过所谓的“三次握手”建立的。传统上,它的工作原理如下:
SYN
数据包。服务器接收数据包并分配资源以跟踪连接。SYN/ACK
数据包。ACK
数据包,建立连接。在 SYN 洪水中,攻击者发送连续的SYN
数据包流,而忽略SYN/ACK
响应。这使得服务器有大量半途打开的连接,这些连接会持续一段时间;如果攻击者可以足够快地发送数据包,服务器将无法响应真正的请求。编写不佳的服务器甚至可能会耗尽内存并崩溃。
针对 SYN 泛滥的标准防御措施是SYN cookie:
SYN
数据包。SYN/ACK
数据包,其中包含一些 TCP 参数的精心选择的值,以便它识别响应ACK
。ACK
客户端根据这些参数响应一个数据包,建立连接。服务器现在分配资源来跟踪连接。通过延迟资源分配直到连接完全建立,不再存在使泛洪攻击可行的努力的不对称性。
DDoS 通常不会使服务器崩溃。它使其过载,使其无法正常使用。实现这一点的“最佳”方式取决于服务器的功能及其配置方式。有很多方法可以做到这一点,仅举几例:
通常 DDoS 攻击是所谓的第 4 层攻击。这些通常使用 SYN 泛洪,旨在耗尽所有可用带宽。就像您无法从家用计算机以无限速度下载电影一样,服务器也无法接受传入请求并以无限速率发送传出响应。当然,服务器可能拥有比您更多的带宽,但最大的 DDoS 攻击每秒消耗数百千兆位!
然后是所谓的第 7 层攻击。这些通常是针对某些资源(如 CPU 或磁盘空间)的未分布式攻击。虽然第 4 层攻击是万能的,但第 7 层攻击需要针对受害者的特定弱点。通常将诸如全文搜索之类的资源密集型(未缓存)用作目标。正如您所说,SYN-ACK 握手不是非常占用资源,因此对于 7 级攻击来说这将是一个糟糕的选择。
所以,总而言之: