DDoS攻击、检测与防御

00 DDoS 攻击简介

分布式拒绝服务攻击(Distributed Denial of Service,DDoS),这种网络攻击形式尝试用恶意流量淹没网站或网络资源(消耗目标服务器性能或网络带宽),从而导致网站或网络资源无法正常运行。所有攻击的目的都是为了严重拖慢合法流量的速度,或者阻止合法流量到达其预定目的地。

Cloudflare ddos protection  osi layers outline

  • 第 7 层 - 应用层

应用层位于 OSI 模型的顶端,最靠近最终用户。它是人与电脑和设备对接的位置,也是网络与应用程序连接的地方。

  • 第 6 层 - 表示层

数据加密和解密都在表示层中发生,从而实现安全传输。

  • 第 5 层 - 会话层

会话层允许设备、电脑或服务器彼此通信,并控制端口和会话。

  • 第 4 层 - 传输层

在传输层,数据通过传输控制协议 (TCP) 进行通信,该协议基于互联网协议 (IP),也称为 TCP/IP。

  • 第 3 层 - 网络层

网络层决定了数据到达目的地的物理路径。

  • 第 2 层 - 数据链路层

数据链路层提供了一种在网络实体之间传输数据的方式。它也用来检测和纠正物理层可能发生的错误。

  • 第 1 层 - 物理层

第 1 层叫做物理层,也是最低的一层,在这里,原始比特位通过连接各个网络节点的物理数据链路传输。

01 DDoS 攻击种类

DDoS攻击分类 攻击子类 描述
畸形报文 畸形报文主要包括Frag Flood、Smurf、Stream Flood、Land Flood、IP畸形报文、TCP畸形报文、UDP畸形报文等。 畸形报文攻击指通过向目标系统发送有缺陷的IP报文,使得目标系统在处理这样的报文时出现崩溃,从而达到拒绝服务的攻击目的。
传输层DDoS攻击 传输层DDoS攻击主要包括Syn Flood、Ack Flood、UDP Flood、ICMP Flood、RstFlood等。 协议攻击:协议攻击通过尝试利用协议通信的恶意连接请求来消耗并耗尽各种网络基础架构资源(如服务器或防火墙)的计算容量。同步 (SYN) 泛洪攻击和 Smurf DDoS 是基于协议的 DDoS 攻击的两种常见类型。协议攻击可以用每秒数据包数量 (pps) 和每秒比特数 (bps) 来衡量。
以Syn Flood攻击为例,它利用了TCP协议的三次握手机制,当服务端接收到一个Syn请求时,服务端必须使用一个监听队列将该连接保存一定时间。因此,通过向服务端不停发送Syn请求,但不响应Syn+Ack报文,从而消耗服务端的资源。当监听队列被占满时,服务端将无法响应正常用户的请求,达到拒绝服务攻击的目的。
互联网控制消息协议 (ICMP) 主要用于错误信息传递,通常不会在系统之间交换数据。ICMP 数据包可能与传输控制协议 TCP 数据包一同传输,让应用程序和计算设备在连接到服务器时可以通过网络交换信息。ICMP 泛洪攻击是一种第 3 层基础架构 DDoS 攻击方法,它使用 ICMP 消息来造成目标网络带宽超载。
DNS DDoS攻击 DNS DDoS攻击主要包括DNS Request Flood、DNS Response Flood、虚假源+真实源DNS Query Flood、权威服务器攻击和Local服务器攻击等。 以DNS Query Flood攻击为例,其本质上执行的是真实的Query请求,属于正常业务行为。但如果多台傀儡机同时发起海量的域名查询请求,服务端无法响应正常的Query请求,从而导致拒绝服务。

DNS 反射攻击是一种常见的攻击媒介,网络犯罪分子通过伪装其目标的 IP 地址,向开放的 DNS 服务器发送大量请求。作为回应,这些 DNS 服务器通过伪造的 IP 地址响应恶意请求,大量的 DNS 答复形成洪流,从而构成预定目标的攻击。很快,通过 DNS 答复产生的大量流量就会造成受害企业的服务不堪重负、无法使用,并造成合法流量无法到达其预定目的地。
连接型DDoS攻击 连接型DDoS攻击主要是指TCP慢速连接攻击、连接耗尽攻击、Loic、Hoic、Slowloris、 Pyloris、Xoic等慢速攻击。 以Slowloris攻击为例,其攻击目标是Web服务器的并发上限。当Web服务器的连接并发数达到上限后,Web服务即无法接受新的请求。Web服务接收到新的HTTP请求时,建立新的连接来处理请求,并在处理完成后关闭这个连接。如果该连接一直处于连接状态,收到新的HTTP请求时则需要建立新的连接进行处理。而当所有连接都处于连接状态时,Web将无法处理任何新的请求。Slowloris攻击利用HTTP协议的特性来达到攻击目的。HTTP请求以\r\n\r\n标识Headers的结束,如果Web服务端只收到\r\n,则认为HTTP Headers部分没有结束,将保留该连接并等待后续的请求内容。
Web应用层DDoS攻击 Web应用层攻击主要是指HTTP Get Flood、HTTP Post Flood、CC等攻击。 通常应用层攻击完全模拟用户请求,类似于各种搜索引擎和爬虫一样,这些攻击行为和正常的业务并没有严格的边界,难以辨别。Web服务中一些资源消耗较大的事务和页面。例如,Web应用中的分页和分表,如果控制页面的参数过大,频繁的翻页将会占用较多的Web服务资源。尤其在高并发频繁调用的情况下,类似这样的事务就成了早期CC攻击的目标。由于现在的攻击大都是混合型的,因此模拟用户行为的频繁操作都可以被认为是CC攻击。例如,各种刷票软件对网站的访问,从某种程度上来说就是CC攻击。CC攻击瞄准的是Web应用的后端业务,除了导致拒绝服务外,还会直接影响Web应用的功能和性能,包括Web响应时间、数据库服务、磁盘读写等。

按协议层次划分

  • 网络层攻击

    比较典型的攻击类型是UDP反射攻击,例如NTP Flood攻击。这类攻击主要利用大流量拥塞被攻击者的网络带宽,导致被攻击者的业务无法正常响应客户访问。

    近年来,泛洪攻击又发展出了一种高级形式,我们称之为反射攻击。顾名思义,反射攻击并不是直接向攻击目标发起大量服务请求,而是攻击者控制僵尸网络中的海量僵尸主机伪装成攻击目标,都以攻击目标的身份向网络中的服务器发起大量服务请求。网络中的服务器会响应这些大量的服务请求,并发送大量的应答报文给攻击目标,从而造成攻击目标性能耗尽

    反射攻击大多是由UDP Flood变种而来,反射的是UDP报文,例如NTP、DNS、SSDP、SMTP、Chargen等。为什么选中UDP呢?因为UDP的响应(Reponse)报文大小要大于请求(request)报文,这样攻击者就实现了对攻击流量的放大

    以NTP报文为例,NTP的Monlist命令用来查询主机最近所有和服务器通信的记录,服务器会返回最多600个通信记录,这样流量就被放大了数百倍。如果攻击者控制成千上万的傀儡机伪装成攻击目标大量发送此命令给NTP服务器,那么反射给攻击目标的流量可想而知

  • 传输层攻击

    比较典型的攻击类型包括SYN Flood攻击、连接数攻击等。这类攻击通过占用服务器的连接池资源从而达到拒绝服务的目的。

  • 会话层攻击

    比较典型的攻击类型是SSL连接攻击。这类攻击占用服务器的SSL会话资源从而达到拒绝服务的目的。

  • 应用层攻击

    比较典型的攻击类型包括DNS flood攻击、HTTP flood攻击(即CC攻击)、游戏假人攻击等。这类攻击占用服务器的应用处理资源,极大地消耗服务器计算资源,从而达到拒绝服务的目的。

02 DDoS 攻击工具

03 DDoS攻击检测

面临的挑战

浅谈DDoS攻防对抗中的AI实践[4]

对数据类型(如:协议,标志位)请求进行统计,当统计结果偏离预设阈值时,则认为攻击发生。所有业务或者特定业务都是一刀切的阈值,容易产生大量误报或者小流量漏报。由于多样化的业务特性、差异化的基础配置以及产品化需求,固定阈值需要大量的人工干预,完全无法实现自学习自适应。

  • DDoS攻击产业化、平台化,发起攻击成本低
  • 海量攻击,需要“降本”还需要“增效”
  • 难以平衡的误报和漏报
  • 预设阈值难以有效应对未知攻击
  • 可维护性差,自适应性,自学习差

基于机器学习的DDoS检测

流量分类/异常检测

  • 流量特征提取
  • 树模型/集成学习(Bagging/Boosting)
  • 神经网络 DNN/CNN
  • 无监督学习

04 DDoS攻击防御

  • 基于CDN的防御(cloudflare)

    在网站保护服务提供商使用其 CDN 专门加速使用 HTTP 和 HTTPS 协议的流量时,所有针对该 URL 发动的 DDoS 攻击流量都会在网络边缘被丢弃。这意味着第 3 层和第 4 层 DDoS 攻击会立即得到抵御,因为这种类型的流量并非以 Web 端口 80 和 443 为目标。该网络采用云端代理的形式,布设在客户的 IT 基础架构前方,将来自最终用户的流量传送到网站和应用程序。由于这些解决方案采用内嵌运作模式,面向 Web 的资产将会始终受到保护,不需要人工干预,也不会受到网络层 DDoS 攻击

  • WAF/IPS

## 参考

[1] 3分钟了解DDoS攻击

[2] 全面的 DDoS 防护

[3] 什么是 DDoS 攻击?分布式拒绝服务 | Akamai

[4] 浅谈DDoS攻防对抗中的AI实践