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