張錦輝,張文秀
(1.華為技術(shù)有限公司 南京研究所,江蘇 南京 210012;2.南京審計大學 政府審計學院,江蘇 南京 211815)
分布式拒絕服務(wù)(Distributed Denial of Service,DDoS)攻擊指將若干個傀儡計算機聯(lián)合起來作為攻擊平臺,對一個或多個目標發(fā)動攻擊,從而成倍地提高拒絕服務(wù)攻擊的威力。
被DDoS攻擊時,攻擊者向網(wǎng)絡(luò)中充斥大量的無用的數(shù)據(jù)包,造成網(wǎng)絡(luò)擁塞,使受害主機無法正常和外界通信;或利用受害主機提供的服務(wù)、傳輸協(xié)議上的缺陷,反復(fù)高速地發(fā)出特定的服務(wù)請求,使受害主機無法及時處理所有合法請求;嚴重時更可能會造成系統(tǒng)死機。
近年來DDoS攻擊流量越來越大。2013年針對Spamhoush組織的攻擊流量超過300 Gb/s,巨大的攻擊流量造成歐洲Tier-1運營商網(wǎng)絡(luò)擁塞;2014年阿里巴巴公司受到的攻擊超過400 Gb/s;2015年超過100 Gb/s的攻擊多達25次;2018年3月份針對某游戲的攻擊峰值流量達到了1.7 Tb/s。
當大量的DDoS攻擊流從傀儡主機發(fā)往受害主機時,防御需要在攻擊流到達受害主機之前將其攔截。
當前主流的DDoS攻擊防護方法如圖1所示,在互聯(lián)網(wǎng)數(shù)據(jù)中心(Internet Data Center,IDC)核心路由器(圖1中路由器1和路由器2)上旁路部署異常流量檢測與控制系統(tǒng)(Abnormal Traffic Inspection and Control,ATIC)管理中心、攻擊檢測設(shè)備、流量清洗設(shè)備。通過分光或鏡像將防護對象的流量復(fù)制到攻擊檢測設(shè)備,發(fā)現(xiàn)流量中有異常后,上報被攻擊IP到ATIC管理中心,管理中心向流量清洗設(shè)備下發(fā)引流策略。通過邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol,BGP)路由通告,清洗中心將被攻擊IP的流量重定向至自身,并通過多層過濾防御技術(shù),丟棄攻擊流量,將合法流量回注到原鏈路中。這種方式可以跟蹤報文檢測發(fā)往防護對象的流量,檢測精度高,并且可以在攻擊發(fā)生數(shù)秒后發(fā)現(xiàn)攻擊流量,快速做出反應(yīng)。缺點是ATIC設(shè)備獨享,成本高,利用率低,檢測和清洗設(shè)備需要隨現(xiàn)網(wǎng)物理鏈路擴容。并且,清洗設(shè)備可能成為瓶頸,對判斷攻擊的算法要求比較高。
圖1 主流的DDOS攻擊防御方法
為擴展流量清洗能力,隨著云計算技術(shù)的成熟,云清洗方式出現(xiàn),如圖2所示。當本地防護系統(tǒng)無法應(yīng)對DDoS攻擊時,可以請求云清洗。云清洗中心收到請求后,發(fā)布引流路由,將目的地是受攻擊地址的流量引流到云清洗中心進行清洗。清洗后,通過通用路由封裝協(xié)議(Generic Routing Encapsulation,GRE)隧道把清洗后的流量回注到防護對象網(wǎng)絡(luò)中。云清洗可以協(xié)調(diào)使用云中心的清洗能力,但因為部署分布在多地,需要對清洗流量進行引流,清洗后回流,對帶寬的需求很大。
另外,現(xiàn)有防御措施在帶寬、性能飽和前效果好,但是飽和后,性能、準確性急劇下降,導(dǎo)致系統(tǒng)能力恢復(fù)后,正常用戶長時間得不到服務(wù)。
圖2 云清洗DDOS攻擊防御方法
除了集中部署DDoS防御能力和云清洗能力外,文獻[1]研究了DDoS防御的部署位置。從圖3中可以看出,DDoS攻擊流呈漏斗狀:攻擊流產(chǎn)生于一個分布式的區(qū)域,類似漏斗的頂部;攻擊流匯集于受害者端,類似漏斗狹窄的底部。因此受害者網(wǎng)絡(luò)能觀察到所有的攻擊報文,檢測到DDoS攻擊相對容易。而在攻擊源網(wǎng)絡(luò),除非該網(wǎng)絡(luò)有大量攻擊源,否則很難檢測到DDoS攻擊。與攻擊檢測相反,越靠近受害者,越多的合法報文將被誤判丟棄,攻擊過濾的有效性越差。在一場典型的大規(guī)模DDoS攻擊中,受害者網(wǎng)絡(luò)及其互聯(lián)網(wǎng)服務(wù)提供商(Internet Service Provider,ISP)網(wǎng)絡(luò)往往被迫將所有發(fā)往受害者的報文丟棄,因此合法報文存活率(Normal Packet Survival Ratio,NPSR)值接近于零。
圖3 可能的DDoS防御部署點
對DDoS防御的效果主要取決于以下兩個參數(shù)[2]:
(1)誤判率(False Positive Ratio,FPR):被誤判成攻擊報文的合法報文的數(shù)目與所有合法報文數(shù)目的比值;
(2)漏判率(False Negative Ratio,FNR):被誤判成合法報文的攻擊報文的數(shù)目與所有攻擊報文數(shù)目的比值。
一個有效的DDoS攻擊檢測機制必須使這兩個值盡可能地小。
DDoS攻擊的特點是分布式攻擊,攻擊的組織者會盡可能地調(diào)集僵尸網(wǎng)絡(luò)資源進行攻擊,因而理論上攻擊力無限大。而流量清洗等防御能力是有成本的,必須依據(jù)受保護目標的重要性、可以投入的資源來部署清洗能力。往往導(dǎo)致DDoS防御能力要么不足,要么成本過高,無攻擊時資源過度浪費。
針對上述問題,本文提出了一種網(wǎng)絡(luò)設(shè)備參與的DDoS防御系統(tǒng)。利用ISP網(wǎng)絡(luò)中網(wǎng)絡(luò)設(shè)備阻斷特定元組流量的能力,分布式地對DDoS攻擊流量進行攔截,從而減輕對ATIC攻擊檢測、流量清洗能力的要求。
系統(tǒng)由IDC DDoS防護和ISP DDoS防護兩部分構(gòu)成。IDC的DDoS防護由ATIC管理中心、攻擊檢測、攻擊緩解、攻擊溯源構(gòu)成。ISP網(wǎng)絡(luò)中的DDoS防護由ATIC管理中心、攻擊檢測、網(wǎng)絡(luò)控制器構(gòu)成,如圖4所示。
圖4 網(wǎng)絡(luò)設(shè)備參與的DDoS防御系統(tǒng)
IDC的DDoS防護一直在檢測是否有針對防護對象的攻擊。當DDoS攻擊開始時,攻擊流量逐漸增加,攻擊首先會被IDC中攻擊檢測設(shè)備發(fā)現(xiàn)。然后,攻擊溯源設(shè)備可以通過與IDC連接的ISP網(wǎng)絡(luò)控制器合作,根據(jù)攻擊源IP地址或攻擊流量來向,確定攻擊報文來自哪個ISP。由攻擊緩解設(shè)備通知該ISP中的ATIC,對這樣的攻擊報文進行攔截。假設(shè)圖4中攻擊傀儡機1具有公網(wǎng)IP1、媒體訪問控制地址(Media Access Control Address,MAC),被攻擊對象的IP為IP0,提供HTTP服務(wù)。在傀儡機1發(fā)起攻擊后,IDC攻擊檢測設(shè)備發(fā)現(xiàn)(源IP地址IP1,目的IP地址IP0,協(xié)議HTTP)的攻擊三元組x。則通知ISP4的ATIC對元組x(IP1,IP0,HTTP)進行攻擊檢測和攔截。
ISP中的ATIC管理中心控制攻擊檢測設(shè)備檢測對防護對象的攻擊。有了防護對象ATIC檢測到的元組x的信息,ISP網(wǎng)絡(luò)攻擊檢測設(shè)備就可以很容易地從海量流量中找到攻擊流量,并驗證是否為攻擊流量。確認對防護對象的攻擊后,根據(jù)攻擊源、攻擊對象、元組x等,生成攻擊的元組y(IP1,IP0,HTTP)。(實際工作時,元組內(nèi)容也可以是(設(shè)備號/物理端口號,防護對象鏈接的物理端口號,協(xié)議號)、(MAC,防護對象IP地址,協(xié)議號)等。)管理中心進而根據(jù)攻擊元組,以及被防護對象的負載、攻擊特征等,對該攻擊元組y計算出一個合適的Block(指網(wǎng)絡(luò)設(shè)備對符合指定特征的報文不進行轉(zhuǎn)發(fā))時長T。通知網(wǎng)絡(luò)控制器,從當前時刻起,T秒內(nèi)該元組的網(wǎng)絡(luò)報文不再轉(zhuǎn)發(fā)。
網(wǎng)絡(luò)控制器根據(jù)ATIC管理中心發(fā)來的消息,在對應(yīng)的網(wǎng)元上通過“訪問控制列表”(Access Control List,ACL)等手段,將符合該元組特征的報文在T時長內(nèi)丟棄。通知防護對象ATIC管理中心,元組y被過濾。網(wǎng)元/控制器可根據(jù)需要匯總該元組報文被丟棄的信息,如丟棄時間、報文數(shù)量、報文大小,發(fā)送給ATIC管理中心。
至此,該攻擊源的攻擊被ISP過濾,將不會對防護對象造成影響。
T時長過后Block自動解除,攻擊檢測設(shè)備根據(jù)匯總的元組Block數(shù)據(jù)、后續(xù)到達的報文,判斷攻擊是否停止,(根據(jù)后續(xù)收到的報文以及被過濾的報文數(shù)、大小、分布與攻擊特征的匹配可以判斷攻擊是否仍存在),如果攻擊源已經(jīng)不再向防護對象進行攻擊,或正常訪問,則不再Block該元組,防御成功結(jié)束。如果仍在攻擊,則由管理中心再次計算該元組的過濾時長。重復(fù)以上過程,當該攻擊源不再進行攻擊,T時長過后,將不再Block該元組,恢復(fù)正常。
IDCATIC收集各個ISP報告的過濾信息、頻率,自身發(fā)現(xiàn)的攻擊數(shù)量、頻率,判斷攻擊發(fā)展趨勢,進一步采取后續(xù)措施。比如:當攻擊下降到一定程度,則不需要ISP配合,完全由IDC ATIC進行防護。
對所有的攻擊源都執(zhí)行以上過程,攻擊可以被發(fā)起域的ISP過濾,減少對防護對象的影響。
同時,考慮到不管何種攻擊檢測方法,總會有誤判,導(dǎo)致正常用戶流量被清洗,而得不到服務(wù),Block時間T應(yīng)根據(jù)具體情況進行設(shè)計,保證對攻擊盡可能長時間地Block,對誤判的攻擊盡可能減少Block時間。
經(jīng)過以上過程,對防護對象的攻擊流量會被攻擊源的ISP過濾,而不是集中到IDC進行清洗,沒有資源消耗大的集中處理,不會形成處理瓶頸。IDC的ATIC可以按照較低處理能力部署,以降低成本。
ISP的防護能力建設(shè)可以以自身的網(wǎng)絡(luò)規(guī)模、用戶規(guī)模為基數(shù)進行設(shè)計。因為,源自該網(wǎng)絡(luò)的攻擊能力,不會超過該網(wǎng)絡(luò)的容量,ISP的防護能力可以利用網(wǎng)絡(luò)設(shè)備已經(jīng)具備的控制流量通斷的管控能力,并且和ISP網(wǎng)絡(luò)容量掛鉤,不會造成資源浪費。
而被誤判為攻擊的合法請求,也可以在T時間后得到訪問,而不至于一直被阻塞。
首先,通過仿真實驗了解阻塞時間T的變化對攻擊緩解和合法訪問的影響。
仿真模型:
模擬DDoS攻擊中一個網(wǎng)絡(luò)區(qū)域?qū)Ψ雷o對象的攻擊:該區(qū)域有傀儡機1 000臺,每個傀儡機每秒發(fā)起1 000次攻擊;有正常用戶機1 000臺,每個用戶機每秒發(fā)起10次合法請求。
(1)仿真實驗1:T-FNR-攻擊成功次數(shù)
FNR分別為1%、6%、10%、20%,T從510 ms至1 500 ms,對各組合進行3 600 000次攻擊。結(jié)果如圖5所示。
圖5 T-FNR-攻擊成功次數(shù)
圖5中,橫軸表示T從510 ms變化為1 500 ms,縱軸表示3 600 000次攻擊中攻擊成功的次數(shù)。從圖中可見,隨著Block時間的增加,攻擊成功次數(shù)逐漸下降;FNR越低,同樣Block時長下,攻擊成功次數(shù)越少;510 ms時,F(xiàn)NR 10%就可以取得99.78%的攔截成功率;相對FNR算法自身90%的檢測率提高了9.78%;1 120 ms時,F(xiàn)NR 10%就可以取得99.90%的攔截成功率;1 100 ms以上時,F(xiàn)NR 1%、6%、10%的差別不是很大。這說明發(fā)現(xiàn)攻擊后,對攻擊的元組進行短暫的Block,就可以過濾大部分的攻擊報文。
(2)仿真實驗2:FNR 10%情況下T-攻擊成功次數(shù)
FNR為10%,T從450 ms至10 000 ms,對每個組合攻擊3 600 000次。結(jié)果如圖6所示。
從圖6可見,從450~1 000 ms,隨著Block時長的增加,攻擊成功次數(shù)快速下降,1 000 ms以后,隨著Block時長的增加,攻擊成功次數(shù)下降速度變緩。
圖6 T-攻擊成功次
(3)仿真實驗3:FNR 1%情況下T-合法請求失敗次數(shù)
FPR為1%,T從10 ms至10 000 ms,對每個組合合法請求36 000次。結(jié)果如圖7所示。
圖7 T-合法請求失敗次數(shù)
圖7中,T為1 000 ms時,請求被Block的次數(shù)已經(jīng)達3 320次,占比9.22%;500 ms時,被Block 1 620次,占比4.5%。Block行為放大了誤判率。這是因為,一旦合法請求被誤判為攻擊后,則會在后續(xù)的T時間內(nèi)的請求也被Block,從而造成請求失敗。合理的T設(shè)計應(yīng)該對誤判影響盡可能小。
(4)仿真實驗4:T500 ms情況下FPR-合法請求失敗次數(shù)
T固定500 ms,F(xiàn)PR以0.01%為粒度從0.01%到1.00%,對各種組合合法請求36 000次。
圖8 FPR-合法請求失敗次數(shù)
從圖8可以看出,在T固定500 ms的情況下,合法請求失敗的次數(shù)基本與FPR成線性關(guān)系。
仿真總結(jié):
(1)短時間的對攻擊流量進行Block即可取得較好的效果;
(2)對流量進行1 000 ms以上的Block并不會帶來明顯的改進,但會顯著增加合法請求被誤判為攻擊流量的概率;
(3)較高漏判率并不會顯著影響對攻擊流量的檢測效果;
(4)誤判率會明顯影響合法請求,低誤判率下效果較好。
因此,阻塞時間T的設(shè)計應(yīng)該考慮產(chǎn)生一個數(shù)百毫秒的阻塞時延。同時,考慮防護對象在被攻擊期間負載率的變化,在負載率高時應(yīng)增加對攻擊流量的阻塞(負載率高時,防護對象難以提供請求服務(wù),此時合法服務(wù)請求Block比例提高不會帶來更壞的結(jié)果)。
所以,阻塞時間T計算公式設(shè)計為:
T=C+Ci*(當前負載率-正常負載率)+隨機數(shù)
其中,C為固定常數(shù),用于指定檢測到一次攻擊后,對攻擊流量Block的最小時長,例如300 ms。Ci為對發(fā)現(xiàn)的i攻擊元組的因子系數(shù),用于對攻擊者區(qū)分進行Block時長的調(diào)節(jié)。比如,對于已知的僵尸網(wǎng)絡(luò),Ci的值可以設(shè)置得較大,以增大禁止服務(wù)時長,減小其攻擊造成的影響;對于已知的需保證服務(wù)的用戶,則Ci的值設(shè)置較小值,縮短禁止服務(wù)時長,減小對訪問者的影響。Ci也可以用于表示對當前攻擊判斷準確度評價。當判斷為攻擊的準確度較高時,Ci設(shè)置較大值;當有可能誤判為攻擊時,則Ci取較小值。
當前負載率可以是被防護對象當前的計算資源負載率,也可以是防護對象當前的網(wǎng)絡(luò)帶寬負載率等。
正常負載率是被防護對象在正常工作時的計算資源負載率或網(wǎng)絡(luò)帶寬負載率等。當前負載率-正常負載率反映了防護對象受攻擊影響的程度。攻擊越強,Block的時間會越長,進而減小攻擊造成的影響。
隨機數(shù)用于調(diào)整Block時間,避免攻擊者掌握Block時間規(guī)律。
模擬DDoS攻擊中一個網(wǎng)絡(luò)區(qū)域?qū)Ψ雷o對象的攻擊:該區(qū)域有傀儡機1 000臺,每個傀儡機每秒發(fā)起1 000 次攻擊;有正常用戶機1 000臺,每個用戶機每秒發(fā)起10次合法請求。取FNR為10%,F(xiàn)PR 1%,C取200 ms,對于合法報文Ci取25 ms,對于攻擊報文Ci取100 ms。假設(shè)防護對象的正常服務(wù)能力為2 000個用戶(即每秒鐘處理請求20 000次),初始負載率0.5,每秒統(tǒng)計一次負載率。分別采用現(xiàn)有檢測-清洗方法和本文方法進行1小時的持續(xù)攻擊防御仿真。仿真結(jié)果見表1。
表1 檢測-清洗方法和本文方法對比
通過統(tǒng)計仿真時每秒鐘防護對象收到的合法請求+攻擊請求總次數(shù)估算負載。仿真過程中防護對象平均負載率51.77%,最大負載率52.31%。負載率上升很小。
從仿真結(jié)果可見,本方法通過利用網(wǎng)絡(luò)設(shè)備阻斷特定元組流量的能力,不僅顯著減小了到達防護對象的攻擊流量,而且利用了分布在Internet中的網(wǎng)絡(luò)設(shè)備的能力,不需要集中部署功能強大的攻擊檢測和清洗設(shè)備,可以防御大規(guī)模的DDoS攻擊。而且,各個IDC、ISP僅需要參考自身的網(wǎng)絡(luò)容量來設(shè)計DDoS防御能力,不會存在受攻擊時防御不足,無攻擊時資源浪費問題,且對合法流量影響有限。
本文通過嘗試將網(wǎng)絡(luò)設(shè)備阻斷特定元組流量的能力應(yīng)用到DDoS防御中,解決了DDoS防御在被攻擊時防御能力不足,無攻擊時能力浪費問題。網(wǎng)絡(luò)設(shè)備參與DDoS防御有效地將攻擊流量分而治之,避免了集中處理攻擊流量的瓶頸問題。本方法在顯著提升對攻擊流量的防御效果同時,對合法流量的NPSR略有降低。當前DDoS檢測算法追求的是FPR、FNR都低,本方法更適合于FPR更低的檢測算法,F(xiàn)NR升高對本方法的攻擊防御效果影響很小。希望本文的嘗試對于改進DDoS的研究發(fā)展能夠提供一些幫助。