阻断服务攻击

阻断服务攻击（denial-of-service attack，简称DoS攻击），是一种网络攻击手法，其目的在于使目标电脑的网络或系统资源耗尽，使服务暂时中断或停止，导致其正常用户无法访问。

当黑客使用网络上两个或以上电脑向特定的目标发动“拒绝服务”式攻击时，称为分散式阻断服务攻击（distributed denial-of-service attack，简称DDoS攻击）亦称洪水攻击，意在使阻止攻击变得更加困难。据2014年统计，被确认为大规模DDoS的攻击已达平均每小时28次。DDoS发起者一般针对重要服务和知名网站进行攻击，如银行、信用卡支付网关、甚至根域名服务器等。

<image>

DoS也常见于部分网络游戏，被心怀不满的玩家或是竞争对手广泛使用。DoS也常被用于抗议，自由软件基金会创办人理查德·斯托曼曾表示，DoS是“网络街头抗议”的一种形式。

## 攻击现象

美国国土安全部旗下的美国电脑紧急应变小组（US-CERT）定义的拒绝服务攻击症状包括：

- 网络异常缓慢（打开文件或访问网站）
- 特定网站无法访问
- 无法访问任何网站
- 垃圾邮件的数量急剧增加

拒绝服务的攻击也可能会导致目标计算机同一网络中的其他计算机被攻击，互联网和局域网之间的带宽会被攻击导致大量消耗，不但影响目标计算机，同时也影响局域网中的其他电脑。如果攻击的规模较大，整个地区的网络连接都可能会受到影响。

## 攻击方式

DoS攻击可以具体分成三种形式：带宽消耗型、资源消耗型、漏洞触发型。前两者都是透过大量合法或伪造的请求占用大量网络以及器材资源，以达到瘫痪网络以及系统的目的。而漏洞触发型，则是触发漏洞导致系统崩溃瘫痪服务。

### 带宽消耗型攻击

DDoS带宽消耗攻击可以分为两个不同的层次；洪泛攻击或放大攻击。洪泛攻击的特点是利用僵尸程序发送大量流量至受损的受害者系统，目的在于堵塞其宽带。放大攻击与其类似，是通过恶意放大流量限制受害者系统的宽带；其特点是利用僵尸程序通过伪造的源IP（即攻击目标IP）向某些存在漏洞的服务器发送请求，服务器在处理请求后向伪造的源IP发送应答，由于这些服务的特殊性导致应答包比请求包更长，因此使用少量的宽带就能使服务器发送大量的应答到目标主机上。

UDP洪水攻击（User Datagram Protocol floods）：UDP（用户数据报协议）是一种无连接协议，当数据包通过UDP发送时，所有的数据包在发送和接收时不需要进行握手验证。当大量UDP数据包发送给受害系统时，可能会导致带宽饱和从而使得合法服务无法请求访问受害系统。遭受DDoS UDP洪泛攻击时，UDP数据包的目的端口可能是随机或指定的端口，受害系统将尝试处理接收到的数据包以确定本地运行的服务。如果没有应用程序在目标端口运行，受害系统将对源IP发出ICMP数据包，表明“目标端口不可达”。某些情况下，攻击者会伪造源IP地址以隐藏自己，这样从受害系统返回的数据包不会直接回到僵尸主机，而是被发送到被伪造地址的主机。有时UDP洪泛攻击也可能影响受害系统周围的网络连接，这可能导致受害系统附近的正常系统遇到问题。然而，这取决于网络体系结构和线速。

ICMP洪水攻击（ICMP floods）：ICMP（互联网控制消息协议）洪水攻击是通过向未良好设置的路由器发送广播信息占用系统资源的做法。

### 资源消耗型攻击

协议分析攻击（SYN flood，SYN洪水）：传送控制协议（TCP）同步（SYN）攻击。TCP进程通常包括发送者和接受者之间在数据包发送之前建立的完全信号交换。启动系统发送一个SYN请求，接收系统返回一个带有自己SYN请求的ACK（确认）作为交换。发送系统接着传回自己的ACK来授权两个系统间的通讯。若接收系统发送了SYN数据包，但没接收到ACK，接受者经过一段时间后会再次发送新的SYN数据包。接受系统中的处理器和内存资源将存储该TCP SYN的请求直至超时。DDoS TCP SYN攻击也被称为“资源耗尽攻击”，它利用TCP功能将僵尸程序伪装的TCP SYN请求发送给受害服务器，从而饱和服务处理器资源并阻止其有效地处理合法请求。它专门利用发送系统和接收系统间的三向信号交换来发送大量欺骗性的原IP地址TCP SYN数据包给受害系统。最终，大量TCP SYN攻击请求反复发送，导致受害系统内存和处理器资源耗尽，致使其无法处理任何合法用户的请求。

LAND攻击：这种攻击方式与SYN floods类似，不过在LAND攻击包中的原地址和目标地址都是攻击对象的IP。这种攻击会导致被攻击的机器死循环，最终耗尽资源而死机。

CC攻击（Distributed HTTP flood，分布式HTTP洪水攻击）：向受害服务器发送大量貌似合法的请求（通常为HTTP GET）。攻击者创造性地使用代理服务器，利用广泛可用的免费代理服务器发动DDoS攻击。许多免费代理服务器支持匿名，这使追踪变得非常困难。

2004年，一位匿名为KiKi的中国黑客开发了一种用于发送HTTP请求的DDoS攻击工具以攻击名为“Collapsar”的NSFOCUS防火墙，因此该黑客工具被称为“Challenge Collapsar”（挑战黑洞，简称CC），这类攻击被称作“CC攻击”。

僵尸网络攻击：僵尸网络是指大量被命令与控制（C&C）服务器所控制的互联网主机群。攻击者传播恶意软件并组成自己的僵尸网络。僵尸网络难于检测的原因是，僵尸主机只有在执行特定指令时才会与服务器进行通讯，使得它们隐蔽且不易察觉。僵尸网络根据网络通讯协议的不同分为IRC、HTTP或P2P类等。

应用程序级洪水攻击（Application level floods）：与前面叙说的攻击方式不同，应用程序级洪水攻击主要是针对应用软件层的，也就是高于OSI的。它同样是以大量消耗系统资源为目的，通过向IIS这样的网络服务程序提出无节制的资源申请来破坏正常的网络服务。

### 漏洞触发型

这类攻击手法，透过尝试触发缓冲区溢位等漏洞，使操作系统发生核心错误或蓝屏死机，达到阻断服务攻击。

死亡之Ping（ping of death）：死亡之Ping是产生超过IP协定能容忍的封包数，若系统没有检查机制，就会宕机。

泪滴攻击：每个资料要传送前，该封包都会经过切割，每个小切割都会记录位移的资讯，以便重组，但此攻击模式就是捏造位移资讯，造成重组时发生问题，造成错误。

## 防御方式

拒绝服务攻击的防御方式通常为入侵检测，流量过滤和多重验证，旨在堵塞网络带宽的流量将被过滤，而正常的流量可正常通过。

### 防火墙

防火墙可以设置规则，例如允许或拒绝特定通讯协议，端口或IP地址。当攻击从少数不正常的IP地址发出时，可以简单的使用拒绝规则阻止一切从攻击源IP发出的通信。

复杂攻击难以用简单规则来阻止，例如80端口（网页服务）遭受攻击时不可能拒绝端口所有的通信，因为其同时会阻止合法流量。此外，防火墙可能处于网络架构中过后的位置，路由器可能在恶意流量达到防火墙前即被攻击影响。然而，防火墙能有效地防止用户从启动防火墙后的计算机发起攻击。

### 网络交换设备自有能力

大多数交换机有一定的速度限制和存取控制能力。有些交换机提供自动速度限制、流量整形、后期连接、深度包检测和假IP过滤功能，可以检测并过滤拒绝服务攻击。例如SYN洪水攻击可以通过后期连接加以预防。基于内容的攻击可以利用深度包检测阻止。

和交换机类似，路由器也有一定的速度限制和存取控制能力。

### 黑洞引导

黑洞引导指将所有受攻击计算机的通信全部发送至一个“黑洞”（空接口或不存在的计算机地址）或者有足够能力处理洪流的网络设备商，以避免网络受到较大影响。

### 流量清洗

当获取到流量时，通过DDoS防御软件的处理，将正常流量和恶意流量区分开，正常的流量则回注回客户网站，反之则屏蔽。这样一来可站点能够保持正常的运作，仅仅处理真实用户访问网站带来的合法流量。

## 历史

Panix是世界上第三古老的互联网服务供应商，被认为是首个 DoS 攻击的目标。1996年9月6日，Panix 遭受了SYN 洪水攻击，导致其服务中断数日，而硬件供应商（尤其是思科）找到了适当的防御措施。DoS攻击的另一个早期例子是 Khan C. Smith 在1997年的DEF CON活动期间进行的，导致拉斯维加斯大道的互联网访问中断一个多小时。活动期间发布的示例代码引发了次年对斯普林特、地球连线、E-Trade等大公司的网络攻击。迄今为止最大规模的DDoS攻击发生在2017年9月，当时谷歌云遭受了一次峰值量为2.54Tb/s 的攻击（Google于2020年10月17日透露）。

2013年8月25日0时6分起，“.cn”顶级域名系统遭受大规模拒绝服务攻击，经过应急处置，凌晨2时后逐步恢复正常。凌晨4时许，国家域名解析节点再次受到有史以来最大规模的拒绝服务攻击，部分网站解析受到影响，导致访问缓慢或中断。

2023年2月，Cloudflare面临每秒7100万次请求的攻击，Cloudflare声称这是当时最大的HTTP DDoS 攻击。2023年7月10日，同人小说平台Archive of Our Own遭遇 DDoS 攻击，服务中断。AO3和专家们对一个匿名苏丹组织表示怀疑，声称此次袭击是出于宗教和政治原因。2023年8月，黑客组织NoName057执行缓慢的DoS攻击，目标针对多家意大利金融机构。2024年1月14日，在泽伦斯基总统出席达沃斯世界经济论坛的推动下，他们对瑞士联邦网站发起了DDoS攻击。瑞士国家网络安全中心迅速缓解了此次攻击，确保联邦核心服务保持安全，尽管某些网站暂时出现访问问题。2023年10月，利用 HTTP/2协议中的新漏洞导致最大HTTP DDoS攻击记录被两度打破，其中一次是Cloudflare观察到的每秒2.01亿次请求的攻击，另一次则是由Google观察到的每秒3.98亿次请求的攻击。