杜祥通,李永忠
(江蘇科技大學(xué) 計算機(jī)學(xué)院,鎮(zhèn)江 212100)
隨著云計算、物聯(lián)網(wǎng)、大數(shù)據(jù)的興起,網(wǎng)絡(luò)安全受到了越來越多的關(guān)注.分布式拒絕服務(wù)(distribute denial of service, DDoS)攻擊一直以來都是互聯(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攻擊檢測面臨著很大的挑戰(zhàn)[2].
軟件定義網(wǎng)絡(luò)(software defined network,SDN)作為新興的網(wǎng)絡(luò)架構(gòu),解耦了網(wǎng)絡(luò)的控制層與數(shù)據(jù)層,被認(rèn)為是未來網(wǎng)絡(luò)發(fā)展的方向[3].為防御SDN下的DDoS攻擊,國內(nèi)外許多網(wǎng)絡(luò)安全專家在常規(guī)方法的基礎(chǔ)上,將機(jī)器學(xué)習(xí)應(yīng)用于DDoS攻擊的入侵檢測.深度神經(jīng)網(wǎng)絡(luò)(deep neural networks,DNN)作為深度學(xué)習(xí)的一個分支,與傳統(tǒng)的機(jī)器學(xué)習(xí)相比,DNN可以將低層特征組合后形成更加抽象的高層表示,使得一個基于DNN的學(xué)習(xí)系統(tǒng)不依賴人工的特征選擇,發(fā)現(xiàn)數(shù)據(jù)分布式的特征,學(xué)習(xí)到更加復(fù)雜的表達(dá)函數(shù)[4].但由于SDN環(huán)境下的DDoS攻擊的特征數(shù)量有限,常規(guī)的分類都是二分類,即正常流量和攻擊流量,往往會由于特征的不充足和信息的不確定性導(dǎo)致流量分類的錯誤.
因此,為解決軟件定義網(wǎng)絡(luò)中DDoS攻擊難以檢測、傳統(tǒng)的特征提取方式不能提取到合適的特征而導(dǎo)致的入侵檢測率低的問題,文中提出一種SDN下基于DNN和三支決策的入侵檢測模型.DNN具有對高維數(shù)據(jù)的特征提取的完備性高的特點,采用在SDN流表項下直接獲取的特征和手動構(gòu)建的特征作為特征集.隨后使用三支決策入侵檢測模型進(jìn)行數(shù)據(jù)分類,該入侵檢測模塊將流經(jīng)控制器的流量分為正域(正常流量)、負(fù)域(入侵流量)、邊界域(不確定的流量),對于邊界域流量使用KNN算法再次進(jìn)行分類.文中模型通過多次實驗改良后,對SDN下的DDoS攻擊具有更高的識別率,更低的誤報率,提升了DDoS攻擊的檢測效率.
目前已有的SDN下的入侵檢測技術(shù)按照類別可劃分為常規(guī)的檢測技術(shù),基于傳統(tǒng)機(jī)器學(xué)習(xí)的檢測技術(shù)以及基于深度學(xué)習(xí)的檢測技術(shù).常規(guī)的入侵檢測技術(shù)已經(jīng)取得了初步的效果,文獻(xiàn)[5]提出了SDN下基于統(tǒng)計解決方案的DDoS攻擊檢測方法,該方法在檢測范圍和檢測準(zhǔn)確率上相比其他基于熵的方法有顯著的效果.文獻(xiàn)[6]提出了SDN下選擇性檢測數(shù)據(jù)包來檢測DDoS泛洪攻擊的方法,一定程度上提高了入侵檢測的正確率.但由于SDN下的DDoS攻擊的多樣化和分布性,使得常規(guī)的檢測方法容易產(chǎn)生誤報、檢測效率變低,已經(jīng)很難適用于現(xiàn)如今的入侵檢測中,為此,傳統(tǒng)的機(jī)器學(xué)習(xí)被一些國內(nèi)外專家應(yīng)用于在軟件定義網(wǎng)絡(luò)的入侵檢測中.
基于傳統(tǒng)的機(jī)器學(xué)習(xí)的入侵檢測技術(shù)在軟件定義網(wǎng)絡(luò)中有更好的檢測效果.文獻(xiàn)[7]從流量跟蹤的角度討論DDoS攻擊,使用了不同的機(jī)器學(xué)習(xí)方法將流量分為正常和異常.機(jī)器學(xué)習(xí)在進(jìn)行入侵檢測時,需要手動構(gòu)建特征進(jìn)行檢測,文獻(xiàn)[8]提出基于KNN的DDoS攻擊檢測方法,檢測模型輸入的特征均為手動構(gòu)造的特征,影響了檢測的效率,深度學(xué)習(xí)在SDN中的入侵檢測的應(yīng)用可以有效解決該問題.
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)領(lǐng)域的一個新的研究方向,在圖像識別和自然語言處理方面已經(jīng)起到了很大的作用,解決很多復(fù)雜的模式識別等人工智能的難題.深度學(xué)習(xí)在SDN下的入侵檢測也已經(jīng)有部分的應(yīng)用,如文獻(xiàn)[9]提出了一種在OpenFlow的SDN中基于深度學(xué)習(xí)的DDoS攻擊的檢測和防御,該方法具有較高的精確度的同時運(yùn)算速率很高.
深度學(xué)習(xí)是一種有效的智能算法,其原理模擬人腦思考的過程,通過原始特征提取出更為抽象的高層特征[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)是一種判別模型,具備至少一個隱藏層的神經(jīng)網(wǎng)絡(luò).“深度”是指一系列連續(xù)的表示層,通過這些層可以對數(shù)據(jù)進(jìn)行高層的抽象,多層帶來的優(yōu)點是可以用較少的參數(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)元可以有多個輸出,使得模型可以應(yīng)用于分類,回歸,降維和聚類等.
(3) 對激活函數(shù)做了擴(kuò)展,加入了非線性因素,提高了模型的表達(dá)能力.
基于文獻(xiàn)[12]在研究概率粗糙集和決策粗糙集過程中總結(jié)出的一種決策模式,利用兩個狀態(tài)集和3個行動集來描述決策的過程.狀態(tài)集Ω={X,X},行動集A={ɑp,ɑB,ɑN}分別表示接受、延遲決策和拒絕接受某事件.記λPP,λBP,λNP,分別表示χ屬于X時,采取ɑp,ɑB和ɑN3種行動下的損失.λPN,λBN,λNN分別表示χ不屬于X時,采取ɑp,ɑB,ɑN時3類行動的損失,其期望損失值分別為:
R(ɑp|[χ])=λPPP(X|[χ])+λPNP(X|[χ])
(2)
R(ɑB|[χ])=λBPP(X|[χ])+λBNP(X|[χ])
(3)
R(ɑN|[χ])=λNPP(X|[χ])+λNNP(X|[χ])
(4)
由貝葉斯準(zhǔn)則,選擇期望損失值最小的行動集作為最佳決策方案,POS(X)、BND(X)、NEG(X)分別表示正域、邊界域、負(fù)域, 做一個合理的假設(shè):0≤λPP≤λBP<λNP,0≤λNN≤λBN<λPN,則三支決策準(zhǔn)則(P),(B),(N)的條件如表1.

表1 決策規(guī)則(P)-(N)條件
通過設(shè)置閾值,將樣本分為正域、負(fù)域、邊界域.閾值的設(shè)定由期望損失值計算得到.根據(jù)貝葉斯準(zhǔn)則,設(shè)置兩個閾值α和β為:
(5)
(6)
則規(guī)則(P)-(N)可重寫為:
(P1):若P(X|[χ])≥α,則χ∈POS(X)
(B1):若β
(N1):若P(X|[χ])≤β,則χ∈NEG(X)
文中基于DNN的三支決策DDoS攻擊檢測模型如圖2,主要分為兩個模塊,即特征提取模塊和入侵檢測模塊.首先輸入數(shù)據(jù),然后在特征提取模塊,并進(jìn)行數(shù)據(jù)的預(yù)處理,提取關(guān)鍵的字段作為DNN特征提取模型的輸入,提取特征后通過三支決策入侵檢測模型進(jìn)行數(shù)據(jù)的分類,對于邊界域的數(shù)據(jù)使用KNN分類器重新分類后,最終輸出分類的結(jié)果.

圖2 DNN-TWD入侵檢測結(jié)構(gòu)模型
(1) 算法流程
入侵檢測算法流程如圖3,分為輸入數(shù)據(jù)、特征提取、數(shù)據(jù)分類、邊界域處理、輸出結(jié)果5個階段.首先對訓(xùn)練集數(shù)據(jù)進(jìn)行預(yù)處理,隨后將數(shù)據(jù)放入DNN特征提取模型進(jìn)行特征提取.將提取到的特征放入三支決策分類器,輸入測試集,使用分類器進(jìn)行分類.通過訓(xùn)練集得出的閾值判斷數(shù)據(jù)是否屬于邊界域,若不屬于邊界域,直接將數(shù)據(jù)進(jìn)行二分類輸出,如屬于邊界域?qū)⑦吔缬虻臄?shù)據(jù)放入KNN分類器重新進(jìn)行分類.最后得到入侵檢測模型檢測的結(jié)果,進(jìn)行輸出.

圖3 入侵檢測算法流程
(2) DNN模型特征提取算法
在使用機(jī)器學(xué)習(xí)進(jìn)行特征的提取時,特征的選擇是算法能否成功的關(guān)鍵[13].選擇好的特征可以提升算法的準(zhǔn)確率,過少的特征影響算法的正確率,過多的冗余特征又會影響算法的效率.DNN模型通過深度學(xué)習(xí)能夠自動逐層提取特征,并且對提取的特征進(jìn)行權(quán)重值的分配,來達(dá)到最好的效果.
根據(jù)OpenFlow協(xié)議,每條流表的信息都由多個流表項組成,而每個流表項都由多個字段組成.在實驗的DNN模型里,直接提取16維字段作為特征輸入,此外手動構(gòu)建了2個特征以區(qū)別于SDN下的常規(guī)特征,共同構(gòu)成的DNN模型輸入的18維度特征.
手動構(gòu)造的2個特征為:
平均數(shù)據(jù)分組數(shù)
(7)
式中:packets為分組的包數(shù);duration為持續(xù)時間.
平均數(shù)據(jù)分組位數(shù)
(8)
式中:bytes為流表中數(shù)據(jù)包字節(jié)數(shù).
圖3中特征提取的具體算法為DNN模型特征提取算法.
輸入:訓(xùn)練集、特征集
輸出:提取的特征.
算法的具體步驟如下:
Step1:設(shè)置循環(huán)次數(shù)t,模型層數(shù)為5,包括一個輸入層、一個輸出層和三個隱藏層.
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ù),代價函數(shù)F(W)為:
(10)
Step5:定義代價函數(shù)F(W)的梯度θh為:
(11)
即
Wh+1=Wh-τhθh
(12)
式中:τh為學(xué)習(xí)效率
Step6:經(jīng)過多批次的梯度下降訓(xùn)練循環(huán)迭代后,通過最小化代價函數(shù),得到權(quán)重值和偏置后輸出提取的特征.
(3) 三支決策分類算法
在入侵檢測的數(shù)據(jù)分類階段,將三支決策應(yīng)用于貝葉斯模型,將三支決策分類器轉(zhuǎn)化為概率模型進(jìn)行數(shù)據(jù)分類.
輸入:測試集X、閾值α,β.
輸出:入侵檢測分類結(jié)果.
算法的具體步驟如下:
Step1:根據(jù)決策粗糙集的思想,設(shè)置相應(yīng)的決策所產(chǎn)生的代價的值,即設(shè)置λPP,λBP,λNP,λPB,λBN,λNB.根據(jù)式(5、6),求出閾值α,β.
Step2:在該分類器中,樣本為輸入的測試集,將提取的特征放入分類器.將流量定義為事件X,根據(jù)規(guī)則(P)-(N),把流量分為正域(正常流量)、邊界域(不確定流量)、負(fù)域(攻擊流量).對于正、負(fù)域中的流量直接進(jìn)行分類輸出,分別對應(yīng)為正常流量和入侵流量,對于邊界域的數(shù)據(jù)放入KNN分類器中重新進(jìn)行二分類.
Step3:邊界域處理.對于邊界域的數(shù)據(jù),使用KNN分類器對邊界域的流量進(jìn)行處理,KNN中節(jié)點相似度的計算需要使用距離度量來進(jìn)行判斷,使用歐氏距離計算兩點之間的距離,使用交叉驗證來確定K的值,再將邊界域中的數(shù)據(jù)進(jìn)行二分類.
Step4:輸出分類結(jié)果為二分類數(shù)據(jù)即正常數(shù)據(jù)與入侵?jǐn)?shù)據(jù),將數(shù)據(jù)進(jìn)行統(tǒng)計分析.
文中搭建SDN環(huán)境進(jìn)行仿真實驗,在Mininet上運(yùn)行,控制器采用floodlight,測試集中正常樣本采用DARPA 99數(shù)據(jù)集中的網(wǎng)絡(luò)流量,DDoS攻擊樣本采用MIT提供的DDoS數(shù)據(jù)集LLS_DDoS_2.0.2,所用數(shù)據(jù)共有7萬余條.實驗數(shù)據(jù)集分布如表2,對數(shù)據(jù)預(yù)處理后作為實驗數(shù)據(jù).

表2 實驗數(shù)據(jù)集
Min-Max對數(shù)據(jù)進(jìn)行歸一化處理,將所有數(shù)據(jù)均轉(zhuǎn)化為字符型.采用標(biāo)準(zhǔn)化方法對訓(xùn)練集和測試集進(jìn)行處理:
(13)
式中:v為第i個屬性列的一個值;mini為第i個屬性列的最小值;maxi為第i個屬性列的最大值.將數(shù)據(jù)歸一化后,進(jìn)行數(shù)據(jù)的輸入.
選用正確率(accuracy,ACC)、檢出率(detection rate,DR)、誤報率(false positive rate,F(xiàn)PR)、精確率(precision rate,PR)和F1(F1-score)作為評測入侵檢測系統(tǒng)性能的主要評價指標(biāo).
(14)
(15)
(16)
(17)
(18)
式中:TP和TN分別為攻擊記錄和正常記錄已正確分類;FP為被誤認(rèn)為是攻擊的正常記錄;FN為錯誤分類為正常記錄的攻擊記錄.
使用文中實驗?zāi)P头謩e與其他入侵檢測模型在LLS_DDoS_2.0.2數(shù)據(jù)集上進(jìn)行實驗對比,對比實驗所選的模型有SDN下基于K近鄰算法(KNN)的入侵檢測模型[8]、SDN中基于信息熵與DNN的DDoS攻擊檢測模型[14]、SDN下的跨平面協(xié)作DDoS檢測模型[15]以及SDN下基于深度信念網(wǎng)絡(luò)(DBN)的入侵檢測模型[16].結(jié)果如表3.

表3 不同模型的實驗結(jié)果評估指標(biāo)
由表3和圖4可知,在使用DNN提取特征的基礎(chǔ)上使用三支決策進(jìn)行入侵檢測后在正確率、檢出率和F1分?jǐn)?shù)上均有明顯的提升.同時誤報率如圖5,隨著訓(xùn)練樣逐漸增多,誤報率有暫時的上升, 但最終經(jīng)過大量樣本訓(xùn)練后,誤報率趨于穩(wěn)定.

圖4 不同算法的檢測效果對比折線圖

圖5 誤報率檢測效果
將不同的算法進(jìn)行ROC曲線對比,如圖6,以誤報率為橫坐標(biāo),檢測率為縱坐標(biāo),可以看出本文算法DNN-TWD的ROC曲線面積比其他算法的面積大,說明本文所提算法的性能更優(yōu),可以更好的進(jìn)行入侵檢測.

圖6 不同算法的ROC曲線對比
文中實驗?zāi)P褪止ぬ崛×藘蓚€特征,進(jìn)行對比實驗.第一組實驗直接用OpenFlow字段提取的16個特征字段作為模型的特征輸入,第二組實驗用16個原始字段加2個手工提取的兩個特征作為模型的輸入,通過正確率與耗時進(jìn)行對比(表4).

表4 不同特征輸入下的正確率與耗時對比
通過表4可以發(fā)現(xiàn),手動添加兩個特征以后,檢測模型耗時增加了僅0.05 s,但是正確率提高了0.71%,可以證明重構(gòu)特征的有效性.
通過以上實驗可以得知,文中基于DNN的三支決策DDoS攻擊檢測模型對SDN下的DDoS攻擊具有很高的識別率和準(zhǔn)確率,在OpenFlow中字段的特征維數(shù)較低情況下使用在SDN流表項下直接獲取的特征和手動構(gòu)建的特征進(jìn)行特征的重構(gòu)后,檢測效率有更大的提升,為SDN下的網(wǎng)絡(luò)安全提供了更有效的保障.
針對SDN下的網(wǎng)絡(luò)攻擊,提出了基于深度神經(jīng)網(wǎng)絡(luò)的三支決策入侵檢測模型.該模型首先從OpenFlow流表中直接提取的特征和手動構(gòu)造特征構(gòu)成特征集,使用DNN進(jìn)行特征的提取,最后利用三支決策檢測模型進(jìn)行流量的入侵檢測,從而實現(xiàn)SDN下的DDoS攻擊檢測.經(jīng)過仿真實驗驗證,所提實驗?zāi)P驮谡_率、檢出率和精確率上都有提升,并在誤報率上有所降低,提高了檢測的效率.在以后的工作中,將會從解耦特征和入侵防御入手,盡可能地保留權(quán)重比較大的攻擊特征,減少權(quán)重較小的特征,進(jìn)一步提高檢測的效率,并設(shè)計檢測后的防御方案進(jìn)一步提高SDN下的網(wǎng)絡(luò)安全.