杜祥通,李永忠
(江蘇科技大學(xué) 計(jì)算機(jī)學(xué)院,鎮(zhèn)江 212100)
隨著云計(jì)算、物聯(lián)網(wǎng)、大數(shù)據(jù)的興起,網(wǎng)絡(luò)安全受到了越來(lái)越多的關(guān)注.分布式拒絕服務(wù)(distribute denial of service, DDoS)攻擊一直以來(lái)都是互聯(lián)網(wǎng)的主要威脅之一[1].現(xiàn)如今的網(wǎng)絡(luò)為了體現(xiàn)其架構(gòu)的高擴(kuò)展性多采用分布式架構(gòu),但也導(dǎo)致了很多安全漏洞的出現(xiàn),新型的網(wǎng)絡(luò)技術(shù)環(huán)境下的DDoS攻擊檢測(cè)面臨著很大的挑戰(zhàn)[2].
軟件定義網(wǎng)絡(luò)(software defined network,SDN)作為新興的網(wǎng)絡(luò)架構(gòu),解耦了網(wǎng)絡(luò)的控制層與數(shù)據(jù)層,被認(rèn)為是未來(lái)網(wǎng)絡(luò)發(fā)展的方向[3].為防御SDN下的DDoS攻擊,國(guó)內(nèi)外許多網(wǎng)絡(luò)安全專(zhuān)家在常規(guī)方法的基礎(chǔ)上,將機(jī)器學(xué)習(xí)應(yīng)用于DDoS攻擊的入侵檢測(cè).深度神經(jīng)網(wǎng)絡(luò)(deep neural networks,DNN)作為深度學(xué)習(xí)的一個(gè)分支,與傳統(tǒng)的機(jī)器學(xué)習(xí)相比,DNN可以將低層特征組合后形成更加抽象的高層表示,使得一個(gè)基于DNN的學(xué)習(xí)系統(tǒng)不依賴(lài)人工的特征選擇,發(fā)現(xiàn)數(shù)據(jù)分布式的特征,學(xué)習(xí)到更加復(fù)雜的表達(dá)函數(shù)[4].但由于SDN環(huán)境下的DDoS攻擊的特征數(shù)量有限,常規(guī)的分類(lèi)都是二分類(lèi),即正常流量和攻擊流量,往往會(huì)由于特征的不充足和信息的不確定性導(dǎo)致流量分類(lèi)的錯(cuò)誤.
因此,為解決軟件定義網(wǎng)絡(luò)中DDoS攻擊難以檢測(cè)、傳統(tǒng)的特征提取方式不能提取到合適的特征而導(dǎo)致的入侵檢測(cè)率低的問(wèn)題,文中提出一種SDN下基于DNN和三支決策的入侵檢測(cè)模型.DNN具有對(duì)高維數(shù)據(jù)的特征提取的完備性高的特點(diǎn),采用在SDN流表項(xiàng)下直接獲取的特征和手動(dòng)構(gòu)建的特征作為特征集.隨后使用三支決策入侵檢測(cè)模型進(jìn)行數(shù)據(jù)分類(lèi),該入侵檢測(cè)模塊將流經(jīng)控制器的流量分為正域(正常流量)、負(fù)域(入侵流量)、邊界域(不確定的流量),對(duì)于邊界域流量使用KNN算法再次進(jìn)行分類(lèi).文中模型通過(guò)多次實(shí)驗(yàn)改良后,對(duì)SDN下的DDoS攻擊具有更高的識(shí)別率,更低的誤報(bào)率,提升了DDoS攻擊的檢測(cè)效率.
目前已有的SDN下的入侵檢測(cè)技術(shù)按照類(lèi)別可劃分為常規(guī)的檢測(cè)技術(shù),基于傳統(tǒng)機(jī)器學(xué)習(xí)的檢測(cè)技術(shù)以及基于深度學(xué)習(xí)的檢測(cè)技術(shù).常規(guī)的入侵檢測(cè)技術(shù)已經(jīng)取得了初步的效果,文獻(xiàn)[5]提出了SDN下基于統(tǒng)計(jì)解決方案的DDoS攻擊檢測(cè)方法,該方法在檢測(cè)范圍和檢測(cè)準(zhǔn)確率上相比其他基于熵的方法有顯著的效果.文獻(xiàn)[6]提出了SDN下選擇性檢測(cè)數(shù)據(jù)包來(lái)檢測(cè)DDoS泛洪攻擊的方法,一定程度上提高了入侵檢測(cè)的正確率.但由于SDN下的DDoS攻擊的多樣化和分布性,使得常規(guī)的檢測(cè)方法容易產(chǎn)生誤報(bào)、檢測(cè)效率變低,已經(jīng)很難適用于現(xiàn)如今的入侵檢測(cè)中,為此,傳統(tǒng)的機(jī)器學(xué)習(xí)被一些國(guó)內(nèi)外專(zhuān)家應(yīng)用于在軟件定義網(wǎng)絡(luò)的入侵檢測(cè)中.
基于傳統(tǒng)的機(jī)器學(xué)習(xí)的入侵檢測(cè)技術(shù)在軟件定義網(wǎng)絡(luò)中有更好的檢測(cè)效果.文獻(xiàn)[7]從流量跟蹤的角度討論DDoS攻擊,使用了不同的機(jī)器學(xué)習(xí)方法將流量分為正常和異常.機(jī)器學(xué)習(xí)在進(jìn)行入侵檢測(cè)時(shí),需要手動(dòng)構(gòu)建特征進(jìn)行檢測(cè),文獻(xiàn)[8]提出基于KNN的DDoS攻擊檢測(cè)方法,檢測(cè)模型輸入的特征均為手動(dòng)構(gòu)造的特征,影響了檢測(cè)的效率,深度學(xué)習(xí)在SDN中的入侵檢測(cè)的應(yīng)用可以有效解決該問(wèn)題.
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)領(lǐng)域的一個(gè)新的研究方向,在圖像識(shí)別和自然語(yǔ)言處理方面已經(jīng)起到了很大的作用,解決很多復(fù)雜的模式識(shí)別等人工智能的難題.深度學(xué)習(xí)在SDN下的入侵檢測(cè)也已經(jīng)有部分的應(yīng)用,如文獻(xiàn)[9]提出了一種在OpenFlow的SDN中基于深度學(xué)習(xí)的DDoS攻擊的檢測(cè)和防御,該方法具有較高的精確度的同時(shí)運(yùn)算速率很高.
深度學(xué)習(xí)是一種有效的智能算法,其原理模擬人腦思考的過(guò)程,通過(guò)原始特征提取出更為抽象的高層特征[10].深度神經(jīng)網(wǎng)絡(luò)是以人工神經(jīng)網(wǎng)絡(luò)為架構(gòu),能夠處理具有許多隱藏層的神經(jīng)網(wǎng)絡(luò)的有效訓(xùn)練算法[11].
深度神經(jīng)網(wǎng)絡(luò)(圖1)是一種判別模型,具備至少一個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò).“深度”是指一系列連續(xù)的表示層,通過(guò)這些層可以對(duì)數(shù)據(jù)進(jìn)行高層的抽象,多層帶來(lái)的優(yōu)點(diǎn)是可以用較少的參數(shù)表示復(fù)雜的函數(shù).
圖1 深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
(1)
神經(jīng)網(wǎng)絡(luò)在感知機(jī)模型上的擴(kuò)展主要有:
(1) 加入多層隱藏層,模型的表達(dá)能力隨著網(wǎng)絡(luò)深度的加深而增強(qiáng).
(2) 輸出層的神經(jīng)元可以有多個(gè)輸出,使得模型可以應(yīng)用于分類(lèi),回歸,降維和聚類(lèi)等.
(3) 對(duì)激活函數(shù)做了擴(kuò)展,加入了非線性因素,提高了模型的表達(dá)能力.
基于文獻(xiàn)[12]在研究概率粗糙集和決策粗糙集過(guò)程中總結(jié)出的一種決策模式,利用兩個(gè)狀態(tài)集和3個(gè)行動(dòng)集來(lái)描述決策的過(guò)程.狀態(tài)集Ω={X,X},行動(dòng)集A={ɑp,ɑB,ɑN}分別表示接受、延遲決策和拒絕接受某事件.記λPP,λBP,λNP,分別表示χ屬于X時(shí),采取ɑp,ɑB和ɑN3種行動(dòng)下的損失.λPN,λBN,λNN分別表示χ不屬于X時(shí),采取ɑp,ɑB,ɑN時(shí)3類(lèi)行動(dòng)的損失,其期望損失值分別為:
R(ɑp|[χ])=λPPP(X|[χ])+λPNP(X|[χ])
(2)
R(ɑB|[χ])=λBPP(X|[χ])+λBNP(X|[χ])
(3)
R(ɑN|[χ])=λNPP(X|[χ])+λNNP(X|[χ])
(4)
由貝葉斯準(zhǔn)則,選擇期望損失值最小的行動(dòng)集作為最佳決策方案,POS(X)、BND(X)、NEG(X)分別表示正域、邊界域、負(fù)域, 做一個(gè)合理的假設(shè):0≤λPP≤λBP<λNP,0≤λNN≤λBN<λPN,則三支決策準(zhǔn)則(P),(B),(N)的條件如表1.
表1 決策規(guī)則(P)-(N)條件
通過(guò)設(shè)置閾值,將樣本分為正域、負(fù)域、邊界域.閾值的設(shè)定由期望損失值計(jì)算得到.根據(jù)貝葉斯準(zhǔn)則,設(shè)置兩個(gè)閾值α和β為:
(5)
(6)
則規(guī)則(P)-(N)可重寫(xiě)為:
(P1):若P(X|[χ])≥α,則χ∈POS(X)
(B1):若β
(N1):若P(X|[χ])≤β,則χ∈NEG(X)
文中基于DNN的三支決策DDoS攻擊檢測(cè)模型如圖2,主要分為兩個(gè)模塊,即特征提取模塊和入侵檢測(cè)模塊.首先輸入數(shù)據(jù),然后在特征提取模塊,并進(jìn)行數(shù)據(jù)的預(yù)處理,提取關(guān)鍵的字段作為DNN特征提取模型的輸入,提取特征后通過(guò)三支決策入侵檢測(cè)模型進(jìn)行數(shù)據(jù)的分類(lèi),對(duì)于邊界域的數(shù)據(jù)使用KNN分類(lèi)器重新分類(lèi)后,最終輸出分類(lèi)的結(jié)果.
圖2 DNN-TWD入侵檢測(cè)結(jié)構(gòu)模型
(1) 算法流程
入侵檢測(cè)算法流程如圖3,分為輸入數(shù)據(jù)、特征提取、數(shù)據(jù)分類(lèi)、邊界域處理、輸出結(jié)果5個(gè)階段.首先對(duì)訓(xùn)練集數(shù)據(jù)進(jìn)行預(yù)處理,隨后將數(shù)據(jù)放入DNN特征提取模型進(jìn)行特征提取.將提取到的特征放入三支決策分類(lèi)器,輸入測(cè)試集,使用分類(lèi)器進(jìn)行分類(lèi).通過(guò)訓(xùn)練集得出的閾值判斷數(shù)據(jù)是否屬于邊界域,若不屬于邊界域,直接將數(shù)據(jù)進(jìn)行二分類(lèi)輸出,如屬于邊界域?qū)⑦吔缬虻臄?shù)據(jù)放入KNN分類(lèi)器重新進(jìn)行分類(lèi).最后得到入侵檢測(cè)模型檢測(cè)的結(jié)果,進(jìn)行輸出.
圖3 入侵檢測(cè)算法流程
(2) DNN模型特征提取算法
在使用機(jī)器學(xué)習(xí)進(jìn)行特征的提取時(shí),特征的選擇是算法能否成功的關(guān)鍵[13].選擇好的特征可以提升算法的準(zhǔn)確率,過(guò)少的特征影響算法的正確率,過(guò)多的冗余特征又會(huì)影響算法的效率.DNN模型通過(guò)深度學(xué)習(xí)能夠自動(dòng)逐層提取特征,并且對(duì)提取的特征進(jìn)行權(quán)重值的分配,來(lái)達(dá)到最好的效果.
根據(jù)OpenFlow協(xié)議,每條流表的信息都由多個(gè)流表項(xiàng)組成,而每個(gè)流表項(xiàng)都由多個(gè)字段組成.在實(shí)驗(yàn)的DNN模型里,直接提取16維字段作為特征輸入,此外手動(dòng)構(gòu)建了2個(gè)特征以區(qū)別于SDN下的常規(guī)特征,共同構(gòu)成的DNN模型輸入的18維度特征.
手動(dòng)構(gòu)造的2個(gè)特征為:
平均數(shù)據(jù)分組數(shù)
(7)
式中:packets為分組的包數(shù);duration為持續(xù)時(shí)間.
平均數(shù)據(jù)分組位數(shù)
(8)
式中:bytes為流表中數(shù)據(jù)包字節(jié)數(shù).
圖3中特征提取的具體算法為DNN模型特征提取算法.
輸入:訓(xùn)練集、特征集
輸出:提取的特征.
算法的具體步驟如下:
Step1:設(shè)置循環(huán)次數(shù)t,模型層數(shù)為5,包括一個(gè)輸入層、一個(gè)輸出層和三個(gè)隱藏層.
Step2:隨機(jī)初始化每一層的權(quán)重向量W和偏移矢量b,設(shè)置樣本的標(biāo)準(zhǔn)偏差為0.1.
Step3:設(shè)置激活函數(shù),選擇tanh函數(shù),第h層的輸出為:
lh=tanh(bh+Whlh-1)
(9)
Step4:設(shè)置輸出函數(shù),選擇Sigmond函數(shù),代價(jià)函數(shù)F(W)為:
(10)
Step5:定義代價(jià)函數(shù)F(W)的梯度θh為:
(11)
即
Wh+1=Wh-τhθh
(12)
式中:τh為學(xué)習(xí)效率
Step6:經(jīng)過(guò)多批次的梯度下降訓(xùn)練循環(huán)迭代后,通過(guò)最小化代價(jià)函數(shù),得到權(quán)重值和偏置后輸出提取的特征.
(3) 三支決策分類(lèi)算法
在入侵檢測(cè)的數(shù)據(jù)分類(lèi)階段,將三支決策應(yīng)用于貝葉斯模型,將三支決策分類(lèi)器轉(zhuǎn)化為概率模型進(jìn)行數(shù)據(jù)分類(lèi).
輸入:測(cè)試集X、閾值α,β.
輸出:入侵檢測(cè)分類(lèi)結(jié)果.
算法的具體步驟如下:
Step1:根據(jù)決策粗糙集的思想,設(shè)置相應(yīng)的決策所產(chǎn)生的代價(jià)的值,即設(shè)置λPP,λBP,λNP,λPB,λBN,λNB.根據(jù)式(5、6),求出閾值α,β.
Step2:在該分類(lèi)器中,樣本為輸入的測(cè)試集,將提取的特征放入分類(lèi)器.將流量定義為事件X,根據(jù)規(guī)則(P)-(N),把流量分為正域(正常流量)、邊界域(不確定流量)、負(fù)域(攻擊流量).對(duì)于正、負(fù)域中的流量直接進(jìn)行分類(lèi)輸出,分別對(duì)應(yīng)為正常流量和入侵流量,對(duì)于邊界域的數(shù)據(jù)放入KNN分類(lèi)器中重新進(jìn)行二分類(lèi).
Step3:邊界域處理.對(duì)于邊界域的數(shù)據(jù),使用KNN分類(lèi)器對(duì)邊界域的流量進(jìn)行處理,KNN中節(jié)點(diǎn)相似度的計(jì)算需要使用距離度量來(lái)進(jìn)行判斷,使用歐氏距離計(jì)算兩點(diǎn)之間的距離,使用交叉驗(yàn)證來(lái)確定K的值,再將邊界域中的數(shù)據(jù)進(jìn)行二分類(lèi).
Step4:輸出分類(lèi)結(jié)果為二分類(lèi)數(shù)據(jù)即正常數(shù)據(jù)與入侵?jǐn)?shù)據(jù),將數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析.
文中搭建SDN環(huán)境進(jìn)行仿真實(shí)驗(yàn),在Mininet上運(yùn)行,控制器采用floodlight,測(cè)試集中正常樣本采用DARPA 99數(shù)據(jù)集中的網(wǎng)絡(luò)流量,DDoS攻擊樣本采用MIT提供的DDoS數(shù)據(jù)集LLS_DDoS_2.0.2,所用數(shù)據(jù)共有7萬(wàn)余條.實(shí)驗(yàn)數(shù)據(jù)集分布如表2,對(duì)數(shù)據(jù)預(yù)處理后作為實(shí)驗(yàn)數(shù)據(jù).
表2 實(shí)驗(yàn)數(shù)據(jù)集
Min-Max對(duì)數(shù)據(jù)進(jìn)行歸一化處理,將所有數(shù)據(jù)均轉(zhuǎn)化為字符型.采用標(biāo)準(zhǔn)化方法對(duì)訓(xùn)練集和測(cè)試集進(jìn)行處理:
(13)
式中:v為第i個(gè)屬性列的一個(gè)值;mini為第i個(gè)屬性列的最小值;maxi為第i個(gè)屬性列的最大值.將數(shù)據(jù)歸一化后,進(jìn)行數(shù)據(jù)的輸入.
選用正確率(accuracy,ACC)、檢出率(detection rate,DR)、誤報(bào)率(false positive rate,F(xiàn)PR)、精確率(precision rate,PR)和F1(F1-score)作為評(píng)測(cè)入侵檢測(cè)系統(tǒng)性能的主要評(píng)價(jià)指標(biāo).
(14)
(15)
(16)
(17)
(18)
式中:TP和TN分別為攻擊記錄和正常記錄已正確分類(lèi);FP為被誤認(rèn)為是攻擊的正常記錄;FN為錯(cuò)誤分類(lèi)為正常記錄的攻擊記錄.
使用文中實(shí)驗(yàn)?zāi)P头謩e與其他入侵檢測(cè)模型在LLS_DDoS_2.0.2數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)對(duì)比,對(duì)比實(shí)驗(yàn)所選的模型有SDN下基于K近鄰算法(KNN)的入侵檢測(cè)模型[8]、SDN中基于信息熵與DNN的DDoS攻擊檢測(cè)模型[14]、SDN下的跨平面協(xié)作DDoS檢測(cè)模型[15]以及SDN下基于深度信念網(wǎng)絡(luò)(DBN)的入侵檢測(cè)模型[16].結(jié)果如表3.
表3 不同模型的實(shí)驗(yàn)結(jié)果評(píng)估指標(biāo)
由表3和圖4可知,在使用DNN提取特征的基礎(chǔ)上使用三支決策進(jìn)行入侵檢測(cè)后在正確率、檢出率和F1分?jǐn)?shù)上均有明顯的提升.同時(shí)誤報(bào)率如圖5,隨著訓(xùn)練樣逐漸增多,誤報(bào)率有暫時(shí)的上升, 但最終經(jīng)過(guò)大量樣本訓(xùn)練后,誤報(bào)率趨于穩(wěn)定.
圖4 不同算法的檢測(cè)效果對(duì)比折線圖
圖5 誤報(bào)率檢測(cè)效果
將不同的算法進(jìn)行ROC曲線對(duì)比,如圖6,以誤報(bào)率為橫坐標(biāo),檢測(cè)率為縱坐標(biāo),可以看出本文算法DNN-TWD的ROC曲線面積比其他算法的面積大,說(shuō)明本文所提算法的性能更優(yōu),可以更好的進(jìn)行入侵檢測(cè).
圖6 不同算法的ROC曲線對(duì)比
文中實(shí)驗(yàn)?zāi)P褪止ぬ崛×藘蓚€(gè)特征,進(jìn)行對(duì)比實(shí)驗(yàn).第一組實(shí)驗(yàn)直接用OpenFlow字段提取的16個(gè)特征字段作為模型的特征輸入,第二組實(shí)驗(yàn)用16個(gè)原始字段加2個(gè)手工提取的兩個(gè)特征作為模型的輸入,通過(guò)正確率與耗時(shí)進(jìn)行對(duì)比(表4).
表4 不同特征輸入下的正確率與耗時(shí)對(duì)比
通過(guò)表4可以發(fā)現(xiàn),手動(dòng)添加兩個(gè)特征以后,檢測(cè)模型耗時(shí)增加了僅0.05 s,但是正確率提高了0.71%,可以證明重構(gòu)特征的有效性.
通過(guò)以上實(shí)驗(yàn)可以得知,文中基于DNN的三支決策DDoS攻擊檢測(cè)模型對(duì)SDN下的DDoS攻擊具有很高的識(shí)別率和準(zhǔn)確率,在OpenFlow中字段的特征維數(shù)較低情況下使用在SDN流表項(xiàng)下直接獲取的特征和手動(dòng)構(gòu)建的特征進(jìn)行特征的重構(gòu)后,檢測(cè)效率有更大的提升,為SDN下的網(wǎng)絡(luò)安全提供了更有效的保障.
針對(duì)SDN下的網(wǎng)絡(luò)攻擊,提出了基于深度神經(jīng)網(wǎng)絡(luò)的三支決策入侵檢測(cè)模型.該模型首先從OpenFlow流表中直接提取的特征和手動(dòng)構(gòu)造特征構(gòu)成特征集,使用DNN進(jìn)行特征的提取,最后利用三支決策檢測(cè)模型進(jìn)行流量的入侵檢測(cè),從而實(shí)現(xiàn)SDN下的DDoS攻擊檢測(cè).經(jīng)過(guò)仿真實(shí)驗(yàn)驗(yàn)證,所提實(shí)驗(yàn)?zāi)P驮谡_率、檢出率和精確率上都有提升,并在誤報(bào)率上有所降低,提高了檢測(cè)的效率.在以后的工作中,將會(huì)從解耦特征和入侵防御入手,盡可能地保留權(quán)重比較大的攻擊特征,減少權(quán)重較小的特征,進(jìn)一步提高檢測(cè)的效率,并設(shè)計(jì)檢測(cè)后的防御方案進(jìn)一步提高SDN下的網(wǎng)絡(luò)安全.