1.35 Tbps 的 DDoS 攻擊,Github 趴下了!
2016年,Mirai發(fā)動了一系列大規(guī)模 DDoS攻擊,目標包括美國互聯(lián)網(wǎng)服務提供商Dyn,導致包括 Netflix、Spotify在內的多個知名網(wǎng)站在美國和歐洲癱瘓。
2018年2月28日,GitHub遭受了高達 1.35 Tbps的 DDoS攻擊。
2020年,AWS Shield Advanced防護服務遭受了高達 2.3 Tbps的 DDoS攻擊。
你好,我是猿java。在上面 3個案例中,我們多次提到 DDoS攻擊。那么,什么是 DDoS攻擊?DDoS攻擊會帶來什么危害?我們該如何防御?這篇文章,我們將深入地聊一聊。
在講解 DDoS之前,我們先來了解一個它的原始版本 DoS攻擊。

1. 什么是DoS攻擊?
DoS(Denial of Service,拒絕服務)攻擊是一種網(wǎng)絡攻擊形式,旨在通過使目標系統(tǒng)、網(wǎng)絡或服務超負荷運行,導致合法用戶無法正常訪問或使用該資源。攻擊者通過發(fā)送大量請求、數(shù)據(jù)包或利用系統(tǒng)漏洞,消耗目標的計算資源、帶寬或內存,從而使目標無法響應合法的用戶請求,達到癱瘓系統(tǒng)、擾亂服務的目的。
如下圖,可以形象地描述 DoS攻擊:

2. 什么是DDoS攻擊?
DDoS(Distributed Denial of Service,分布式拒絕服務)攻擊是一種通過多臺受控計算機或設備向目標網(wǎng)絡、服務器或應用程序發(fā)起大量請求,從而使其資源耗盡、無法正常響應合法用戶請求的惡意行為。DDoS攻擊的目的是通過壓垮目標系統(tǒng)的資源(如帶寬、處理能力、內存等),導致其服務不可用,進而達到破壞、勒索或轉移注意力等目的。
與傳統(tǒng)的單一來源的DoS(Denial of Service,拒絕服務)攻擊不同,DDoS攻擊通常涉及大量分布在全球各地的“僵尸網(wǎng)絡”(Botnet)。這些僵尸網(wǎng)絡由黑客通過惡意軟件感染的計算機和物聯(lián)網(wǎng)設備組成,使得攻擊者能夠同時從多個源頭發(fā)起攻擊,極大地增加了攻擊的規(guī)模和難度。
如下圖,可以形象地描述 DDoS攻擊的場景:

兩者的區(qū)別:
- DoS攻擊:通常由單一來源或有限數(shù)量的來源發(fā)起。例如,通過一臺計算機向目標服務器發(fā)送大量請求,導致服務器資源耗盡。
 - DDoS攻擊:由大量計算機(通常是被感染的“僵尸網(wǎng)絡”)共同發(fā)起,向目標服務器同時發(fā)送大量請求。這種分布式的攻擊方式使DDoS攻擊更具破壞性和難以防御。
 
3. DDoS攻擊的類型
DDoS攻擊主要包括以下 4種大類型,然后在每種類型中會列舉幾個典型的案例:
(1) 基于網(wǎng)絡層的攻擊
- SYN Flood:攻擊者發(fā)送大量的TCP SYN請求,消耗目標服務器的連接資源,使其無法響應合法的連接請求。
 - UDP Flood:通過發(fā)送大量的UDP數(shù)據(jù)包耗盡目標系統(tǒng)的帶寬和處理能力。
 - ICMP Flood(Ping Flood):發(fā)送大量的ICMP Echo請求(Ping)包,導致目標系統(tǒng)的網(wǎng)絡資源被占用。
 
(2) 基于傳輸層的攻擊
- TCP Flood:通過發(fā)送大量的TCP連接請求,使目標服務器的TCP連接隊列被填滿。
 - ACK Flood:發(fā)送大量的TCP ACK數(shù)據(jù)包,干擾正常的TCP連接建立過程。
 
(3) 基于應用層的攻擊
- HTTP Flood:發(fā)送大量的HTTP請求,占用目標Web服務器的資源,導致合法用戶無法訪問。
 - Slowloris:通過保持大量的HTTP連接處于半開狀態(tài),消耗服務器的連接資源。
 - DNS Query Flood:向目標DNS服務器發(fā)送大量查詢請求,導致其無法正常解析合法請求。
 
(4) 混合型攻擊
結合網(wǎng)絡層和應用層的攻擊手段,全面消耗目標的各種資源,增加防御的難度。
4. DDoS攻擊的工作原理
通常來說,DDoS 攻擊的工作原理通常涉及以下 8個步驟:
(1) 僵尸網(wǎng)絡形成:攻擊者組裝了一個由受感染設備組成的網(wǎng)絡,稱為僵尸網(wǎng)絡(botnet)。這些設備(可能包括感染了惡意軟件的計算機、服務器、IoT 設備或智能手機)受攻擊者控制并用于發(fā)起攻擊。
(2) 偵查:攻擊者識別要破壞或禁用的潛在目標,例如網(wǎng)站、服務器或網(wǎng)絡基礎設施。這可以通過自動掃描或收集有關易受攻擊目標的信息來完成。
(3) 命令和控制 (C&C) 設置:攻擊者設置了一個命令和控制基礎設施,以便與僵尸網(wǎng)絡中受感染的設備進行通信。此基礎結構允許攻擊者發(fā)出命令并協(xié)調攻擊。
(4) 發(fā)起攻擊:攻擊者指示僵尸網(wǎng)絡受感染的設備向目標系統(tǒng)發(fā)送大量流量或請求。這種流量洪流會壓垮目標的資源,例如帶寬、處理能力或內存。
(5) 流量重定向:為了放大攻擊,攻擊者可能會使用 IP 欺騙或反射/放大攻擊等技術。IP 欺騙涉及偽造攻擊流量的源 IP 地址,使其看起來好像來自合法來源。
(6) 反射/放大攻擊利用易受攻擊的服務器或服務,這些服務器或服務的響應流量多于接收的流量,從而放大了攻擊的規(guī)模。
(7) 對目標系統(tǒng)的影響:由于流量過大,目標系統(tǒng)的資源不堪重負。因此,目標系統(tǒng)的性能會下降或合法用戶完全無法訪問。這種中斷可能導致財務損失、聲譽損害和潛在的安全漏洞。
(8) 攻擊持續(xù)性:攻擊者可能會嘗試在較長時間內持續(xù)攻擊,調整攻擊策略或針對基礎設施的不同部分以逃避 DDoS 檢測或緩解措施。
在分析完 DDoS攻擊的工作原理之后,我們需要對工作原理涉及的幾個概念進行。
(1) 什么僵尸網(wǎng)絡?
眾所周知,僵尸網(wǎng)絡(botnet)是過去幾年最大的 DDoS 攻擊的幕后黑手,從 2016 年的 Dyn 攻擊到 2023 年由 Mirai 僵尸網(wǎng)絡主導的利用命令注入漏洞的攻擊。僵尸網(wǎng)絡是受惡意軟件感染的計算機和聯(lián)網(wǎng)設備(IoT、智能設備等)的集合,它們在單個惡意行為者或通常稱為“僵尸僵尸主機”的攻擊組的控制下協(xié)同工作。這樣的網(wǎng)絡也被稱為僵尸軍隊,每個受感染的設備都被稱為機器人/僵尸。
(2) 僵尸網(wǎng)絡中有多少個爬蟲程序?
僵尸網(wǎng)絡中爬蟲程序的數(shù)量差異很大,從幾千臺到一百多萬臺受感染設備不等。例如,Hide 'n Seek 僵尸網(wǎng)絡擁有大約 24,000 臺受感染的設備,而 Mirai 僵尸網(wǎng)絡在 2016 年嚴重破壞了美國東海岸的互聯(lián)網(wǎng)使用,據(jù)信有 800,000 至 250 萬臺受感染設備。
5. 如何預防 DDoS攻擊?
防御DDoS攻擊需要多層次、多手段的綜合防護策略,包括網(wǎng)絡層防護、應用層防護、流量清洗服務等。以下是一些常見的防御措施:
(1) 網(wǎng)絡層防護:
- 防火墻和入侵檢測/防御系統(tǒng)(IDS/IPS):配置防火墻規(guī)則,限制異常流量,阻擋已知的攻擊流量模式。
 - 路由過濾:通過路由器過濾異常流量或惡意IP地址,減少攻擊流量對內部網(wǎng)絡的影響。
 - 黑名單和白名單:使用黑名單阻擋已知的惡意IP地址,使用白名單只允許可信的IP地址訪問關鍵資源。
 
(2) 分布式防護:
- 內容分發(fā)網(wǎng)絡(CDN):將流量分散到全球多個節(jié)點,減輕單一服務器的壓力,提高服務的可用性和抗攻擊能力。
 - Anycast網(wǎng)絡:使用Anycast技術將流量路由到最近的服務器節(jié)點,有效分散DDoS流量。
 
(3) 流量清洗服務:
第三方流量清洗服務(如Cloudflare、Akamai、Amazon AWS Shield)可以在攻擊流量到達目標之前,對其進行過濾和清洗,只將合法流量轉發(fā)給目標。
(4) 應用層防護:
- Web應用防火墻(WAF):監(jiān)控和過濾HTTP/HTTPS流量,阻擋惡意請求,防止應用層攻擊。
 - 速率限制:限制單個IP或會話在特定時間內的請求次數(shù),防止惡意用戶發(fā)送大量請求。
 - 驗證碼和挑戰(zhàn):在高風險操作或大量請求時,引入驗證碼等機制,驗證請求的合法性。
 
(5) 冗余和負載均衡:
- 負載均衡:將流量分散到多個服務器或數(shù)據(jù)中心,避免單點故障。
 - 冗余部署:部署多個數(shù)據(jù)中心,分散風險,提高系統(tǒng)的容災能力。
 
(6) 監(jiān)控和報警:
實時監(jiān)控網(wǎng)絡流量和服務器狀態(tài),及時發(fā)現(xiàn)異常流量或性能下降,快速響應和處理攻擊。
(7) 安全意識和培訓:
定期進行安全培訓,提高員工識別和應對DDoS攻擊的能力,制定應急響應計劃。
(8) 協(xié)議和連接優(yōu)化:
- TCP防護:優(yōu)化TCP連接處理機制,避免SYN Flood等攻擊。
 - 緩存和壓縮:使用緩存減少服務器響應的壓力,使用壓縮技術減少帶寬消耗。
 
6. 總結
本文,我們詳細地分析了 DDoS攻擊以及工作原理和預防措施,它是一種常見且破壞力強大的網(wǎng)絡攻擊手段。盡管,DDoS攻擊更多面向的是安全和運維人員,但是作為程序員,我們也需要學會如何識別和防御 DDoS攻擊,這樣我們才能更好地做好系統(tǒng)服務自保。















 
 
 






 
 
 
 