劉振鵬,王仕磊,郭 超,陳 杰,李小菲
(1.河北大學(xué) 電子信息工程學(xué)院,河北 保定 071002;2.河北大學(xué) 信息技術(shù)中心,河北 保定 071002)
分布式拒絕服務(wù)(Distributed Denial of Service,DDoS)攻擊[1]的解決方案一直是網(wǎng)絡(luò)安全研究領(lǐng)域的難點(diǎn)問題.軟件定義網(wǎng)絡(luò)(Software-Define Networking,SDN)[2-3]架構(gòu)的核心思想是控制平面與數(shù)據(jù)平面的分離,相較于傳統(tǒng)網(wǎng)絡(luò)架構(gòu)SDN 增加了靈活性、加快了實(shí)施并簡(jiǎn)化了管理[4].除了數(shù)據(jù)和控制平面分離之外,SDN 還包括應(yīng)用平面,為負(fù)載平衡、入侵檢測(cè)、流量監(jiān)控等基本網(wǎng)絡(luò)功能提供高效的解決方案[5].控制器的集中化雖降低了部署成本,但這也使得控制器更易受到DDoS 攻擊[6].
現(xiàn)有的DDoS 攻擊檢測(cè)機(jī)制通?;跈C(jī)器學(xué)習(xí)方法.機(jī)器學(xué)習(xí)模型從網(wǎng)絡(luò)流量中提取并使用一些特征來區(qū)分惡意流量和正常流量.文獻(xiàn)[7]采用支持向量機(jī)(Support Vector Machine,SVM)的方法區(qū)分DDoS 攻擊流量和正常流量;在文獻(xiàn)[8]中,采用了3 種不同的機(jī)器學(xué)習(xí)算法進(jìn)行比較.但僅采用基于機(jī)器學(xué)習(xí)的方法對(duì)控制器的資源占用量較大.在文獻(xiàn)[9-11]中,采用了一種基于信息熵和機(jī)器學(xué)習(xí)方法相結(jié)合的DDoS 檢測(cè)思想,分別提出了3 種不同的檢測(cè)方案.此思想在第一階段采用基于信息熵的方法檢測(cè)攻擊流量,第二階段采用不同的機(jī)器學(xué)習(xí)方法對(duì)異常流量進(jìn)行分類.通過實(shí)驗(yàn)表明此方案可以有效減少控制器資源占用量較大問題.文獻(xiàn)[12]通過在NSL-KDD 數(shù)據(jù)集上的實(shí)驗(yàn),觀察到前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Network,FNN)和卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)等深度神經(jīng)網(wǎng)絡(luò)模型在確定網(wǎng)絡(luò)異常檢測(cè)方面比貝葉斯、隨機(jī)森林、隨機(jī)樹、SVM 等淺層機(jī)器學(xué)習(xí)算法具有更高的精確度.在這些研究[13-14]中,深度學(xué)習(xí)模型比淺層機(jī)器學(xué)習(xí)模型更成功;深度學(xué)習(xí)模型的成功之處在于其結(jié)構(gòu)中包含了特征提取和分類過程[15];文獻(xiàn)[16]采用DNN 模型在CICDDoS2019數(shù)據(jù)集上進(jìn)行DDoS 檢測(cè)實(shí)驗(yàn),表明該模型具有超高的檢測(cè)精度.基于此,本文將廣義信息熵與深度神經(jīng)網(wǎng)絡(luò)模型結(jié)合,提出一種DDoS 攻擊檢測(cè)方案.其中DNN 模型的最優(yōu)化方法采用文獻(xiàn)[17]中提到的Adam 方法.
方案模型如圖1 所示,該模型由3 個(gè)主要模塊組成.來自交換機(jī)的網(wǎng)絡(luò)流量先由低計(jì)算成本的輕量級(jí)檢測(cè)模塊進(jìn)行檢測(cè),對(duì)于輕量級(jí)檢測(cè)模塊檢測(cè)不出的異常流量再進(jìn)行重量級(jí)檢測(cè).
圖1 DDoS 攻擊檢測(cè)方案模型Fig.1 A scheme model to detect DDoS attack
1.1 基于熵值的檢測(cè)模塊網(wǎng)絡(luò)流量數(shù)據(jù)由無數(shù)離散信息源組成,信息熵表征整個(gè)信源的不確定度,即熵值越低代表網(wǎng)絡(luò)流量的隨機(jī)性越低,熵值越高代表網(wǎng)絡(luò)流量的隨機(jī)性越高.在正常的網(wǎng)絡(luò)當(dāng)中,流量的隨機(jī)性通常比較大,然而當(dāng)發(fā)生DDoS 攻擊時(shí),大量由攻擊者控制的傀儡主機(jī)向同一個(gè)目的主機(jī)發(fā)送大流量數(shù)據(jù),造成目的主機(jī)拒絕為其他正常用戶服務(wù),此時(shí)網(wǎng)絡(luò)系統(tǒng)的隨機(jī)性被打破.與正常流量相比DDoS 攻擊流量的目的IP 的熵值更小,因此可以通過觀察信息熵的變化來判斷是否發(fā)生DDoS 攻擊.
信息熵的概念是香農(nóng)于1948 年提出來的,香農(nóng)熵的計(jì)算公式為:
其中,pi是事件X={X1,X2,···,Xi,···,Xn}的概率,且0≤pi≤1.此方案中設(shè)X為n種不同目的IP 地址的集合,pi代表目的IP 地址為IPi的所有數(shù)據(jù)包之和.
1961 年Alfred Renyit 提出了香農(nóng)熵的廣義形式:
當(dāng)α趨近于1 時(shí),廣義熵就是香農(nóng)熵.當(dāng)α大于1 時(shí),由廣義熵計(jì)算出正常流量與攻擊流量的熵值之差值更大.這意味著可以更好地選擇閾值,增強(qiáng)系統(tǒng)的檢測(cè)能力[18],所以熵值檢測(cè)模塊采用廣義熵公式計(jì)算熵值.其中閾值σ1、σ2將根據(jù)一個(gè)采樣周期內(nèi)廣義熵值Hα(X) 的最大、最小熵值進(jìn)行設(shè)置.將最大熵值設(shè)置為閾值σ1;最小熵值設(shè)置為閾值σ2.
算法 1 基于廣義熵的檢測(cè)方案
步驟 1控制器提取當(dāng)前采樣窗口內(nèi)數(shù)據(jù)包報(bào)頭目的IP 地址;
步驟 2根據(jù)(3)式計(jì)算當(dāng)前采樣窗口內(nèi)數(shù)據(jù)包目的IP 的廣義熵值Hα(X);
步驟 3將步驟2 計(jì)算的廣義熵值Hα(X)與閾值σ1、σ2進(jìn)行比較(σ1>σ2),若大于σ1則輸出為正常流量,小于σ2則輸出為DDoS 攻擊流量,介于σ1~σ2之間則輸出為異常流量.
1.2 異常檢測(cè)模塊只經(jīng)過上述信息論的度量方式進(jìn)行流量檢測(cè),檢測(cè)內(nèi)容過于單一.為此,引入深度神經(jīng)網(wǎng)絡(luò)模型對(duì)熵值檢測(cè)模塊中的異常流量進(jìn)行二次檢測(cè),以提高方案的檢測(cè)成功率.熵值檢測(cè)模塊輸出的異常流量將成為異常檢測(cè)模塊的輸入,此時(shí)控制器將先下發(fā)流表到交換機(jī)之后再進(jìn)行異常檢測(cè).該模塊首先將來自熵值檢測(cè)模塊中的異常流量進(jìn)行特征提取.在我們以往的研究[10]中,與傳統(tǒng)的6 元特征組比較發(fā)現(xiàn)由數(shù)據(jù)流的平均包數(shù)等8 個(gè)數(shù)據(jù)流量特征組成的8 元特征組在檢測(cè)率、準(zhǔn)確率上均高于傳統(tǒng)的6 元特征組,且誤報(bào)率低于后者.故我們將8 元特征組作為深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)網(wǎng)絡(luò)的8 個(gè)輸入端,對(duì)DNN網(wǎng)絡(luò)進(jìn)行訓(xùn)練,訓(xùn)練完成后輸出端輸出有DDoS 攻擊或無DDoS 攻擊.8 元特征組特征符號(hào)在表1 中定義.
表1 數(shù)據(jù)流量8 元特征組Tab.1 Data traffic 8-element feature group
由于正常流量與攻擊流量的8 元特征值是不同的,故可以將上述問題看成一種分類問題.
1.2.1 基于Adam-DNN 的攻擊檢測(cè)算法 DNN[19]由無反饋連接的前饋神經(jīng)網(wǎng)絡(luò)組合而成,是一個(gè)加深了層的深度神經(jīng)網(wǎng)絡(luò).主要由輸入層、隱藏層和輸出層組成,其中隱藏層的層數(shù)不止一層.如圖2所示,該模型輸入層的輸入單位與所選特征相同.隱藏層由FNN 結(jié)構(gòu)中的3 個(gè)隱藏層組成,3 個(gè)隱藏層由數(shù)量相等的50 個(gè)單元組成,每個(gè)隱層采用sigmoid 激活函數(shù).由于最終輸出為正常流量或攻擊流量,由兩個(gè)標(biāo)簽組成,因此在輸出層中使用了兩個(gè)單元.第i層隱藏層所包含的激活函數(shù)的數(shù)學(xué)方程式如下:
圖2 深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Structure of deep neural network
其中,輸入向量的轉(zhuǎn)置、隱藏層中每個(gè)神經(jīng)元的權(quán)重、偏置、激活函數(shù)的符號(hào)分別表示為xT、w、b、f.激活函數(shù)將輸入信號(hào)轉(zhuǎn)換成輸出,并將作為下一隱藏層的輸入信號(hào).
該模型隱藏層采用sigmoid 激活函數(shù),其數(shù)學(xué)方程式如下:
該模型隱藏層最終輸出端函數(shù)的數(shù)學(xué)方程式如下:
該模型輸出層采用softmax 激活函數(shù),其數(shù)學(xué)方程式如下:
由于該神經(jīng)網(wǎng)絡(luò)模型最終將輸出有DDoS 攻擊或無DDoS 攻擊兩類,故該模型可以看成分類問題.對(duì)于神經(jīng)網(wǎng)絡(luò)而言,分類問題通常采用softmax函數(shù)作為輸出層的激活函數(shù).
損失函數(shù)采用交叉熵誤差函數(shù):
其中,qi是神經(jīng)網(wǎng)絡(luò)的輸出,pi是正確解的標(biāo)簽.
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)旨在找到使損失函數(shù)盡可能小的參數(shù).在參數(shù)尋優(yōu)過程中隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD)是使用最為廣泛的參數(shù)尋優(yōu)方法,但是SGD 在解決神經(jīng)網(wǎng)絡(luò)的最優(yōu)化問題時(shí)效率低下.
算法 2 SGD 優(yōu)化算法
輸入學(xué)習(xí)率α=0.001、損失函數(shù)f(θ)、初始的參數(shù)向量θ0.
步驟 1初始化時(shí)間步長(zhǎng)t=0;
步驟 2更新時(shí)間步長(zhǎng):t=t+1;
步驟 3計(jì)算損失函數(shù)f(θt-1)對(duì)參數(shù)θ的梯度記為gt;
步驟 4更新參數(shù)θ:θt=θt-1-α·gt;
步驟 5若參數(shù)θt不收斂則返回步驟2,若收斂則結(jié)束循環(huán)輸出參數(shù)θt.
算法 3 Adam 優(yōu)化算法
輸入學(xué)習(xí)率α=0.001、一階矩衰減系數(shù)β1=0.9、二階矩衰減系數(shù)β2=0.999;損失函數(shù)f(θ)、初始的參數(shù)向量θ0.
步驟 1初始化一階矩向量m0=0、初始化二階矩向量v0=0、初始化時(shí)間步長(zhǎng)t=0;
步驟 2更新時(shí)間步長(zhǎng):t=t+1;
步驟 3計(jì)算損失函數(shù)f(θt-1)對(duì)參數(shù)θ的梯度記為gt;
步驟 4計(jì)算梯度gt的一階矩,即梯度gt的期望:mt=β1·mt-1+(1-β1)·gt;
步驟 5計(jì)算梯度gt的二階矩,即梯度gt2的期望:
步驟 6對(duì)一階矩mt進(jìn)行矯正:
步驟 7對(duì)二階矩vt進(jìn)行矯正:
步驟 8更新參數(shù)
步驟 9若參數(shù)θt不收斂則返回步驟2,若收斂則結(jié)束循環(huán)輸出參數(shù)θt.
在算法2 中,SGD 方法的參數(shù)更新法則為:
通過式(9)可以看到SGD 的更新法則只是根據(jù)固定的學(xué)習(xí)率α在朝著梯度的方向上前進(jìn)一定的距離.但是要在梯度較大的地方使其更新得快一點(diǎn),顯然梯度更新會(huì)受學(xué)習(xí)率的約束使得SGD 不能滿足要求.
在算法3 中可以看到Adam 方法的參數(shù)更新法則為:
其中,式(10)是對(duì)于“動(dòng)量”思想的引入,表示了物體在梯度方向上受力,且在這個(gè)力的作用下,物體的速度增加這一物理法則.式(11)是對(duì)于“自適應(yīng)調(diào)整學(xué)習(xí)率”思想的引入,在參數(shù)更新時(shí)使學(xué)習(xí)率乘以就可以動(dòng)態(tài)地改變學(xué)習(xí)率,以達(dá)到調(diào)整學(xué)習(xí)率的目的.相較于SGD 算法中學(xué)習(xí)率固定不變,式(11)可以使損失函數(shù)的值更高效地向最小值移動(dòng).為了減小誤差,式(12)、(13)是對(duì)式(10)、(11)的校正,可以近似為對(duì)期望的無偏估計(jì).式(14)是最終的參數(shù)更新法則,為了保證分母不為零,在分母中加上一個(gè)極小的常數(shù)ε.
綜上所述,Adam 方法結(jié)合了Momentum 和RMSProp 方法的優(yōu)點(diǎn),更有效地解決了SGD 學(xué)習(xí)效率低的問題.故本文使用Adam 最優(yōu)化方法對(duì)深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,以區(qū)分是否發(fā)生DDoS攻擊.
1.3 DDoS 防御模塊當(dāng)上述熵值檢測(cè)模塊或異常檢測(cè)模塊輸出有DDoS 攻擊時(shí),控制器向交換機(jī)下發(fā)丟棄流表,并發(fā)出攻擊警報(bào).在SDN 網(wǎng)絡(luò)中,上述操作通過OpenFlow 流表實(shí)現(xiàn).具體流程:當(dāng)網(wǎng)絡(luò)流量要對(duì)服務(wù)器進(jìn)行訪問時(shí),該流量首先對(duì)邊緣交換機(jī)進(jìn)行流表匹配,若該邊緣交換機(jī)有匹配的流表項(xiàng),則將按照匹配流表項(xiàng)執(zhí)行.若邊緣交換機(jī)沒有匹配的流表項(xiàng),則交換機(jī)向控制器發(fā)出檢測(cè)指令,進(jìn)而執(zhí)行我們的檢測(cè)方案.對(duì)于檢測(cè)為攻擊的流量控制器將下發(fā)丟棄流表至交換機(jī).
2.1 實(shí)驗(yàn)設(shè)計(jì)實(shí)驗(yàn)在i5CPU,4 GB 內(nèi)存的Ubuntu 20.04 操作系統(tǒng)的計(jì)算機(jī)上運(yùn)行.采用Floodlight 控制器,Open vSwitch 交換機(jī),在Mininet 仿真軟件中構(gòu)建網(wǎng)絡(luò)拓樸圖進(jìn)行DDoS 攻擊模擬.拓?fù)鋱D采用樹形拓?fù)?,控制器下共掛有S1~S44 臺(tái)交換機(jī),其中S1~S3交換機(jī)下分別掛有10 臺(tái)主機(jī),S4交換機(jī)下掛16 臺(tái)主機(jī),S4交換機(jī)下的主機(jī)地址設(shè)為10.0.0.31~10.0.0.46.流量來自S1~S3 交換機(jī)下的主機(jī),對(duì)S4 交換機(jī)下的主機(jī)進(jìn)行訪問.當(dāng)攻擊時(shí)選擇地址為10.0.0.31 的主機(jī)為受害主機(jī).攻擊模擬采用經(jīng)典的DDoS 發(fā)起工具TFN,其中攻擊流量包括SYN flood、UDP flood 和ICMP flood 等.
2.2 閾值選擇文獻(xiàn)[20]表明,每秒超過10 000個(gè)攻擊包,即可實(shí)現(xiàn)高速率攻擊;每秒約1 000 個(gè)攻擊包只能達(dá)到全攻擊的60%,稱之為低速率DDoS 攻擊.為了比較,我們?cè)诘退俾蔇DoS 攻擊場(chǎng)景下分別測(cè)試了香農(nóng)熵和不同α值廣義熵在一個(gè)采樣周期內(nèi)正常流量和攻擊流量的平均熵值.
表2 展示正常流量的熵值、攻擊流量的熵值和熵差,熵差表示正常流量和攻擊流量之間的熵值之差.結(jié)果表明,在低速率DDoS 攻擊場(chǎng)景中,相較于香農(nóng)熵,廣義熵有更大的熵差,即廣義熵對(duì)攻擊流量更敏感,且在α=8 附近廣義熵有最大熵差.對(duì)表2 結(jié)果進(jìn)行歸一化表示,即對(duì)式(3)進(jìn)行熵值歸一化處理如下:
表2 低速率DDoS 攻擊檢測(cè)中的熵值比較Tab.2 Comparison of entropy values in low-rate DDoS attack detection
如圖3、4,在α=8 時(shí)差熵最大,可以更清晰地區(qū)分正常和攻擊流量,提高檢測(cè)靈敏度,增強(qiáng)檢測(cè)能力.故本文采用α=8 時(shí)的廣義熵進(jìn)行熵值檢測(cè),α=8 時(shí)一個(gè)采樣周期內(nèi)的熵值分布如圖5 所示.其中一個(gè)采樣周期為120 s,每隔10 s 計(jì)算一次數(shù)據(jù)包目的IP 的廣義熵值,具體計(jì)算如算法1 所示.根據(jù)圖5 中α=8 時(shí)的熵值分布,對(duì)算法1 中的閾值進(jìn)行設(shè)置.為減小誤報(bào)率,正常流量閾值選擇比正常流量最小熵值3.112 稍小的3.05,低速率攻擊流量的閾值選擇比低速率攻擊流量最大熵值2.687 稍大的2.75.
圖3 不同熵值計(jì)算法則的歸一化熵值Fig.3 Normalized entropy of different entropy calculation rules
圖4 不同熵值計(jì)算法則的差熵Fig.4 Difference entropy of different entropy calculation rules
圖5 一個(gè)采樣周期內(nèi)的熵值分布(α=8)Fig.5 Entropy distribution within a sampling period (α=8)
進(jìn)行熵值檢測(cè)時(shí),當(dāng)采樣窗口計(jì)算出的熵值大于3.05 時(shí)輸出為正常流量;小于2.75 時(shí)輸出為攻擊流量,且發(fā)出警報(bào)進(jìn)行響應(yīng)的防御措施.其它情況則認(rèn)為流量異常,發(fā)送至異常檢測(cè)模塊.
2.3 結(jié)果分析在深度學(xué)習(xí)中,通常采用檢測(cè)率DR(Detection Rate),準(zhǔn)確率AR(Accuracy Rate)和誤報(bào)率FR(False alarm Rate)3 個(gè)指標(biāo)對(duì)訓(xùn)練后的深度神經(jīng)網(wǎng)絡(luò)進(jìn)行評(píng)估.
實(shí)驗(yàn)使用的數(shù)據(jù)樣本一共10 000 個(gè).如表3所示,訓(xùn)練樣本占總樣本的80%,測(cè)試樣本占總樣本的20%.訓(xùn)練完成后的測(cè)試結(jié)果如表4 所示.
表3 神經(jīng)網(wǎng)絡(luò)訓(xùn)練和測(cè)試所用的數(shù)據(jù)樣本分布Tab.3 Data sample distributions for training and testing of neural network
表4 DNN 模型對(duì)DDoS 攻擊檢測(cè)結(jié)果Tab.4 Detection results of DDoS attacks by DNN model
最后在相同訓(xùn)練集和測(cè)試集下,對(duì)僅采用SVM 方法的文獻(xiàn)[7],與采用信息熵和不同機(jī)器學(xué)習(xí)方法相結(jié)合方案的文獻(xiàn)[9-11],以及僅采用DNN 方法的文獻(xiàn)[16]與本文方法進(jìn)行對(duì)比實(shí)驗(yàn).
觀察表5 發(fā)現(xiàn),本方案準(zhǔn)確率比僅采用SVM方法的文獻(xiàn)[7]高3.66%,且CPU 利用率比文獻(xiàn)[7]低5%;本方案的CPU 利用率與采用信息熵+機(jī)器學(xué)習(xí)方法的文獻(xiàn)[9-11]十分接近,但準(zhǔn)確率比文獻(xiàn)[9-11]高0.91%~1.23%;本方案的準(zhǔn)確率與僅采用DNN 方法的文獻(xiàn)[16]相差無幾,但CPU 利用率比文獻(xiàn)[16]低6%,這是因?yàn)閷?duì)于沒有匹配項(xiàng)的網(wǎng)絡(luò)流量,其先通過計(jì)算成本較低的熵值檢測(cè)模塊進(jìn)行檢測(cè),對(duì)熵值檢測(cè)模塊輸出的異常流量才進(jìn)行計(jì)算成本較高且檢測(cè)精度較高的異常檢測(cè)模塊進(jìn)行二次檢測(cè).
表5 不同檢測(cè)方案的檢測(cè)結(jié)果Tab.5 Test results of different detection schemes %
綜上所述,與傳統(tǒng)的機(jī)器學(xué)習(xí)、香農(nóng)熵檢測(cè)方案相比,本方案檢測(cè)成功率提高了0.91%~3.66%,且CPU 利用率降低了5%左右.
在本研究中,提出了一種廣義信息熵與深度學(xué)習(xí)模型相結(jié)合的DDoS 攻擊檢測(cè)方案.本方案主要解決SDN 環(huán)境下DDoS 攻擊的檢測(cè)問題.實(shí)驗(yàn)結(jié)果表明,本方案在提高檢測(cè)成功率的同時(shí)降低了CPU 的利用率.控制器作為SDN 網(wǎng)絡(luò)架構(gòu)的核心,建立實(shí)時(shí)高效的防御方案,有效保證控制器的正常運(yùn)行將會(huì)是未來工作的重點(diǎn).