DDOS 基础知识

这次学习下,DOS(拒绝服务攻击)和DDOS(分布式拒绝服务攻击)的基础知识。

定义

分布式拒绝服务(DDoS)攻击是通过大规模互联网流量淹没目标服务器或其周边基础设施,以破坏目标服务器、服务或网络正常流量的恶意行为。

DDoS 攻击利用多台受损计算机系统作为攻击流量来源以达到攻击效果。利用的机器可以包括计算机,也可以包括其他联网资源(如 IoT 设备)。

总体而言,DDoS 攻击好比高速公路发生交通堵塞,妨碍常规车辆抵达预定目的地。

基本原理

DDoS 攻击是通过连接互联网的计算机网络进行的。

这些网络由计算机和其他设备(例如 IoT 设备)组成,它们感染了恶意软件,从而被攻击者远程控制。这些个体设备称为机器人(或僵尸),一组机器人则称为僵尸网络。

一旦建立了僵尸网络,攻击者就可通过向每个机器人发送远程指令来发动攻击。

当僵尸网络将受害者的服务器或网络作为目标时,每个机器人会将请求发送到目标的 IP 地址,这可能导致服务器或网络不堪重负,从而造成对正常流量的拒绝服务。

由于每个机器人都是合法的互联网设备,因而可能很难区分攻击流量与正常流量。

如何识别DDoS攻击

DDoS 攻击最明显的症状是网站或服务突然变慢或不可用。但是,造成类似性能问题的原因有多种(如合法流量激增),因此通常需要进一步调查。流量分析工具可以帮助您发现 DDoS 攻击的一些明显迹象:

  • 来自单个 IP 地址或 IP 范围的可疑流量
  • 来自共享单个行为特征(例如设备类型、地理位置或 Web 浏览器版本)的用户的大量流量
  • 对单个页面或端点的请求数量出现不明原因的激增
  • 奇怪的流量模式,例如一天中非常规时间段的激增或看似不自然的模式(例如,每 10 分钟出现一次激增)
    DDoS 攻击还有其他更具体的迹象,具体取决于攻击的类型。

DDoS分类

应用程序层攻击

此类攻击有时称为第 7 层 DDoS 攻击(指 OSI 模型第 7 层),其目标是耗尽目标资源。

攻击目标是生成网页并传输网页响应 HTTP 请求的服务器层。在客户端执行一项 HTTP 请求的计算成本比较低,但目标服务器做出响应却可能非常昂贵,因为服务器通常必须加载多个文件并运行数据库查询才能创建网页。

第 7 层攻击很难防御,因为难以区分恶意流量和合法流量。

HTTP 洪水(CC 攻击)

HTTP 洪水攻击类似于同时在大量不同计算机的 Web 浏览器中一次又一次地按下刷新 ——大量 HTTP 请求涌向服务器,导致拒绝服务。

这种类型的攻击有简单的,也有复杂的。

较简单的实现可以使用相同范围的攻击 IP 地址、referrer 和用户代理访问一个 URL。复杂版本可能使用大量攻击性 IP 地址,并使用随机 referrer 和用户代理来针对随机网址。

Slowloris 攻击

HTTP Post DDOS

传输层攻击

SYN攻击

SYN 洪水就好比补给室中的工作人员从商店的柜台接收请求。

工作人员收到请求,前去取包裹,再等待确认,然后将包裹送到柜台。工作人员收到太多包裹请求,但得不到确认,直到无法处理更多包裹,实在不堪重负,致使无人能对请求做出回应。

此类攻击利用 TCP 握手(两台计算机发起网络连接时要经过的一系列通信),通过向目标发送大量带有伪造源 IP 地址的 TCP“初始连接请求”SYN 数据包来实现。

目标计算机响应每个连接请求,然后等待握手中的最后一步,但这一步确永远不会发生,因此在此过程中耗尽目标的资源。

ACK攻击

网络层攻击

DNS 放大攻击

DNS 放大就好比有人打电话给餐馆说“每道菜都订一份,请给我回电话复述整个订单”,而提供的回电号码实际上属于受害者。几乎不费吹灰之力,就能产生很长的响应并发送给受害者。

利用伪造的 IP 地址(受害者的 IP 地址)向开放式 DNS 服务器发出请求后,目标 IP 地址将收到服务器发回的响应。

ICMP 泛洪攻击

UDP攻击

内存缓存攻击

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

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

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

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

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

内存缓存攻击分为 4 个步骤:

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

如何防护内存缓存攻击?

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

如何防御DDoS

黑洞路由

有一种解决方案几乎适用于所有网络管理员:创建黑洞路由,并将流量汇入该路由。在最简单的形式下,当在没有特定限制条件的情况下实施黑洞过滤时,合法网络流量和恶意网络流量都将路由到空路由或黑洞,并从网络中丢弃。

如果互联网设备遭受 DDoS 攻击,则该设备的互联网服务提供商(ISP)可能会将站点的所有流量发送到黑洞中作为防御。这不是理想的解决方案,因为它相当于让攻击者达成预期的目标:使网络无法访问。

速率限制

限制服务器在某个时间段接收的请求数量也是防护拒绝服务攻击的一种方法。

虽然速率限制对于减缓 Web 爬虫窃取内容及防护暴力破解攻击很有帮助,但仅靠速率限制可能不足以有效应对复杂的 DDoS 攻击。

然而,在高效 DDoS 防护策略中,速率限制不失为一种有效手段。了解 Cloudflare 的 Rate Limiting

Web 应用程序防火墙

Web 应用程序防火墙(WAF) 是一种有效工具,有助于缓解第 7 层 DDoS 攻击。在互联网和源站之间部署 WAF 后,WAF 可以充当反向代理,保护目标服务器,防止其遭受特定类型的恶意流量入侵。