童永娟,顧瑞春,馬玲瓏
(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭 014010)
軟件定義網(wǎng)絡(luò)(Software Defined Network, SDN)的核心概念是將數(shù)據(jù)平面和控制平面分離開,通過OpenFlow協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)流量的靈活控制,從而為核心網(wǎng)絡(luò)及應(yīng)用的創(chuàng)新提供良好平臺[1].
當(dāng)網(wǎng)絡(luò)發(fā)生DDoS攻擊時,交換機(jī)沒有處理這些請求的能力[2],會向控制器詢問指令.控制器將忙于應(yīng)對這些DDoS請求,從而導(dǎo)致SDN網(wǎng)絡(luò)性能下降甚至癱瘓.因此,減少控制器的工作量以防御DDoS攻擊是一個巨大挑戰(zhàn)[3].SDN的靈活機(jī)制使得網(wǎng)絡(luò)中對數(shù)據(jù)平面攻擊的防御變得非常復(fù)雜,且目前SDN數(shù)據(jù)平面還沒有提供比較有效的轉(zhuǎn)發(fā)驗(yàn)證機(jī)制[4],所以直接在交換機(jī)中應(yīng)用和部署異常攻擊者防御方案存在較大困難.因此,在SDN數(shù)據(jù)面中研究異常流量攻擊檢測具有重要意義和價值.
鑒于以上動機(jī),文章的主要研究貢獻(xiàn)包含3個方面.首先,運(yùn)用信息熵檢測方法在SDN可編程數(shù)據(jù)面實(shí)現(xiàn)DDoS攻擊檢測原型;其次,提出了一種基于信息熵的DDoS攻擊檢測優(yōu)化算法;最終,通過實(shí)驗(yàn)評估證明了提出的安全檢測機(jī)制可以在數(shù)據(jù)面中實(shí)現(xiàn)并獲得性能優(yōu)勢.
文章調(diào)研了課題的研究背景及意義,分析了國內(nèi)外研究現(xiàn)狀及基本方法,在此基礎(chǔ)上,提出了一套基于SDN可編程數(shù)據(jù)面的DDoS攻擊檢測方案,并進(jìn)行了仿真和實(shí)現(xiàn)[5].
行業(yè)間的惡意競爭,社會上的敲詐勒索是DDoS攻擊的主要動機(jī).如圖1所示,根據(jù)2020年3月12日,華為舉行的《2019年全球DDoS攻擊現(xiàn)狀與趨勢分析報告》線上發(fā)布會[6]可知,行業(yè)間激烈競爭導(dǎo)致游戲、電商成為DDoS攻擊重災(zāi)區(qū).
圖1 攻擊目標(biāo)行業(yè)分布
分布式拒絕服務(wù)攻擊是一種針對目標(biāo)系統(tǒng)的惡意網(wǎng)絡(luò)攻擊行為,它通過向服務(wù)器提交大量請求,增加服務(wù)器負(fù)荷,造成網(wǎng)絡(luò)過載,從而干擾甚至阻斷正常的網(wǎng)絡(luò)通訊.
StateSec等[7]實(shí)現(xiàn)的是基于交換機(jī)內(nèi)處理DDoS攻擊的檢測機(jī)制,他將監(jiān)視功能卸載到數(shù)據(jù)平面,通過對源和目標(biāo)IP地址以及傳輸端口進(jìn)行熵分析來執(zhí)行檢測.由于該機(jī)制要求每個觀察到的IP端口4元組值都有1個流表?xiàng)l目,這意味著無限制的表利用率,造成高開銷.Sonata等[8]允許運(yùn)營商定義數(shù)據(jù)包流過濾查詢,以將額外的監(jiān)視邏輯轉(zhuǎn)移到數(shù)據(jù)平面.這些查詢在可編程轉(zhuǎn)發(fā)設(shè)備上執(zhí)行,以便將特定的流量發(fā)送到外部流處理器.但是這種機(jī)制與外部流處理器的大量通信可能會造成對攻擊檢測的延遲.
以上研究發(fā)現(xiàn),現(xiàn)有的在SDN控制面上構(gòu)建DDoS攻擊防御機(jī)制的方法,對提供高防御性能具有挑戰(zhàn)性.一方面,DDoS攻擊檢測方法需要比實(shí)際SDN具有更復(fù)雜的分析機(jī)制[9],導(dǎo)致控制器需要頻繁統(tǒng)計來自數(shù)據(jù)平面交換機(jī)數(shù)據(jù)包以進(jìn)行攻擊檢測和僵尸網(wǎng)絡(luò)定位,這會顯著增加南向開銷和檢測延遲[10].另一方面,在控制面進(jìn)行DDoS攻擊檢測尚未充分利用SDN的潛在優(yōu)勢.因?yàn)橛行У腄DoS攻擊檢測要求檢測機(jī)制能極其精準(zhǔn)地檢測并作出快速反應(yīng),現(xiàn)有的基于SDN的攻擊檢測方法有以下2個關(guān)鍵問題:(1)由于檢測和緩解攻擊都需要將包括惡意流量在內(nèi)的所有數(shù)據(jù)包從數(shù)據(jù)平面的交換機(jī)轉(zhuǎn)發(fā)到控制器,因此控制通道變得飽和,控制器進(jìn)程過載;(2)控制器強(qiáng)制控制數(shù)據(jù)流的邏輯,如果控制器處理每個數(shù)據(jù)包,那么它就會破壞原來的SDN機(jī)制.
在SDN架構(gòu)中,控制層對流和控制功能進(jìn)行攻擊分析,控制器負(fù)責(zé)利用其對整個網(wǎng)絡(luò)全局視圖,執(zhí)行細(xì)粒度攻擊檢測并制定高級防御策略,豐富計算和存儲資源.DDoS實(shí)時安全解決方案受到當(dāng)前大多數(shù)轉(zhuǎn)發(fā)設(shè)備商監(jiān)視功能的限制,其準(zhǔn)確性是以高開銷為代價[7],在這種情形下,基于可編程數(shù)據(jù)面的方法成為目前最優(yōu)方案,由于數(shù)據(jù)包是在數(shù)據(jù)平面上處理,因此應(yīng)啟用具有粗粒度處理功能的交換機(jī)以執(zhí)行檢測操作.所以本實(shí)驗(yàn)的主要檢測方案部署在數(shù)據(jù)平面內(nèi),由粗粒度的行為,流量監(jiān)控和細(xì)粒度的基于流量特征熵的算法以及報警機(jī)制組成.
P4(Programming Protocol-Independent Packet Processors)是一種聲明式編程語言,它主要通過編程來下達(dá)指令給數(shù)據(jù)轉(zhuǎn)發(fā)平面設(shè)備(如交換機(jī)、網(wǎng)卡、防火墻、過濾器等),告知其對數(shù)據(jù)流處理方式.
圖2展示了P4和已有的協(xié)議接口之間的關(guān)系.開發(fā)人員通過編譯P4程序,在可編程的數(shù)據(jù)平面中生成具體的配置,然后生成運(yùn)行時應(yīng)用編程接口從而幫助控制平面和數(shù)據(jù)平面之間的交互[11].
P4的完整工作流程[11]如下:用戶首先需要自定義數(shù)據(jù)幀的解析器和流控制程序,其次P4程序經(jīng)過編譯器編譯后輸出JSON格式的交換機(jī)配置文件和運(yùn)行時的API,再次配置的文件載入到交換機(jī)中后更新解析器和“匹配-動作表”,最后交換機(jī)操作系統(tǒng)按照流控制程序?qū)?shù)據(jù)流進(jìn)行查表操作.
圖2 P4和已有的協(xié)議接口之間的關(guān)系
開發(fā)人員首先利用P4定義數(shù)據(jù)包的處理流程,告訴交換機(jī)應(yīng)該如何處理數(shù)據(jù)包.然后利用編譯器在協(xié)議無關(guān)的交換機(jī)或者網(wǎng)卡上生成具體的配置,以此實(shí)現(xiàn)利用P4語言表達(dá)數(shù)據(jù)包的處理邏輯.
熵在信息論中是捕獲分散程度或分布集中程度的度量標(biāo)準(zhǔn),即代表隨機(jī)變量不確定程度的度量.不確定程度與概率分布有關(guān),概率分布越均勻,不確定程度越大[12].1個離散型隨機(jī)變量的熵定義為式(1):
(1)
式中:x為事件,X為所有可能的事件,f(x)為事件x發(fā)生的概率,即X={x1,x2,x3,…,xN}并且概率分布f={f1,f2,f3,…,fN}.
信息熵描述了隨機(jī)變量的不確定性,有助于檢測數(shù)據(jù)包字段分布模式的變化[13].測量到達(dá)網(wǎng)絡(luò)數(shù)據(jù)包中的隨機(jī)性能力使基于熵的方法成為DDoS檢測的理想方式[14].隨機(jī)性越大,熵越大,反之亦然.基于熵的方法依賴于網(wǎng)絡(luò)特征分布來檢測異常網(wǎng)絡(luò)活動.通過使用各種網(wǎng)絡(luò)頭部信息(例如源IP地址,目標(biāo)IP地址和端口號)的概率分布來計算熵[15].
基于以上概念,將通過P4語言在數(shù)據(jù)面實(shí)現(xiàn)基于信息熵的DDoS攻擊檢測原型,在SDN數(shù)據(jù)面中對網(wǎng)絡(luò)異常流量的檢測進(jìn)行探索.
DDoS攻擊檢測機(jī)制可以完全在數(shù)據(jù)面交換機(jī)中實(shí)現(xiàn),文章設(shè)計了1個數(shù)據(jù)包處理管道,用于估計源和目的主機(jī)地址的熵值,以及傳入的以該主機(jī)為目的的數(shù)據(jù)包的源IP地址的熵.熵值的測量既可用于表征流量,又可用于計算異常檢測閾值(作為可參考化的靈敏度系數(shù)的函數(shù)).考慮到轉(zhuǎn)發(fā)設(shè)備嚴(yán)格的時間和內(nèi)存限制,使用計數(shù)哈希表集來估算不同IP地址的頻率.基于合法流量和DDoS攻擊的數(shù)據(jù)集,評估了熵估計誤差,并根據(jù)準(zhǔn)確性和資源消耗評估了檢測性能.通過靈活的基于哈希表的熵估算方法,能夠在數(shù)據(jù)平面中執(zhí)行各種測量任務(wù).
采用pcap技術(shù)捕獲網(wǎng)絡(luò)報文,使用來自CAIDA Aninymized Internet Traces 2016的合法數(shù)據(jù)包跟蹤,CAIDA 2016高速Internet骨干鏈接記錄的數(shù)據(jù)集[16],為表示DDoS攻擊,從CAIDA DDoS Attack 2007數(shù)據(jù)集中獲取數(shù)據(jù)包,CAIDA 2007[17]包括嘗試消耗目標(biāo)服務(wù)器的計算資源并阻塞將該服務(wù)器連接到Internet的網(wǎng)絡(luò)連接,利用P4語言在SDN數(shù)據(jù)平面使用信息熵算法計算出熵值[12],并與閾值比較,通過此技術(shù)手段識別和過濾網(wǎng)絡(luò)中的異常流量,確保及時、準(zhǔn)確地進(jìn)行異常流量檢測,從而保證有效減小惡意攻擊對網(wǎng)絡(luò)及網(wǎng)絡(luò)運(yùn)營業(yè)務(wù)造成的影響.
現(xiàn)有的基于信息熵的檢測機(jī)制是在每一個觀察窗口內(nèi),計算分析每個數(shù)據(jù)包的源和目的IP地址的熵值,這種在高速鏈路上,熵遍歷大量數(shù)據(jù)會降低準(zhǔn)確性[18].通過完全在數(shù)據(jù)平面內(nèi)啟用DDoS攻擊檢測,提出的機(jī)制比以往的工作有了提升.以TCP SYN泛洪攻擊為例,只需計算出以該主機(jī)為目的地址的所有源IP地址的熵值,如果該數(shù)據(jù)包的源IP地址熵值很高,就可以判定該網(wǎng)絡(luò)被攻擊.而不需要計算出每個數(shù)據(jù)包的源和目的IP地址的熵值,然后再將其與該主機(jī)的源和目標(biāo)的熵值進(jìn)行比較,極大地節(jié)省了計算開銷.
文中使用哈希方式為源和目的地址的信息熵值做二維表格.利用哈希的方法,根據(jù)哈希值的范圍來確定所需的存儲空間.通過P4程序?qū)⒐7庋b到動作(Action)中,圖3是對目標(biāo)設(shè)備哈希操作單元的調(diào)用[18].由于此單元無法生成負(fù)數(shù),因此對HashAlgorithm.gi的結(jié)果通過簡單的變換實(shí)現(xiàn),即gi=2×gi-1.
使用哈希方法會產(chǎn)生很多沖突,多個種類的包哈希到同一個哈希桶內(nèi),那么這個桶的計數(shù)值就會偏大,為了減少誤差,設(shè)計了Count-Min Sketch,如圖4所示.設(shè)置了多個哈希函數(shù),開辟一個二維地址空間,包經(jīng)過不同哈希函數(shù)的處理,得到對應(yīng)的哈希值,而這個哈希值就是Sketch.這些哈希值可能產(chǎn)生沖突,多個種類的包可能有相同的哈希值,則根據(jù)哈希值來確定包出現(xiàn)次數(shù)則會偏大,所以設(shè)立多個哈希函數(shù),取最小哈希值,則最接近實(shí)際包數(shù)據(jù).
圖3 哈希操作的P4代碼
圖4 Count-Min Sketch的實(shí)現(xiàn)
Sketch是使用哈希來進(jìn)行估計網(wǎng)絡(luò)流的一種測量方法,可以減少存儲開銷.Count-Min Sketch取多個哈希函數(shù)的最小哈希值作為網(wǎng)絡(luò)流的估計,實(shí)現(xiàn)簡單,空間開銷較少.
DDoS攻擊的特征是大量主機(jī)(或欺騙源)將惡意流量匯聚到1個或幾個受害者,DDoS攻擊會帶來額外開銷并破壞正常網(wǎng)絡(luò)活動[12],因此在這些惡意活動的情況下,源IP地址和目標(biāo)IP地址分布往往會偏離合法模式.所以在此觀察基礎(chǔ)上,基于香農(nóng)熵的計算來設(shè)計DDoS檢測機(jī)制,通過計算SDN網(wǎng)絡(luò)中每個源和目的主機(jī)IP地址的熵來測量數(shù)據(jù)包[19].在這里,熵被用來檢測大多數(shù)攻擊,提供快速方便的方式來過濾可疑流量是基于熵過濾的主要優(yōu)點(diǎn)[20].假設(shè)X是總共m個數(shù)據(jù)包中的IP地址集,f0,f1,…,fN是每個不同地址的頻率,熵由式(2)給出:
(2)
基于以上思考,考慮預(yù)設(shè)值m為源IP地址的熵設(shè)置動態(tài)閾值[22].標(biāo)記這個m數(shù)據(jù)包中的任意一個為惡意的觀察結(jié)果,以便在接下來的工作中加以區(qū)分.為了實(shí)現(xiàn)這種方法,文章設(shè)計了數(shù)據(jù)包處理管道.如圖5所示,將計算輸入數(shù)據(jù)包流的連續(xù)分區(qū)IP地址的熵命名為觀察窗口,在每個觀察窗口的末尾,流量特征單元讀取計算出的熵值以生成合法的流量模型[15],然后,異常檢測單元將檢測閾值與計算出流量模型的函數(shù),當(dāng)它們被最后的熵估計超過時發(fā)出攻擊警報[20].
文中對基于信息熵的DDoS攻擊算法進(jìn)行了優(yōu)化,首先利用哈希的方式為源和目的地址的信息熵值做二維表格,然后計算出以該主機(jī)為目的地址的所有源IP地址的熵值,如果該數(shù)據(jù)包的源IP地址熵值很高,就可以判定該網(wǎng)絡(luò)被攻擊.
鑒于P4的新穎性以及實(shí)現(xiàn)P4的設(shè)備仍然稀缺[14],使用基于軟件的P4基礎(chǔ)設(shè)施來評估所提出的DDoS攻擊檢測機(jī)制.將CAIDA Anonymized Internet Traces 2016數(shù)據(jù)集中的合法流量數(shù)據(jù)包跟蹤用作合法數(shù)據(jù)包跟蹤,該數(shù)據(jù)集包含來自CAIDA的監(jiān)視器的匿名被動流量跟蹤,該跟蹤在高速Internet主干鏈路上進(jìn)行.此數(shù)據(jù)對于研究Internet流量的特征很有用.為了表示DDoS攻擊,實(shí)驗(yàn)過程中,從CAIDA DDoS Attack 2007數(shù)據(jù)集中獲取數(shù)據(jù)包,其中包括嘗試消耗目標(biāo)服務(wù)器的計算資源并阻塞將該服務(wù)器連接到Internet的網(wǎng)絡(luò)連接.雖然這些數(shù)據(jù)集都不是最近的,但是都是經(jīng)過精心構(gòu)建的,具有很高的實(shí)用價值.
提出的檢測機(jī)制允許網(wǎng)絡(luò)管理員使用靈敏度系數(shù)K來調(diào)整TPR(True Positive Rate)和FPR(False Positive Rate)之間的平衡,研究了不同靈敏度系數(shù)對檢測機(jī)制準(zhǔn)確率的影響.其中TPR如式(3)所示,表示在實(shí)際為陽性的樣本中,被正確地判斷為陽性之比率,F(xiàn)PR如式(4)所示,表示在所有實(shí)際為陰性的樣本中,被錯誤地判斷為陽性之比率.
(3)
(4)
較低的靈敏度系數(shù)值會提高檢測閾值,從而導(dǎo)致較高的檢測率,但是也會帶來誤報損失.在實(shí)驗(yàn)中,靈敏度參數(shù)的值K>4.125時,真陽性率均達(dá)不到1,即隨著系數(shù)的增加,TPR,F(xiàn)PR都會下降到檢測完全不敏感的程度.所以對靈敏度系數(shù)K小于等于4.125且真陽性率TPR=1時進(jìn)行的研究,如圖6所示,隨著靈敏度系數(shù)K值的減小,偽陽性率FTP的值卻在增加.真陽性率TPR=1.0,偽陽性率FPR=0.007 8,所以在精度測試中,我們預(yù)計將K設(shè)置為3.5.
圖6 靈敏度系數(shù)K對真?zhèn)侮栃月实挠绊?/p>
考慮到DDoS攻擊檢測不取決于網(wǎng)絡(luò)的大小,而是取決于構(gòu)成窗口大小的數(shù)據(jù)包的數(shù)量,僅當(dāng)數(shù)據(jù)包的數(shù)量m足夠且可行時,才能觀察到好的效果,但是增加m的值,同時也會導(dǎo)致更高的攻擊檢測等待時間,因?yàn)槊看螜z測都得接收更多的數(shù)據(jù)包.基于以上考慮,文中結(jié)合了靈敏度系數(shù)K,測試了不同窗口大小下的FPR的值.
如表1所示,當(dāng)將窗口大小設(shè)置為214時,誤報率為0,所以不再繼續(xù)增加窗口的大小,將m的值設(shè)置為214.
表1 窗口大小對檢測精度的影響
為了檢測文中所提出的機(jī)制檢測精度,研究了基于流式計算的DDoS檢測方法[20],進(jìn)行對比試驗(yàn).基于流式計算的DDoS檢測方法也是在裝有Ubuntu系統(tǒng)的服務(wù)器上搭建實(shí)驗(yàn)環(huán)境的,設(shè)計了2種不同的數(shù)據(jù)包數(shù)量進(jìn)行實(shí)驗(yàn),第一個實(shí)驗(yàn)中包含10 000數(shù)據(jù)包,第二個實(shí)驗(yàn)中包含20 000數(shù)據(jù)包.在文章所進(jìn)行的SDN可編程數(shù)據(jù)面中的DDoS攻擊檢測機(jī)制中,觀察窗口中的數(shù)據(jù)包數(shù)量為16 384.
圖7描述了在檢測機(jī)制中設(shè)定了數(shù)據(jù)包數(shù)量之后,不同攻擊流量占比的情況下,每種DDoS攻擊檢測機(jī)制在檢測到TCP中SYN攻擊的準(zhǔn)確性.文章研究的檢測機(jī)制數(shù)據(jù)包數(shù)量基于流式計算的檢測機(jī)制數(shù)據(jù)包量之間,從圖7中可以看出,隨著攻擊占比的提升,每種檢測機(jī)制的準(zhǔn)確率都會有所提升,但是,研究的檢測機(jī)制在每種觀察條件下,都優(yōu)于基于流式計算的檢測機(jī)制.
圖7 DDoS攻擊檢測準(zhǔn)確性與基于流式計算的DDoS檢測方法的比較
文章探索了與協(xié)議無關(guān)的數(shù)據(jù)面編程語言P4在可編程數(shù)據(jù)平面進(jìn)行網(wǎng)絡(luò)流量監(jiān)控的能力.在SDN數(shù)據(jù)平面使用基于信息熵的DDoS攻擊檢測,通過實(shí)驗(yàn),不僅證明了數(shù)據(jù)安全檢測機(jī)制可以在數(shù)據(jù)面中實(shí)現(xiàn)并獲得性能優(yōu)勢,更重要的是充分利用了SDN機(jī)制的優(yōu)勢,在數(shù)據(jù)面進(jìn)行DDoS攻擊檢測研究并減少了控制器的開銷.此外,實(shí)驗(yàn)證明,利用數(shù)據(jù)包的IP地址熵值進(jìn)行DDoS攻擊檢測方法,利用哈希二維表格存儲源和目的主機(jī)的IP地址熵值,然后計算出以該主機(jī)為目的的數(shù)據(jù)包的源IP熵值,將其與表格中的數(shù)據(jù)進(jìn)行對比,如果其源地址的熵值超過閾值,則判定為攻擊.這種檢測方法,在攻擊流量占比超過20%時,都能以100%的高精度檢測出DDoS攻擊,此外,該檢測機(jī)制使用哈希Sketch測量方法,實(shí)現(xiàn)簡單,減少了存儲開銷,并且此檢測機(jī)制在攻擊流量占比很低的時候就能達(dá)到較高的檢測精度,滿足網(wǎng)絡(luò)中對數(shù)據(jù)包處理相關(guān)的嚴(yán)格內(nèi)存空間和處理事件預(yù)算要求,實(shí)現(xiàn)了預(yù)期的低資源利用率以及低時間開銷等問題.