转载:1.35 Tbps的 DDoS攻击,Github趴下了!
2016年,Mirai发动了一系列大规模 DDoS攻击,目标包括美国互联网服务提供商Dyn,导致包括 Netflix、Spotify在内的多个知名网站在美国和欧洲瘫痪。2018年2月28日,GitHub遭受了高达 1.35 Tbps的 DDoS攻击。
2020年,AWS Shield Advanced防护服务遭受了高达 2.3 Tbps的 DDoS攻击。
在讲解 DDoS之前,我们先来了解一个它的原始版本 DoS攻击。
1. 什么是DoS攻击?
DoS(Denial of Service,拒绝服务)攻击是一种网络攻击形式,旨在通过使目标系统、网络或服务超负荷运行,导致合法用户无法正常访问或使用该资源。攻击者通过发送大量请求、数据包或利用系统漏洞,消耗目标的计算资源、带宽或内存,从而使目标无法响应合法的用户请求,达到瘫痪系统、扰乱服务的目的。
如下图,可以形象地描述 DoS攻击:
2. 什么是DDoS攻击?
DDoS(Distributed Denial of Service,分布式拒绝服务)攻击是一种通过多台受控计算机或设备向目标网络、服务器或应用程序发起大量请求,从而使其资源耗尽、无法正常响应合法用户请求的恶意行为。DDoS攻击的目的是通过压垮目标系统的资源(如带宽、处理能力、内存等),导致其服务不可用,进而达到破坏、勒索或转移注意力等目的。
与传统的单一来源的DoS(Denial of Service,拒绝服务)攻击不同,DDoS攻击通常涉及大量分布在全球各地的“僵尸网络”(Botnet)。这些僵尸网络由黑客通过恶意软件感染的计算机和物联网设备组成,使得攻击者能够同时从多个源头发起攻击,极大地增加了攻击的规模和难度。
如下图,可以形象地描述 DDoS攻击的场景:
两者的区别:
- DoS攻击:通常由单一来源或有限数量的来源发起。例如,通过一台计算机向目标服务器发送大量请求,导致服务器资源耗尽。
- DDoS攻击:由大量计算机(通常是被感染的“僵尸网络”)共同发起,向目标服务器同时发送大量请求。这种分布式的攻击方式使DDoS攻击更具破坏性和难以防御。
3. DDoS攻击的类型
DDoS攻击主要包括以下 4种大类型,然后在每种类型中会列举几个典型的案例:
3.1 基于网络层的攻击
- SYN Flood:攻击者发送大量的TCP SYN请求,消耗目标服务器的连接资源,使其无法响应合法的连接请求。
- UDP Flood:通过发送大量的UDP数据包耗尽目标系统的带宽和处理能力。
- ICMP Flood(Ping Flood):发送大量的ICMP Echo请求(Ping)包,导致目标系统的网络资源被占用。
3.2 基于传输层的攻击
- TCP Flood:通过发送大量的TCP连接请求,使目标服务器的TCP连接队列被填满。
- ACK Flood:发送大量的TCP ACK数据包,干扰正常的TCP连接建立过程。
3.3 基于应用层的攻击
- HTTP Flood:发送大量的HTTP请求,占用目标Web服务器的资源,导致合法用户无法访问。
- Slowloris:通过保持大量的HTTP连接处于半开状态,消耗服务器的连接资源。
- DNS Query Flood:向目标DNS服务器发送大量查询请求,导致其无法正常解析合法请求。
3.4 混合型攻击
- 结合网络层和应用层的攻击手段,全面消耗目标的各种资源,增加防御的难度。
4. DDoS攻击的工作原理
通常来说,DDoS 攻击的工作原理通常涉及以下 8个步骤:
- 僵尸网络形成:攻击者组装了一个由受感染设备组成的网络,称为僵尸网络(botnet)。这些设备(可能包括感染了恶意软件的计算机、服务器、IoT 设备或智能手机)受攻击者控制并用于发起攻击。
- 侦查:攻击者识别要破坏或禁用的潜在目标,例如网站、服务器或网络基础设施。这可以通过自动扫描或收集有关易受攻击目标的信息来完成。
- 命令和控制 (C&C) 设置:攻击者设置了一个命令和控制基础设施,以便与僵尸网络中受感染的设备进行通信。此基础结构允许攻击者发出命令并协调攻击。
- 发起攻击:攻击者指示僵尸网络受感染的设备向目标系统发送大量流量或请求。这种流量洪流会压垮目标的资源,例如带宽、处理能力或内存。
- 流量重定向:为了放大攻击,攻击者可能会使用 IP 欺骗或反射/放大攻击等技术。IP 欺骗涉及伪造攻击流量的源 IP 地址,使其看起来好像来自合法来源。
- 反射/放大攻击利用易受攻击的服务器或服务,这些服务器或服务的响应流量多于接收的流量,从而放大了攻击的规模。
- 对目标系统的影响:由于流量过大,目标系统的资源不堪重负。因此,目标系统的性能会下降或合法用户完全无法访问。这种中断可能导致财务损失、声誉损害和潜在的安全漏洞。
- 攻击持续性:攻击者可能会尝试在较长时间内持续攻击,调整攻击策略或针对基础设施的不同部分以逃避 DDoS 检测或缓解措施。
在分析完 DDoS攻击的工作原理之后,我们需要对工作原理涉及的几个概念进行。
4.1 什么僵尸网络?
众所周知,僵尸网络(botnet)是过去几年最大的 DDoS 攻击的幕后黑手,从 2016 年的 Dyn 攻击到 2023 年由 Mirai 僵尸网络主导的利用命令注入漏洞的攻击。僵尸网络是受恶意软件感染的计算机和联网设备(IoT、智能设备等)的集合,它们在单个恶意行为者或通常称为“僵尸僵尸主机”的攻击组的控制下协同工作。这样的网络也被称为僵尸军队,每个受感染的设备都被称为机器人/僵尸。
4.2 僵尸网络中有多少个爬虫程序?
僵尸网络中爬虫程序的数量差异很大,从几千台到一百多万台受感染设备不等。例如,Hide ‘n Seek 僵尸网络拥有大约 24,000 台受感染的设备,而 Mirai 僵尸网络在 2016 年严重破坏了美国东海岸的互联网使用,据信有 800,000 至 250 万台受感染设备。
5. 如何预防 DDoS攻击?
防御DDoS攻击需要多层次、多手段的综合防护策略,包括网络层防护、应用层防护、流量清洗服务等。以下是一些常见的防御措施:
1. 网络层防护:
- 防火墙和入侵检测/防御系统(IDS/IPS):配置防火墙规则,限制异常流量,阻挡已知的攻击流量模式。
- 路由过滤:通过路由器过滤异常流量或恶意IP地址,减少攻击流量对内部网络的影响。
- 黑名单和白名单:使用黑名单阻挡已知的恶意IP地址,使用白名单只允许可信的IP地址访问关键资源。
2. 分布式防护:
- 内容分发网络(CDN):将流量分散到全球多个节点,减轻单一服务器的压力,提高服务的可用性和抗攻击能力。
- Anycast网络:使用Anycast技术将流量路由到最近的服务器节点,有效分散DDoS流量。
3. 流量清洗服务:
- 第三方流量清洗服务(如Cloudflare、Akamai、Amazon AWS Shield)可以在攻击流量到达目标之前,对其进行过滤和清洗,只将合法流量转发给目标。
4. 应用层防护:
- Web应用防火墙(WAF):监控和过滤HTTP/HTTPS流量,阻挡恶意请求,防止应用层攻击。
- 速率限制:限制单个IP或会话在特定时间内的请求次数,防止恶意用户发送大量请求。
- 验证码和挑战:在高风险操作或大量请求时,引入验证码等机制,验证请求的合法性。
5. 冗余和负载均衡:
- 负载均衡:将流量分散到多个服务器或数据中心,避免单点故障。
- 冗余部署:部署多个数据中心,分散风险,提高系统的容灾能力。
6. 监控和报警:
- 实时监控网络流量和服务器状态,及时发现异常流量或性能下降,快速响应和处理攻击。
7. 安全意识和培训:
- 定期进行安全培训,提高员工识别和应对DDoS攻击的能力,制定应急响应计划。
8. 协议和连接优化:
- TCP防护:优化TCP连接处理机制,避免SYN Flood等攻击。
- 缓存和压缩:使用缓存减少服务器响应的压力,使用压缩技术减少带宽消耗。
6. 总结
本文,我们详细地分析了 DDoS攻击以及工作原理和预防措施,它是一种常见且破坏力强大的网络攻击手段。尽管,DDoS攻击更多面向的是安全和运维人员,但是作为程序员,我们也需要学会如何识别和防御 DDoS攻击,这样我们才能更好地做好系统服务自保。