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攻擊。
你好,我是猿java。在上面 3個案例中,我們多次提到 DDoS攻擊。那么,什么是 DDoS攻擊?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種大類型,然后在每種類型中會列舉幾個典型的案例:
(1) 基于網絡層的攻擊
- SYN Flood:攻擊者發送大量的TCP SYN請求,消耗目標服務器的連接資源,使其無法響應合法的連接請求。
- UDP Flood:通過發送大量的UDP數據包耗盡目標系統的帶寬和處理能力。
- ICMP Flood(Ping Flood):發送大量的ICMP Echo請求(Ping)包,導致目標系統的網絡資源被占用。
(2) 基于傳輸層的攻擊
- TCP Flood:通過發送大量的TCP連接請求,使目標服務器的TCP連接隊列被填滿。
- ACK Flood:發送大量的TCP ACK數據包,干擾正常的TCP連接建立過程。
(3) 基于應用層的攻擊
- HTTP Flood:發送大量的HTTP請求,占用目標Web服務器的資源,導致合法用戶無法訪問。
- Slowloris:通過保持大量的HTTP連接處于半開狀態,消耗服務器的連接資源。
- DNS Query Flood:向目標DNS服務器發送大量查詢請求,導致其無法正常解析合法請求。
(4) 混合型攻擊
結合網絡層和應用層的攻擊手段,全面消耗目標的各種資源,增加防御的難度。
4. DDoS攻擊的工作原理
通常來說,DDoS 攻擊的工作原理通常涉及以下 8個步驟:
(1) 僵尸網絡形成:攻擊者組裝了一個由受感染設備組成的網絡,稱為僵尸網絡(botnet)。這些設備(可能包括感染了惡意軟件的計算機、服務器、IoT 設備或智能手機)受攻擊者控制并用于發起攻擊。
(2) 偵查:攻擊者識別要破壞或禁用的潛在目標,例如網站、服務器或網絡基礎設施。這可以通過自動掃描或收集有關易受攻擊目標的信息來完成。
(3) 命令和控制 (C&C) 設置:攻擊者設置了一個命令和控制基礎設施,以便與僵尸網絡中受感染的設備進行通信。此基礎結構允許攻擊者發出命令并協調攻擊。
(4) 發起攻擊:攻擊者指示僵尸網絡受感染的設備向目標系統發送大量流量或請求。這種流量洪流會壓垮目標的資源,例如帶寬、處理能力或內存。
(5) 流量重定向:為了放大攻擊,攻擊者可能會使用 IP 欺騙或反射/放大攻擊等技術。IP 欺騙涉及偽造攻擊流量的源 IP 地址,使其看起來好像來自合法來源。
(6) 反射/放大攻擊利用易受攻擊的服務器或服務,這些服務器或服務的響應流量多于接收的流量,從而放大了攻擊的規模。
(7) 對目標系統的影響:由于流量過大,目標系統的資源不堪重負。因此,目標系統的性能會下降或合法用戶完全無法訪問。這種中斷可能導致財務損失、聲譽損害和潛在的安全漏洞。
(8) 攻擊持續性:攻擊者可能會嘗試在較長時間內持續攻擊,調整攻擊策略或針對基礎設施的不同部分以逃避 DDoS 檢測或緩解措施。
在分析完 DDoS攻擊的工作原理之后,我們需要對工作原理涉及的幾個概念進行。
(1) 什么僵尸網絡?
眾所周知,僵尸網絡(botnet)是過去幾年最大的 DDoS 攻擊的幕后黑手,從 2016 年的 Dyn 攻擊到 2023 年由 Mirai 僵尸網絡主導的利用命令注入漏洞的攻擊。僵尸網絡是受惡意軟件感染的計算機和聯網設備(IoT、智能設備等)的集合,它們在單個惡意行為者或通常稱為“僵尸僵尸主機”的攻擊組的控制下協同工作。這樣的網絡也被稱為僵尸軍隊,每個受感染的設備都被稱為機器人/僵尸。
(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攻擊,這樣我們才能更好地做好系統服務自保。