朱 婧,伍忠東,丁龍斌,汪 洋
(蘭州交通大學(xué) 電子與信息工程學(xué)院,蘭州 730070)
DDoS攻擊是當(dāng)今互聯(lián)網(wǎng)受到的主要威脅之一,給全球網(wǎng)絡(luò)體系帶來巨大的損失。例如,2016年,域名系統(tǒng)DNS的提供商Dyn遭到DDoS攻擊,造成大量的歐美用戶無法使用推特和亞馬遜等多個網(wǎng)站,2018年,GitHub在DDoS攻擊下一度出現(xiàn)癱瘓情況,使得客戶對GitHub網(wǎng)站的安全性產(chǎn)生質(zhì)疑,同年,僅阿里云所監(jiān)測到的云上DDoS攻擊就有近百萬次。由于DDoS攻擊易對軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)環(huán)境下的控制器造成嚴(yán)重?fù)p害,因此,如何高效、實(shí)時地檢測出DDoS攻擊,對SDN網(wǎng)絡(luò)架構(gòu)的部署至關(guān)重要。目前,針對DDoS攻擊流量的檢測主要基于傳統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu),而在SDN環(huán)境下檢測DDoS攻擊的研究仍處于初級階段,因此,在SDN環(huán)境下檢測DDoS攻擊具有廣闊的研究前景[1]。
由于將數(shù)據(jù)和控制平面進(jìn)行分離是SDN邏輯集中控制網(wǎng)絡(luò)構(gòu)架的核心要求,而OpenFlow是數(shù)據(jù)和控制平面間統(tǒng)一的開放式接口,因此SDN的特征表現(xiàn)為在擁有邏輯集中式控制平面的同時,借助統(tǒng)一且開放的南向接口來實(shí)現(xiàn)對網(wǎng)絡(luò)的控制[2]。雖然SDN相對于傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)優(yōu)勢明顯,但其針對DDoS的攻擊檢測仍存在可靠性和安全性不高等問題。
近年來,研究人員針對SDN環(huán)境提出多種DDoS攻擊檢測方法。例如,文獻(xiàn)[3]采用BP神經(jīng)網(wǎng)絡(luò)算法對訓(xùn)練樣本進(jìn)行分類,實(shí)現(xiàn)對DDoS攻擊的檢測,但BP神經(jīng)網(wǎng)絡(luò)具有隨機(jī)初始化權(quán)值參數(shù)的特點(diǎn),易陷入局部最優(yōu)。文獻(xiàn)[4]采用傳統(tǒng)方法SVM分類器進(jìn)行DDoS檢測,但存在檢測時間長、準(zhǔn)確率低等問題。文獻(xiàn)[5]提出基于深度學(xué)習(xí)的DDoS攻擊檢測和防御方法,并將其代入OpenFlow的SDN環(huán)境中進(jìn)行驗(yàn)證。文獻(xiàn)[6]將POX作為控制器,但POX支持的協(xié)議相對較少。文獻(xiàn)[7]使用最大值熵估計法確定良性流量分布和進(jìn)行SDN中的異常檢測,但其僅能解決小型辦公室和家庭網(wǎng)絡(luò)的問題。文獻(xiàn)[8-10]雖然對SDN環(huán)境下的安全問題提出了一些觀點(diǎn)和概述,但是大多與理論問題有關(guān),并沒有實(shí)現(xiàn)實(shí)際應(yīng)用。
本文提出一種在SDN環(huán)境下基于DBN的DDoS攻擊檢測算法。通過描述SDN的體系結(jié)構(gòu),分析控制器的結(jié)構(gòu)特征以及受到DDoS攻擊的難易程度,闡明DDoS攻擊控制器的工作機(jī)制。通過Mininet模擬SDN的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),并使用Ryu控制器構(gòu)建系統(tǒng)模型,采用Hyenae進(jìn)行DDoS攻擊模擬,并借助TcpDump收集流量信息。
作為網(wǎng)絡(luò)黑客的主要攻擊手段,DDoS攻擊因其將多個計算機(jī)聯(lián)合作為攻擊目標(biāo),其攻擊效果相較于其他網(wǎng)絡(luò)攻擊成倍提升,因此,也被稱為洪水攻擊。
DDoS是由拒絕服務(wù)攻擊(DoS)衍生而來的,其利用TCP/IP協(xié)議的漏洞,以占用或耗盡目標(biāo)主機(jī)系統(tǒng)內(nèi)存資源為目標(biāo),通過操作僵尸網(wǎng)絡(luò)中的大量“僵尸機(jī)”來阻斷所在鏈路的帶寬,使得用戶的正常服務(wù)請求被無理由拒絕[11]。
SDN環(huán)境下的DDoS攻擊會對網(wǎng)絡(luò)的各個層面造成影響,主要包括以下3個方面[12-13]:
1)攻擊SDN控制器,使整個網(wǎng)絡(luò)失去控制層或者切換回傳統(tǒng)網(wǎng)絡(luò)的狀態(tài)。
2)攻擊SDN交換機(jī),通過占滿交換機(jī)中的流表緩存,使交換機(jī)無法正常轉(zhuǎn)發(fā)數(shù)據(jù)。
3)攻擊網(wǎng)絡(luò)主機(jī),從而大量消耗目標(biāo)系統(tǒng)的網(wǎng)絡(luò)資源。
本文采用OpenFlow交換機(jī)應(yīng)對上述3種攻擊形式,該交換機(jī)主要由流表、安全信道和OpenFlow協(xié)議組成,位于數(shù)據(jù)交換平面內(nèi)。OpenFlow交換機(jī)的主要功能是通過流表實(shí)現(xiàn)報文的匹配與轉(zhuǎn)發(fā),類似于路由器中的路由表以及交換機(jī)中的轉(zhuǎn)發(fā)表。因此,流表是OpenFlow交換機(jī)的核心,若數(shù)據(jù)包與流表匹配成功,則直接輸出結(jié)果,否則,交換機(jī)就會發(fā)出請求,驅(qū)動控制器進(jìn)行處理[14]。圖1給出數(shù)據(jù)包與流表匹配的流程,可以看出,未能匹配的數(shù)據(jù)包都將被發(fā)送到控制器中。
圖1 數(shù)據(jù)包與流表的匹配流程
針對SDN環(huán)境下基于DBN的DDoS攻擊檢測,其模型如圖2所示。其中,數(shù)據(jù)訓(xùn)練模塊主要采取DBN深度信念網(wǎng)絡(luò)方法,對提取到的特征值等參數(shù)進(jìn)行訓(xùn)練?;贒BN的攻擊檢測模型主要包括異常檢測模塊、流量特征提取模塊和DDoS攻擊檢測模塊3個部分,具體分析如下:
1)異常檢測模塊的主要功能是計算熵值偏差,當(dāng)偏差值大于閾值時則視為異常,需進(jìn)一步判斷是否發(fā)生DDoS攻擊。
2)流量特征提取模塊的主要功能是提取與分布式拒絕服務(wù)攻擊相關(guān)的特征值,即在流表收集模塊中收集的流量值。
3)攻擊檢測模塊的主要功能是在檢測到存在攻擊跡象時,Ryu控制器對其進(jìn)行處理并在交換機(jī)中執(zhí)行相應(yīng)指令。
圖2 基于DBN的DDoS入侵檢測模型
由于進(jìn)入網(wǎng)絡(luò)的流量是隨機(jī)選擇的,而熵可以用來測定隨機(jī)性,因此本文通過熵的概念來檢測DDoS攻擊。
在使用信息熵檢測流量時,主要檢測Window(窗口)的大小和閾值。Window的大小是根據(jù)時間段的不同或者數(shù)據(jù)包的個數(shù)來確定的。如果需要測量數(shù)據(jù)包中的隨機(jī)程度,則要在所設(shè)置的Window中計算流量信息熵。因此,本文還需找出一個閾值,通過它來判斷流量是否異常,其判斷依據(jù)為,如果通過計算得出的信息熵小于閾值,則該流量是異常流量。信息熵值計算公式如下:
(1)
其中,N表示一個窗口的大小,即Window內(nèi)所含有數(shù)據(jù)包的個數(shù),pi表示概率,即Window中每個目的IP地址的數(shù)據(jù)包發(fā)生的概率。如果每個IP地址僅出現(xiàn)一次,此時的信息熵即為最大值。由于分布式拒絕服務(wù)攻擊的被攻擊者在多數(shù)情況下有且只有一個,當(dāng)大量的數(shù)據(jù)包被發(fā)送到被攻擊者處時,目的IP地址的信息熵將降為最小值。
本文預(yù)先設(shè)定好實(shí)驗(yàn)閾值,規(guī)定Window為50個數(shù)據(jù)包,每次實(shí)驗(yàn)連續(xù)測試5個Window。假設(shè)在實(shí)驗(yàn)中,出現(xiàn)連續(xù)5個Window的信息熵下降到小于閾值的情況,則說明目前網(wǎng)絡(luò)的流量異常,異常警告由Warning發(fā)出。其中,規(guī)定5個連續(xù)Window是為了避免實(shí)驗(yàn)結(jié)果的偶然性,降低誤報率,以防被意外的事件所干擾。
由于正常網(wǎng)絡(luò)操作也會出現(xiàn)信息熵值小于正常信息熵值的情況,因此僅憑信息熵計算的方法并不能完全確定目前網(wǎng)絡(luò)中有無DDoS攻擊發(fā)生。因此,當(dāng)異常檢測模塊檢測到模型中的異常流量時,需根據(jù)發(fā)送的Warning調(diào)用流量特征提取模塊所提取的流量特征來辨別。
本文采用以下5個特征值來描述SDN中的DDoS攻擊行為[15]:
1)流包數(shù)均值A(chǔ)PF,其表達(dá)式如下:
(2)
2)流包速率PTR,其表達(dá)式如下:
(3)
3)流表項速率FER,其表達(dá)式如下:
FFER=Nflow/T
(4)
4)單流表項比例SFP,其表達(dá)式如下:
SSFP=Nflows/Nflow
(5)
5)協(xié)議熵PS,其表達(dá)式如下:
(6)
在本文中,攻擊檢測模塊DBN的網(wǎng)絡(luò)結(jié)構(gòu)共分為5層[16],訓(xùn)練過程主要包括以下2個步驟:
1)3個RBM堆疊,分別對每一層RBM神經(jīng)網(wǎng)絡(luò)單獨(dú)進(jìn)行無監(jiān)督訓(xùn)練,使得輸入?yún)⒘吭谟成涞狡渌卣骺臻g時,可以盡可能多地保留特征向量的特征信息。
2)在網(wǎng)絡(luò)的最后一層設(shè)置隨機(jī)森林分類器,以進(jìn)一步進(jìn)行有監(jiān)督訓(xùn)練,即將上一層收到的受限玻爾茲曼機(jī)的輸出特征向量看作新的輸入特征向量。
網(wǎng)絡(luò)輸入層和輸出層的節(jié)點(diǎn)個數(shù)由DBN網(wǎng)絡(luò)結(jié)構(gòu)模型決定,其模型如圖3所示。
圖3 本文DBN網(wǎng)絡(luò)結(jié)構(gòu)模型
本實(shí)驗(yàn)選用sigmoid函數(shù)作為激活函數(shù),通過Python實(shí)現(xiàn)。經(jīng)多次仿真得出,當(dāng)輸入節(jié)點(diǎn)數(shù)為5(特征維數(shù)為5)、輸出節(jié)點(diǎn)為2(0表示正常狀態(tài),1表示攻擊狀態(tài))時仿真效果最佳。其中,sigmoid函數(shù)表達(dá)式如下:
(7)
本文實(shí)驗(yàn)平臺為Ubantu16.04、Python3.6.4,Ryu控制器及OpenVSwitch交換機(jī),通過Mininet對SDN網(wǎng)絡(luò)進(jìn)行仿真[17]。
本文使用KDD Cup 99數(shù)據(jù)集來訓(xùn)練檢測模型,而建立KDD99數(shù)據(jù)集的目的是為入侵檢測系統(tǒng)提供統(tǒng)一的性能評價基準(zhǔn),該數(shù)據(jù)集已被廣泛應(yīng)用于網(wǎng)絡(luò)入侵檢測方法的研究和評估[18-19]。本文所用的仿真數(shù)據(jù)集參考文獻(xiàn)[20],具體如表1所示。
表1 仿真數(shù)據(jù)集信息
本文使用的數(shù)據(jù)集均為pcap文件,需對其進(jìn)行預(yù)處理,在Linux環(huán)境下通過tshark(需要安裝 wireshark 軟件)命令把每條數(shù)據(jù)包的載荷去掉,只提取關(guān)鍵字段,比如數(shù)據(jù)包的幀ID、時間戳、協(xié)議類型、源IP、目的IP、源端口以及目的端口等。
在Ubuntu中使用命令mn啟動網(wǎng)絡(luò)拓?fù)?然后在Mininet中模擬SDN環(huán)境,如圖4所示。其中,主機(jī)h1~h3為第1個網(wǎng)段,主機(jī)h4~h11為第2個網(wǎng)段,h12~h14為第3個網(wǎng)段,h15~h17為第4個網(wǎng)段,s1~s6為交換機(jī),c0為控制器。輸入dump命令可以查看該仿真網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的具體信息。
將基于DBN得到的結(jié)果與其他3種算法(即隨機(jī)森林RF、SVM和XGBoost)進(jìn)行比較,其評價標(biāo)準(zhǔn)包括準(zhǔn)確性AACC、誤報率FFPR和算法運(yùn)行時間,具體表達(dá)式如下:
(8)
(9)
其中,NTP表示被正確標(biāo)記的正常測試樣本數(shù),NFP表示被錯誤標(biāo)記的正常測試樣本數(shù),NTN表示被正確標(biāo)記的攻擊測試樣本數(shù),NFN表示被錯誤標(biāo)記的攻擊測試樣本數(shù)。4種算法的攻擊檢測結(jié)果對比如表2所示。
表2 4種算法的攻擊檢測結(jié)果對比
表2數(shù)據(jù)是由500 000條數(shù)據(jù)進(jìn)行實(shí)驗(yàn)后獲得的,通過對比發(fā)現(xiàn),DBN算法的測試準(zhǔn)確率約為98.65%,而SVM、隨機(jī)森林和XGBoost的準(zhǔn)確率分別為97.42%、96.58%和96.08%,低于DBN算法,即本文DBN算法準(zhǔn)確性較高。與此同時,DBN的誤報率較低。
在運(yùn)行時間方面,DBN算法優(yōu)于SVM和XGBoost,但比隨機(jī)森林差。這是因?yàn)殡S機(jī)森林在構(gòu)建決策樹時僅僅使用了概率分布的信息,不需要進(jìn)行數(shù)據(jù)標(biāo)量間的計算,計算復(fù)雜度較低。XGBoost需要若干弱分類器依次迭代運(yùn)行,計算時間較長,SVM需要將數(shù)據(jù)在更高維空間計算距離,計算復(fù)雜度較高,DBN算法只需要對數(shù)據(jù)進(jìn)行線性映射和吉布斯采樣,運(yùn)算復(fù)雜度比SVM要小。
圖5為50 000條、100 000條、200 000條和500 000條數(shù)據(jù)時4種算法的檢測準(zhǔn)確率對比。可以看出,DBN算法的測試準(zhǔn)確率最高,且隨著數(shù)據(jù)量的增大,DBN算法的檢測準(zhǔn)確率提升幅度變大。
圖5 4種算法的檢測準(zhǔn)確率對比
圖6給出4種算法的誤報率對比。可以看出,隨著數(shù)據(jù)集樣本數(shù)的增多,本文DBN算法的誤報率降低,且相比其他算法,其誤報率是最低的。
圖6 4種算法的誤報率對比
綜上所述,本文構(gòu)建的基于DBN的DDoS攻擊檢測算法的綜合性能較好。
本文提出一種在SDN環(huán)境下基于DBN的DDoS攻擊檢測算法。通過分析DDoS攻擊的特點(diǎn),提取OpenFlow交換機(jī)上的流表項特征,構(gòu)建DDoS攻擊檢測模型。在此基礎(chǔ)上,利用數(shù)據(jù)集進(jìn)行訓(xùn)練和驗(yàn)證,以實(shí)現(xiàn)DDoS攻擊檢測。實(shí)驗(yàn)結(jié)果表明,與XGBoost、隨機(jī)森林和SVM算法相比,該算法的攻擊檢測準(zhǔn)確性較高,而誤報率較低。將本文攻擊檢測算法應(yīng)用到較大規(guī)模的網(wǎng)絡(luò)場景中進(jìn)行驗(yàn)證是下一步的研究方向。