侯澤鵬,趙 煒,王 堯,付 強(qiáng)
(國網(wǎng)河北省電力有限公司信息通信分公司,河北 石家莊 050000)
隨著網(wǎng)絡(luò)業(yè)務(wù)需求不斷擴(kuò)展,網(wǎng)絡(luò)資源管理呈現(xiàn)多元化趨勢,對網(wǎng)絡(luò)架構(gòu)的可擴(kuò)展性、可靠性以及可管理性提出了更高的要求。為應(yīng)對上述新的網(wǎng)絡(luò)架構(gòu)部署需求,軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)應(yīng)運(yùn)而生。SDN起源于2006年斯坦福大學(xué)的Clean State研究課題,其核心思想是控制平面與轉(zhuǎn)發(fā)平面相分離[1],克服了網(wǎng)絡(luò)基礎(chǔ)設(shè)施部署的局限性,具有開放性和可編程性的特點[2-3]。在SDN中,控制層可以實時掌握全局的網(wǎng)絡(luò)信息,并通過南向接口將轉(zhuǎn)發(fā)規(guī)則下發(fā)到交換機(jī)等一些基礎(chǔ)設(shè)備中,從而實現(xiàn)網(wǎng)絡(luò)的集中管控[4]。
分布式拒絕服務(wù)(Distributed Denial of Service,DDoS)攻擊是一種基于DoS的分布的大規(guī)模拒絕服務(wù)攻擊,主要為一種資源耗盡型攻擊。研究人員發(fā)現(xiàn)針對SDN 本身的DDoS攻擊可以分為兩類:針對SDN 控制器設(shè)備的Packet_in流量DDoS攻擊[5]、針對SDN 網(wǎng)絡(luò)設(shè)備的IP 數(shù)據(jù)包流量DDoS攻擊[6]。因此,研究針對SDN 的實時DDoS攻擊檢測與識別方法非常重要。到目前為止,針對SDN 環(huán)境下的DDoS攻擊檢測與識別方法總體分為基于統(tǒng)計學(xué)計算閾值的方法和基于機(jī)器學(xué)習(xí)分類的方法。
基于統(tǒng)計學(xué)的檢測方法是選取SDN 中若干流量特征,利用統(tǒng)計學(xué)對規(guī)定時間窗內(nèi)的特征量進(jìn)行計算并設(shè)定閾值,如果某特征量超過其設(shè)定的對應(yīng)閾值,則判斷為DDos攻擊。Shariq 等[7]人將IP是否存在于流表中、是否存在成功的TCP連接、協(xié)議類型、數(shù)據(jù)通信速率作為統(tǒng)計特征,對4個特征量進(jìn)行統(tǒng)計評分;同時采用自適應(yīng)閾值算法判定DDoS攻擊是否發(fā)生。ZHENG 等[8]利用R/S 分析算法計算網(wǎng)絡(luò)流量Hurst指數(shù),即用該指數(shù)反映網(wǎng)絡(luò)流量的相似性并確定閾值。當(dāng)發(fā)生DDoS攻擊時,網(wǎng)絡(luò)流量的Hurst指數(shù)會出現(xiàn)向上或向下偏離閾值。但是該方法的檢測率和誤報率有待提高。Xiang You等[9]將Packet_in流量作為特征量,利用信息熵計算該特征量的離散程度,如果超過閾值,則判定為DDoS 攻擊。該方法普適性較差,不同網(wǎng)絡(luò)環(huán)境下及同一網(wǎng)絡(luò)環(huán)境下不同時刻的閾值變化較大。但是以上使用的各種基于熵的統(tǒng)計方法對于小流量的檢測效果不夠明顯。
基于機(jī)器學(xué)習(xí)的檢測方法是選取SDN 中若干流量特征,并利用機(jī)器學(xué)習(xí)的方法對惡意流量進(jìn)行判別,目前被廣泛應(yīng)用的包括SOM、SVM、神經(jīng)網(wǎng)絡(luò)等算法。Jin Ye 等[10]首先利用Onp_Flow_Stats收集各流表和各端口的統(tǒng)計信息,然后根據(jù)統(tǒng)計信息計算源IP 和源端口的增長率,并同時計算流數(shù)據(jù)包數(shù)量、字節(jié)量標(biāo)準(zhǔn)差和可配對比例,最后以SVM 算法作為分類依據(jù)判定DDoS 攻擊。但是該方法忽略了匹配為通配符的情況,導(dǎo)致計算結(jié)果不準(zhǔn)確。姚琳元等[11]利用神經(jīng)網(wǎng)絡(luò)檢測方法,對流量中的七元組進(jìn)行特征提取并開展機(jī)器訓(xùn)練,最終使其具有檢測DDoS 的能力。李曼等[12]設(shè)計了一種基于XGBoot的DDoS攻擊檢測方法,該方法使用XGBoot對流量進(jìn)行建模、特征提取和訓(xùn)練。但是該算法參數(shù)過多,耗費(fèi)過多的控制器計算資源。
綜上所述,針對目前SDN 環(huán)境下DDoS攻擊檢測方法準(zhǔn)確率較低、額外負(fù)載較高的問題,本文提出一種SDN 環(huán)境下基于Renyi交叉熵和RMSprop算法的DDoS 攻擊檢測方法。該方法以輕量化的流量采集方式,引入雙向流比例作為第一層檢測方法。如果檢測發(fā)現(xiàn)異常,利用Renyi交叉熵計算當(dāng)前網(wǎng)絡(luò)窗口流量特征熵值,同時利用RMSprop算法計算當(dāng)前網(wǎng)絡(luò)窗口流量特征熵值的閾值,通過比較熵值與閾值的大小識別DDoS攻擊是否發(fā)生。
SDN 網(wǎng)絡(luò)架構(gòu)由上到下包含三層:應(yīng)用層、控制層和轉(zhuǎn)發(fā)層。在應(yīng)用層上按照API標(biāo)準(zhǔn)開發(fā)應(yīng)用程序;控制層是SDN 的核心層,其按照Openflow 協(xié)議規(guī)定的通信規(guī)則,以流表項的形式將轉(zhuǎn)發(fā)規(guī)則下發(fā)給交換機(jī)和路由器,并對網(wǎng)絡(luò)的拓?fù)浜蜖顟B(tài)信息進(jìn)行維護(hù)和管理;轉(zhuǎn)發(fā)層只負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)發(fā)和狀態(tài)收集,實現(xiàn)網(wǎng)絡(luò)流量的靈活控制[13]。
1948年,香農(nóng)在信息論中引入信息熵,定量地表征一個隨機(jī)變量x的隨機(jī)性及取值的分散程度,其定義為
式中:H(x)為信息熵;p(x i)為隨機(jī)變量x=x i出現(xiàn)的概率,p(x i)≥0且;n為隨機(jī)變量x可能出現(xiàn)的所有取值種類[14]。
根據(jù)式(1)的相關(guān)定義,如果假設(shè)有一個隨機(jī)變量存在兩種概率分布p,q,其中p為真實分布,q為非真實分布。按照真實分布p,衡量計算非真實分布q所需要的編碼長度的期望,得到交叉熵H(p,q),其定義為
式中:q(y i)為隨機(jī)變量x=y i出現(xiàn)的概率,q(y i)≥0且
Renyi熵是更早出現(xiàn)的一種熵運(yùn)算,其定義為
式中:α表示階數(shù),取值為α≥0 且α≠1,
將公式(2)、(3)相結(jié)合,可以得到Renyi交叉熵,其定義為
本模型采用RMSprop(Root Mean Square Prop,RMSprop)機(jī)器學(xué)習(xí)算法動態(tài)計算SDN 網(wǎng)絡(luò)特征量閾值,RMSprop是AdaGrad算法的改進(jìn)型算法。AdaGrad算法中累計梯度的平方會導(dǎo)致學(xué)習(xí)率過早衰弱,訓(xùn)練過早結(jié)束,為了解決該問題,RMSprop算法僅僅累計過去窗口大小的梯度,采用指數(shù)加權(quán)平均法
式中:θw為當(dāng)前網(wǎng)絡(luò)窗口w與前w-1網(wǎng)絡(luò)窗口平均狀態(tài)值之間的Renyi交叉熵閾值;g w為窗口w處Renyi交叉熵變化梯度值;σ為學(xué)習(xí)率,默認(rèn)值為0.001;為了避免分母為0,增加很小的參數(shù)ε,默認(rèn)值為e-6[15];S w為狀態(tài)變量,是指數(shù)加權(quán)平均值,其用來自動調(diào)整參數(shù)的學(xué)習(xí)效率,使得閾值計算過程中收斂速度更快,RMSProp算法將梯度按元素平方做指數(shù)加權(quán)移動平均計算狀態(tài)變量。
式中:S w-1為前w-1網(wǎng)絡(luò)窗口的狀態(tài)變量;γ為超參數(shù),取值為0≤γ≤1;Hα為當(dāng)前網(wǎng)絡(luò)窗口w與前w-1網(wǎng)絡(luò)窗口狀態(tài)平均值之間的Renyi交叉熵值。
本文的雙層級DDoS識別模型由兩層模塊組成:攻擊檢測模塊和攻擊識別模塊。其中攻擊檢測模塊作為常態(tài)化監(jiān)視手段,檢測效率快、算法簡單、占用資源少,減少了耗費(fèi)過多的網(wǎng)絡(luò)設(shè)備、控制器資源和對正常業(yè)務(wù)運(yùn)行的影響,對網(wǎng)絡(luò)設(shè)備和控制器開展全天候?qū)崟r檢測;當(dāng)攻擊檢測模塊發(fā)現(xiàn)異常,攻擊識別模塊對網(wǎng)絡(luò)進(jìn)行精準(zhǔn)化、深度化的狀態(tài)檢測,更好提高DDoS識別的準(zhǔn)確性。
一個正常的網(wǎng)絡(luò)訪問,如果節(jié)點有越多的請求包,那么就會有越多的應(yīng)答包從該節(jié)點返回。在正常情況下網(wǎng)絡(luò)設(shè)備中輸入與輸出的數(shù)據(jù)包吞吐量比是一個常數(shù)。然而當(dāng)發(fā)生DDoS 攻擊時,攻擊者發(fā)送大量的數(shù)據(jù)包,但受害者卻無法提供服務(wù)的響應(yīng)。這種情況下輸入、輸出流量就不成一定的比例,從而使輸出/輸入比值下降[16]。
根據(jù)歷史數(shù)據(jù)包流量值確定流量輸入/輸出比閾值,其包括網(wǎng)絡(luò)設(shè)備IP 流量輸入/輸出比閾值K1和控制器設(shè)備Packet-in流量輸入/輸出比閾值K2。然后判斷網(wǎng)絡(luò)設(shè)備IP流量輸入/輸出比是否大于閾值K1,如果大于,則確定檢測結(jié)果為網(wǎng)絡(luò)設(shè)備異常;判斷控制器Packet-in流量輸入/輸出比是否大于閾值K2,如果大于,則確定檢測結(jié)果為控制器設(shè)備異常。任何一種設(shè)備出現(xiàn)異常,則觸發(fā)攻擊識別模塊。
攻擊識別模塊對網(wǎng)絡(luò)進(jìn)行精準(zhǔn)化、深度化的狀態(tài)檢測。楊志[17]等人通過仿真實驗得到Smurf、UDP flood、HTTP flood、SYN flood攻擊都出現(xiàn)目的IP熵值異常?;谏鲜鲅芯砍晒?本模塊引入基于源IP熵和目的IP熵的Renyi交叉熵識別方法。
3.2.1 Renyi交叉熵計算
由于熵的計算是以窗口為單位[18],首先生成當(dāng)前窗口流量中不同源IP和不同目的IP集合,并分別記作so_ip和de_ip。根據(jù)式(1)香農(nóng)熵,計算得到不同源IP 和不同目的IP 熵值H(so_ip)和H(de_ip)。此時定義當(dāng)前窗口的網(wǎng)絡(luò)狀態(tài)為
對V(w)進(jìn)行平均值求解,得到(w),如式(8)所示。
為了得到當(dāng)前窗口w的網(wǎng)絡(luò)狀態(tài),需要與w-1窗口值進(jìn)行比較,根據(jù)式(8)得到w-1窗口平均值,如式(9)所示。
根據(jù)式(4)Renyi交叉熵,得到當(dāng)前窗口w的網(wǎng)絡(luò)狀態(tài)熵值為,如式(10)所示。
3.2.2 閾值計算
按照公式(6),遞歸計算得到各窗口的狀態(tài)變量計算公式
式中:S0作為梯度累積變量,初始化為0。
RMSprop算法采用小批量隨機(jī)梯度下降方式,每輪迭代采樣最近1/(1-γ)個窗口的小批量隨機(jī)梯度平方項的加權(quán)平均組成一個小批量?w,然后利用?w計算窗口w處的狀態(tài)變量,?=1/(1-γ)表示批量大小,如果w<|?|,則根據(jù)式(11)計算S w,如果w>|?|時,S w最終表示為
將3.2.1中(w-1)和V(w)定義為一組二維向量x=(w-1),V(w)),并且令f(x)=Hα((w-1),V(w)),采用RMSprop算法計算當(dāng)前窗口f(x)的動態(tài)閾值θw;根據(jù)式(10)得到當(dāng)前窗口的預(yù)測熵值Hα((w-1),V(w))。如當(dāng)前窗口的熵值大于預(yù)測熵值,則認(rèn)為該窗口為異常窗口;否則判定為正常窗口,將結(jié)果反饋給攻擊檢測模塊,并調(diào)整檢測模塊對應(yīng)閾值K1或K2。
本模型的實驗環(huán)境基于Vmware 安裝的Ubuntu 16.04 LTS 虛擬機(jī)構(gòu)建,并通過MiniNet虛擬化網(wǎng)絡(luò)仿真工具模擬搭建SDN 網(wǎng)絡(luò)環(huán)境,實驗構(gòu)造的網(wǎng)絡(luò)拓?fù)湟妶D1。利用MiniNet中OVS定義SDN 網(wǎng)絡(luò)交換機(jī),選擇Floodlight作為SDN網(wǎng)絡(luò)控制器。該實驗網(wǎng)絡(luò)包含11臺關(guān)鍵OVS交換機(jī)和18臺主機(jī),其中S10、S11為核心層交換機(jī),S7,S8,S9為匯聚層交換機(jī),S1-S6為接入層交換機(jī)。本實驗使用Scapy作為流量生成工具,模擬偽造源IP和采用真實IP的應(yīng)用層DDoS攻擊,通過生成不同速率和比例的攻擊流量,并將上述攻擊流量與正常流量混合發(fā)送。
圖1 SDN實驗拓?fù)?/p>
4.2.1 Renyi交叉熵階數(shù)α 的設(shè)置
在Renyi交叉熵中,階數(shù)α是一個非常關(guān)鍵的參數(shù),其決定著隨機(jī)變量各樣本之間的差距,選取一個大小合適的α使得檢測系統(tǒng)可以更有效地區(qū)分正常流量和攻擊流量[19]。分別按照以下類別模擬不同DDoS攻擊網(wǎng)絡(luò)環(huán)境:1)偽造源IP 攻擊流量、采用真實IP的應(yīng)用層攻擊流量、正常流量比為1∶1∶1;2)偽造源IP攻擊流量、正常流量比為1∶1;3)采用真實IP的應(yīng)用層攻擊流量、正常流量比為1∶1,并通過改變α值,分別計算上述三種網(wǎng)絡(luò)環(huán)境下Renyi交叉熵值H1、H2、H3,以及不存在DDoS攻擊時網(wǎng)絡(luò)狀態(tài)Renyi交叉熵值HN。并以階數(shù)α為橫坐標(biāo),Renyi交叉熵差值為縱坐標(biāo),繪制|HN-H1|,|HN-H2|,|HN-H3|變化曲線如圖2所示。
圖2 Renyi交叉熵差隨α 的變化
隨著α值的不斷增大,Renyi交叉熵差不斷增大,且當(dāng)α=7時差值最大。Renyi交叉熵差越大表明正常網(wǎng)絡(luò)與發(fā)生DDoS攻擊時網(wǎng)絡(luò)差別越大,更能準(zhǔn)確地判斷網(wǎng)絡(luò)是否發(fā)生DDoS攻擊。
4.2.2 RMSprop中參數(shù)γ 的設(shè)置
RMSprop作為一個深度學(xué)習(xí)算法,超參數(shù)γ作為衰減率,它決定著閾值計算的效率,需要通過枚舉來確定參數(shù)值。在保證合法流量大小不變的情況下,攻擊流量中偽造源IP 攻擊流量和采用真實IP的應(yīng)用層攻擊流量比均為1∶1。依次改變RMSprop中超參數(shù)γ的值,分別為0.1,0.5,0.9,統(tǒng)計10個窗口內(nèi)α=7的Renyi交叉熵值與閾值的變化情況。
γ取各值條件下窗口Renyi交叉熵值與閾值比較情況見圖3。當(dāng)γ=0.1時,閾值均大于Renyi交叉熵值,無法檢測出DDoS攻擊;當(dāng)γ=0.5時,在攻擊早期4個窗口閾值均大于Renyi交叉熵值,后期才出現(xiàn)閾值均小于Renyi交叉熵值,攻擊檢測實時性較差;當(dāng)γ=0.9時,所有窗口閾值均小于Renyi交叉熵值,初始攻擊階段便可以實時準(zhǔn)確檢測,所以為了更精確地計算網(wǎng)絡(luò)狀態(tài)閾值,本文將γ設(shè)置為0.9。
圖3 DDoS攻擊的熵值與閾值變化
本文利用RYU REST API,將DDoS識別模型部署到SDN 控制器中。
4.3.1 SDN 交換機(jī)雙向流比例分析
為了測試SDN 交換機(jī)雙向流比例,進(jìn)行了如下實驗。控制器通過發(fā)送Onp_Flow_Stats消息包獲取交換機(jī)各物理端口的進(jìn)出流量統(tǒng)計信息。
按照攻擊強(qiáng)度30%,40%,50%進(jìn)行實驗(攻擊強(qiáng)度表示攻擊流量占總流量的比例),前3個窗口為正常狀態(tài),中間10個窗口為攻擊狀態(tài),后3個窗口恢復(fù)正常狀態(tài)。實驗結(jié)果見圖4。
圖4 DDoS攻擊時出/進(jìn)交換機(jī)流量比例
由以上實驗可得,在1-3窗口,出/進(jìn)交換機(jī)流量比例處于穩(wěn)定狀態(tài),此時比例大約為1/1。啟動攻擊后,出/進(jìn)交換機(jī)流量比例持續(xù)下降,而且攻擊強(qiáng)度越大,比例下降越多。根據(jù)實驗結(jié)果可知,出/進(jìn)交換機(jī)流量比例可以作為是否遭受DDoS攻擊的檢測階段特征。出/進(jìn)交換機(jī)流量比例變化設(shè)置閾值K,當(dāng)出/進(jìn)交換機(jī)流量比例小于K,觸發(fā)攻擊識別模塊。
4.3.2 SDN 網(wǎng)絡(luò)中Renyi交叉熵值分析
根據(jù)3.2.1中定義的Renyi交叉熵計算方法,按照4.2.1中確定的Renyi交叉熵α參數(shù),計算不同攻擊強(qiáng)度下Renyi交叉熵值與各類信息熵值,并進(jìn)行對比分析。每類攻擊強(qiáng)度設(shè)置6組實驗,每組實驗統(tǒng)計16 個窗口值,計算6 次熵值的平均值。實驗結(jié)果如表1所示。
表1 不同攻擊強(qiáng)度下SDN網(wǎng)絡(luò)中各熵值比較
由表1實驗可知,本模型引入Renyi交叉熵值度量標(biāo)準(zhǔn)與其他熵值相比,增大了正常流量與攻擊流量之間的信息敏感距離。特別對于低速DDoS攻擊,攻擊速度與強(qiáng)度較弱,成倍放大攻擊特征信息,提升攻擊判斷準(zhǔn)確性,并迅速發(fā)出攻擊告警。
同時為了展示DDoS攻擊下,本模型的時間開銷低、識別成功率高特點,每次攻擊20個窗口,持續(xù)攻擊20次,選取本文引用文獻(xiàn)中較為理想的5個方法,計算檢測識別成功率和平均耗時,結(jié)果如表2和表3所示。
表2 檢測識別成功率對比 %
表3 檢測識別耗時對比 ms
表2實驗結(jié)果顯示本模型采用的基于Renyi交叉熵的雙層級檢測與識別方法具有最高檢測識別成功率,與目前最優(yōu)文獻(xiàn)[7]方法相比,本模型識別成功率提升6%左右,原因分析如下。
1)該模型兼顧Renyi熵與交叉熵的雙重優(yōu)點,有效擴(kuò)大正常流量與異常流量數(shù)據(jù)間的差異性,對較弱攻擊檢測效果明顯提升。
2)利用RMSprop算法,按照當(dāng)前實際數(shù)值與歷史數(shù)值平滑動態(tài)計算當(dāng)前閾值,可以吸收瞬時突變,進(jìn)一步提升檢測的準(zhǔn)確性。表3實驗結(jié)果顯示本模型的檢測識別耗時最短,與目前最優(yōu)文獻(xiàn)9方法相比,不同攻擊類型及攻擊強(qiáng)度下平均檢測識別耗時降低15%左右。
3)該模型采用雙層結(jié)構(gòu)模型,檢測模塊可以過濾掉大部分干擾流量,從而有效降低識別模塊計算負(fù)載;RMSprop算法計算閾值的收斂速度更快,可以在最短的時間內(nèi)得到窗口閾值。
為了解決SDN 面臨的DDoS攻擊威脅,使其在遭受DDoS攻擊時,能夠第一時間被識別,本文通過分析總結(jié)目前SDN 環(huán)境下DDoS攻擊識別方法存在的問題,從提高攻擊識別準(zhǔn)確性、實時性和降低設(shè)備日常檢測負(fù)載等方面,提出基于Renyi交叉熵和RMSprop算法的雙層級DDoS攻擊識別模型。通過仿真實驗可以得到,與目前最優(yōu)的檢測識別模型相比,該模型平均攻擊檢測識別耗時降低15%,成功率提高6%,大大提高了SDN 環(huán)境下DDoS攻擊檢測識別效率。
隨著對SDN 研究的深入,除了本文提出的兩類DDoS攻擊外,逐漸出現(xiàn)一些巧妙的DDoS攻擊手段,如利用流規(guī)則Duration的慢速攻擊手段,在每個流規(guī)則中都定義了一個軟性存活時間,如果在定義的時間段內(nèi)沒有匹配的數(shù)據(jù)包,則流規(guī)則自動刪除[19]。攻擊者利用該規(guī)則,在軟存活時間截止前發(fā)送一個數(shù)據(jù)包,從而長期維持對應(yīng)流規(guī)則,使得流表無法得到更新,惡意消耗流表緩存。此外,還有針對Open Flow 處理機(jī)制漏洞Buffered-Packet的攻擊[20]都會造成SDN 的拒絕服務(wù)。未來將繼續(xù)完善本文檢測識別模型,以適應(yīng)更加多元化的DDoS攻擊。