自9月初開始,Cloudflare DDoS防護系統(tǒng)一直在抵御持續(xù)一個月的L3/4 DDoS容量耗盡攻擊。Cloudflare防御解決方案在整個9月緩解了百余次L3/4 DDoS容量耗盡攻擊,其中許多攻擊超過20億個數(shù)據(jù)包/秒(Bpps)和3 TB/秒(Tbps)。最大攻擊峰值達(dá)到了3.8 Tbps,這是迄今所有組織公開披露的規(guī)模最大的一次攻擊。檢測和緩解均完全自主完成。下圖展示了針對同一Cloudflare客戶但都被自主緩解的兩次單獨攻擊事件。
緩解了一次持續(xù)65秒、每秒3.8 Tbps的DDoS攻擊
緩解了一次持續(xù)60秒、每秒21.4億個數(shù)據(jù)包的DDoS攻擊
Cloudflare客戶受到妥善保護
使用Cloudflare HTTP反向代理服務(wù)(例如Cloudflare WAF和Cloudflare CDN)的Cloudflare客戶將會自動受到保護。
使用Spectrum和Magic Transit的Cloudflare客戶也會自動受到保護。Magic Transit客戶可以通過部署Magic Firewall規(guī)則,在數(shù)據(jù)包層執(zhí)行嚴(yán)格的正面和負(fù)面安全模型來進一步優(yōu)化受到的保護。
其他互聯(lián)網(wǎng)資產(chǎn)可能并不安全
這些攻擊的規(guī)模和頻率都是前所未有。由于其龐大的規(guī)模和每秒比特/數(shù)據(jù)包的速率,這些攻擊能夠摧毀未受保護的互聯(lián)網(wǎng)資產(chǎn)以及受本地設(shè)備或云服務(wù)提供商保護的互聯(lián)網(wǎng)資產(chǎn),這些提供商沒有足夠的網(wǎng)絡(luò)容量或全球覆蓋范圍來處理此等規(guī)模的資產(chǎn)與合法流量,同時還要確保不影響其網(wǎng)絡(luò)性能。
然而,Cloudflare確實擁有必需的網(wǎng)絡(luò)容量、全球覆蓋范圍以及智能系統(tǒng),用于吸收并自動緩解這些可怕的攻擊。
在本篇博客文章中,我們將回顧這次攻擊活動及其造成如此嚴(yán)重影響的原因。我們會剖析第3/4層DDoS攻擊,描述攻擊目標(biāo)與攻擊生成方式;也會詳細(xì)介紹Cloudflare系統(tǒng)如何能夠自主檢測和緩解這些可怕的攻擊,同時不影響客戶的性能。我們會描述Cloudflare防御解決方案的關(guān)鍵功能,從Cloudflare系統(tǒng)如何生成實時(動態(tài))特征來匹配攻擊流量開始,一直到如何利用內(nèi)核功能極速丟棄數(shù)據(jù)包。
攻擊活動分析
我們觀察到,此次攻擊活動的目標(biāo)用戶是金融服務(wù)、互聯(lián)網(wǎng)以及電信等行業(yè)的多個客戶。目標(biāo)范圍是帶寬飽和,以及資源耗盡的內(nèi)聯(lián)應(yīng)用和設(shè)備。
這些攻擊主要利用源自全球各地固定端口上的UDP,其中大部分來自越南、俄羅斯、巴西、西班牙和美國。
高包速率攻擊似乎源自多種類型的遭入侵設(shè)備,包括MikroTik設(shè)備、DVR和Web服務(wù)器,這些設(shè)備經(jīng)過精心編排協(xié)同工作,用異常大規(guī)模的流量淹沒目標(biāo)。這些高比特率攻擊似乎源自大量遭入侵的華碩家用路由器,這些路由器可能利用了Censys最近發(fā)現(xiàn)的CVE 9.8關(guān)鍵漏洞。
DDoS攻擊剖析
有必要先來了解一下DDoS攻擊的基本知識,然后再討論Cloudflare如何自動檢測并緩解有史以來最大規(guī)模的DDoS攻擊。
DDoS攻擊簡圖
分布式拒絕服務(wù)(DDoS)攻擊的目標(biāo)是拒絕合法用戶訪問服務(wù)。通常是通過耗盡提供服務(wù)所需的資源來實現(xiàn)目的。在最近的第3/4層DDoS攻擊背景下,這種資源是指CPU周期和網(wǎng)絡(luò)帶寬。
耗盡CPU周期
處理數(shù)據(jù)包會消耗CPU周期。對于常規(guī)(非攻擊)流量,服務(wù)接收到的合法數(shù)據(jù)包會引發(fā)該服務(wù)執(zhí)行某些操作,并且不同的操作需要不同數(shù)量的CPU處理。但在將數(shù)據(jù)包傳送到服務(wù)之前,需要對每個數(shù)據(jù)包執(zhí)行操作:需要解析和處理第3層數(shù)據(jù)包標(biāo)頭并將數(shù)據(jù)包傳送到正確的計算機和接口;需要處理第4層數(shù)據(jù)包標(biāo)頭并將其路由到正確的套接字(如果有)。可能還有多個其他處理步驟來檢查每個數(shù)據(jù)包。因此,如果攻擊者以足夠高的包速率發(fā)送數(shù)據(jù)包,則有可能會導(dǎo)致可用的CPU資源達(dá)到飽和狀態(tài),從而拒絕向合法用戶提供服務(wù)。
為了抵御高包速率攻擊,您必須要能夠使用盡可能少的CPU周期來檢查并丟棄不良數(shù)據(jù)包,從而留下足夠的CPU來處理優(yōu)良數(shù)據(jù)包。您可以獲取其他更多或更快的CPU來執(zhí)行處理,但這可能是一個非常耗時的流程,而且成本高昂。
耗盡網(wǎng)絡(luò)帶寬
網(wǎng)絡(luò)帶寬是指每次可以傳送到服務(wù)器的數(shù)據(jù)總量。可以把帶寬看作是輸水管。如果攻擊者能夠?qū)⒈绕淠芰Ψ秶鷥?nèi)更多的垃圾數(shù)據(jù)推送到管道中,則不良與優(yōu)良數(shù)據(jù)均在上游(即管道的入口處)遭到丟棄,因此,DDoS攻擊取得成功。
抵御可能會導(dǎo)致網(wǎng)絡(luò)帶寬飽和的攻擊可能并非易事,因為如果您處于已飽和管道的下游,則能做的事情非常少。實際上您只有幾個選擇:獲得一個更大的管道,找到一種潛在方法將優(yōu)質(zhì)流量轉(zhuǎn)移到某個未飽和的新管道中,或者但愿您可以要求管道的上游端停止向管道中發(fā)送部分或全部數(shù)據(jù)。
生成DDoS攻擊
如果從攻擊者的角度來考慮這個問題,您就會意識到存在類似的限制。正如接收數(shù)據(jù)包需要消耗CPU周期一樣,創(chuàng)建數(shù)據(jù)包也需要消耗CPU周期。例如,如果發(fā)送和接收數(shù)據(jù)包的成本相同,則攻擊者需要CPU能力來生成攻擊,而我們需要相同的CPU能力來抵御攻擊。但是,在大多數(shù)情況下,事實并非如此,也就是存在成本不對稱,因為攻擊者能夠使用比接收這些數(shù)據(jù)包所需更少的CPU周期來生成數(shù)據(jù)包。不過,值得注意的是,生成攻擊并不是免費的,可能需要大量的CPU算力。
對于攻擊者來說,讓網(wǎng)絡(luò)帶寬達(dá)到飽和狀態(tài)甚至更加困難。因為攻擊者需要能夠輸出比目標(biāo)服務(wù)分配的更多帶寬。它們實際上需要能夠超出接收服務(wù)的容量。這真的難以實現(xiàn),所以導(dǎo)致實施網(wǎng)絡(luò)帶寬攻擊的最常見方式是使用反射/放大攻擊,例如DNS放大攻擊。這些攻擊讓攻擊者能夠?qū)⑿?shù)據(jù)包發(fā)送給中間服務(wù),然后中間服務(wù)發(fā)送大數(shù)據(jù)包給受害者。
在這兩種情況下,攻擊者都需要獲取或獲得許多設(shè)備的訪問權(quán)限,才能發(fā)起攻擊。可以通過多種不同方式獲得這些設(shè)備。它們可能是來自云服務(wù)提供商或托管服務(wù)的服務(wù)器類計算機,也可能是遭入侵的設(shè)備,例如感染了攻擊者惡意軟件的DVR、路由器以及網(wǎng)絡(luò)攝像頭。這些計算機共同構(gòu)成了僵尸網(wǎng)絡(luò)。
Cloudflare如何抵御大型攻擊
鑒于我們已經(jīng)了解了DDoS攻擊的基本原理,現(xiàn)在可以進一步闡述一下Cloudflare抵御此類攻擊的方法。
利用全球Anycast擴大攻擊面
第一個因素是,Cloudflare網(wǎng)絡(luò)建立在Anycast的基礎(chǔ)之上。簡而言之,Anycast可實現(xiàn)由世界各地的多臺計算機來廣播單個IP地址。發(fā)送到該IP地址的數(shù)據(jù)包將由距離最近的計算機處理。這意味著,如果攻擊者使用分布式僵尸網(wǎng)絡(luò)發(fā)起攻擊,則整個Cloudflare網(wǎng)絡(luò)會以分布式方式接收攻擊內(nèi)容。例如,德克薩斯州達(dá)拉斯的一臺受感染DVR會將數(shù)據(jù)包發(fā)送到位于達(dá)拉斯的Cloudflare服務(wù)器;倫敦的一個受感染網(wǎng)絡(luò)攝像頭會將數(shù)據(jù)包發(fā)送到位于倫敦的Cloudflare服務(wù)器。
Anycast與Unicast網(wǎng)絡(luò)
此外,Anycast網(wǎng)絡(luò)讓Cloudflare能夠?qū)⒂嬎阗Y源和帶寬資源分配到最需要這些資源、距離最近的地區(qū)。人口密集的地區(qū)將會生成大量的合法流量,位于這些地區(qū)的數(shù)據(jù)中心將擁有更多帶寬和CPU資源來滿足這些需求。而人口稀少的地區(qū)自然會生成較少的合法流量,因此,可以適當(dāng)?shù)卣{(diào)整這些地區(qū)的Cloudflare數(shù)據(jù)中心的規(guī)模。由于攻擊流量主要來自遭入侵的設(shè)備,這些設(shè)備往往會以與正常流量相匹配的方式分布,從而將攻擊流量按比例發(fā)送到可以處理它們的數(shù)據(jù)中心。同樣地,在數(shù)據(jù)中心內(nèi),流量會分布到多臺計算機。
此外,對于高帶寬攻擊,Cloudflare網(wǎng)絡(luò)還有另一個優(yōu)勢。Cloudflare網(wǎng)絡(luò)中的大部分流量并不以對稱方式消耗帶寬。例如,某HTTP請求從位于Cloudflare幕后的站點獲取網(wǎng)頁,雖然它是一個相對較小的傳入數(shù)據(jù)包,但會產(chǎn)生較大的傳出流量返回到客戶端。這意味著,Cloudflare網(wǎng)絡(luò)傳出的合法流量往往遠(yuǎn)多于其接收的流量。然而,這種網(wǎng)絡(luò)鏈路和分配的帶寬是對稱的,也就是說,有豐富的傳入帶寬可用于接收容量耗盡攻擊流量。
生成實時特征
當(dāng)流量到達(dá)數(shù)據(jù)中心內(nèi)的單獨服務(wù)器時,攻擊的帶寬已經(jīng)得到了足夠的分布,以至于沒有上游鏈路處于飽和狀態(tài)。這并不意味著攻擊已完全停止,因為我們尚未丟棄不良數(shù)據(jù)包。為此,我們需要對流量進行采樣,評估攻擊特征,然后創(chuàng)建規(guī)則來阻止不良數(shù)據(jù)包。
采樣流量并丟棄不良數(shù)據(jù)包是l4drop組件的職責(zé),此組件使用XDP(eXpress Data Path)并利用擴展版伯克利數(shù)據(jù)包過濾器,也稱之為eBPF(extended BPF)。這讓我們能夠在內(nèi)核空間執(zhí)行自定義代碼,并直接在網(wǎng)絡(luò)接口卡(NIC)級別來處理(丟棄、轉(zhuǎn)發(fā)或修改)每個數(shù)據(jù)包。此組件有助于系統(tǒng)有效地丟棄數(shù)據(jù)包,而不會消耗計算機上過多的CPU資源。
Cloudflare DDoS防護系統(tǒng)概述
我們使用XDP采樣數(shù)據(jù)包,以尋找表明攻擊的可疑特征。樣本包括源IP、源端口、目的IP、目的端口、協(xié)議、TCP標(biāo)志、序列號、選項、包速率等字段。由我們的秘密武器denial of service daemon(dosd).Dosd執(zhí)行此分析。它有許多過濾器,可以根據(jù)我們精選的啟發(fā)式檢查方法來指示何時啟動緩解措施。對我們的客戶來說,這些過濾器按攻擊手段進行邏輯分組并作為DDoS托管規(guī)則公開。Cloudflare客戶可以根據(jù)需要,在一定程度上自定義行為。
在收到取自XDP的樣本后,dosd會生成可疑流量模式特征的多種排列。然后,dosd將使用數(shù)據(jù)流式傳輸算法確定最佳特征,以緩解攻擊。一旦符合攻擊特征,dosd會將緩解規(guī)則作為eBPF程序內(nèi)聯(lián)推送,以精準(zhǔn)地丟棄攻擊流量。
Dosd在服務(wù)器級別、數(shù)據(jù)中心級別和全球網(wǎng)絡(luò)級別進行攻擊檢測和緩解,而且都是軟件定義的。這使我們的網(wǎng)絡(luò)極具韌性,幾乎能即時緩解各種攻擊。不存在路徑外的“清洗中心”或“清洗設(shè)備”。相反,每臺服務(wù)器都運行Cloudflare產(chǎn)品套件全棧,包括DDoS檢測和緩解組件。這一切均自動完成。每臺服務(wù)器還會在數(shù)據(jù)中心內(nèi)的服務(wù)器之間以及數(shù)據(jù)中心之間傳播(多播)緩解攻擊指令。這將保證無論是本地攻擊還是全球分布攻擊,dosd都已經(jīng)內(nèi)聯(lián)安裝了緩解規(guī)則,以確保緩解措施的穩(wěn)健性。
強大的防御措施,抵御猛烈的攻擊
我們軟件定義的自動化DDoS檢測和緩解系統(tǒng)在Cloudflare整個網(wǎng)絡(luò)上運行。在本篇博客文章中,我們主要關(guān)注Cloudflare動態(tài)特征識別功能,但其實我們的防御系統(tǒng)資源要豐富得多。Advanced TCP Protection系統(tǒng)和Advanced DNS Protection系統(tǒng)與動態(tài)指紋識別一起發(fā)揮作用,識別復(fù)雜且基于TCP的高度隨機化DDoS攻擊,還利用統(tǒng)計分析來阻止基于DNS的復(fù)雜DDoS攻擊。此外,我們的防御解決方案集成了實時威脅情報、流量分析及機器學(xué)習(xí)分類,作為自適應(yīng)DDoS防護的一部分,用于緩解流量異常。
這些系統(tǒng)與種類繁多的Cloudflare安全性產(chǎn)品組合均以世界上數(shù)一數(shù)二的全球網(wǎng)絡(luò)為基礎(chǔ)而構(gòu)建,確保Cloudflare客戶免受全球規(guī)模最大的攻擊。