劉 濤 尹 勝
(西安科技大學(xué)通信與信息工程學(xué)院 陜西 西安 710054)
移動(dòng)設(shè)備數(shù)量激增導(dǎo)致網(wǎng)絡(luò)規(guī)模不斷壯大,研究學(xué)者們提出軟件定義網(wǎng)絡(luò)(Software Define Network,SDN)解決方案緩解網(wǎng)絡(luò)壓力[1]。盡管SDN有很多優(yōu)點(diǎn),但仍有一些問(wèn)題需要解決。在SDN網(wǎng)絡(luò)中,控制器遭受故障可能對(duì)整個(gè)網(wǎng)絡(luò)造成惡劣影響,但SDN網(wǎng)絡(luò)易被攻擊的控制節(jié)點(diǎn)數(shù)要比傳統(tǒng)網(wǎng)絡(luò)少兩個(gè)數(shù)量級(jí)[2-3],因此可以將抵御攻擊的目標(biāo)放在重要的節(jié)點(diǎn)上,從而把惡意攻擊阻止在網(wǎng)絡(luò)外。
針對(duì)SDN中的DDoS攻擊,本文提出一種分階段多層次的DDoS攻擊識(shí)別模型。包含基于CPU使用率觸發(fā)檢測(cè)模塊、目的IP交叉熵值、PACKET_IN數(shù)據(jù)包的預(yù)警檢測(cè)模塊和流量特征識(shí)別模塊。引入交換機(jī)CPU使用率的初檢方法,期望在降低常態(tài)化監(jiān)控負(fù)荷的同時(shí),能夠及時(shí)發(fā)現(xiàn)異常;引入交叉熵值的知識(shí),對(duì)正常與異常流量特征分布上的相似性進(jìn)行定量分析,驗(yàn)證是否能提高靈敏度,降低漏報(bào)率和誤報(bào)率,以期提升攻擊識(shí)別檢測(cè)效果。
近年來(lái),學(xué)者們對(duì)SDN中的DDoS攻擊識(shí)別展開(kāi)了相關(guān)研究。Giotis等[4]提出在SDN中提取流特征信息,采用信息熵的算法進(jìn)行檢測(cè)。Basicevic等[5]引入廣義熵值區(qū)分異常攻擊,但計(jì)算負(fù)荷也隨之上升。Mousavi等[6]對(duì)目的IP信息熵值進(jìn)行計(jì)算,并與指定閾值對(duì)比判斷網(wǎng)絡(luò)是否正在遭受攻擊。Ma等[7]采用源IP和目的IP的信息熵來(lái)檢測(cè)攻擊流量,Jun等[8]在此基礎(chǔ)上添加了對(duì)數(shù)據(jù)包速度的監(jiān)控檢測(cè)DDoS攻擊。但單一的屬性檢測(cè)對(duì)攻擊的覆蓋面不夠廣,且信息熵值只能表明兩種分布分散程度的差異性,無(wú)法體現(xiàn)相似性。
武澤慧等[9]提出在SDN中對(duì)交換機(jī)進(jìn)行吞吐率檢測(cè),當(dāng)大于指定閾值時(shí)報(bào)警,觸發(fā)交換機(jī)洗牌算法篩選正常流量,但監(jiān)控負(fù)荷重。姚琳元等[10]使用基于神經(jīng)網(wǎng)絡(luò)的檢測(cè)方法,對(duì)流量的七元組特征進(jìn)行提取,通過(guò)對(duì)特征進(jìn)行分類(lèi)處理來(lái)檢測(cè)DDoS攻擊。Yan等[11]將流表項(xiàng)的部分特征進(jìn)行收集,利用模糊綜合評(píng)判方法進(jìn)行模糊評(píng)價(jià),但該方法初始最優(yōu)權(quán)重確定困難,且自適應(yīng)能力較差。
1948年,香農(nóng)在信息論中引入信息熵(Information Entropy),定量地表征一個(gè)隨機(jī)變量X的隨機(jī)性及取值的分散程度。變量的分散程度越高、隨機(jī)性越大,則信息熵值越大。其計(jì)算公式定義為:
(1)
式中:X表示隨機(jī)變量,其取值集合域?yàn)閧x1,x2,…,xn};取值xi的概率(或頻率)為p(xi),i=1,2,…,n。
根據(jù)式(1)的相關(guān)定義,可進(jìn)一步給出相對(duì)熵的概念,計(jì)算公式定義如下:
(2)
相對(duì)熵又被稱(chēng)為KL散度,可體現(xiàn)不同概率分布p和q的差異性,定量分析相似程度。當(dāng)差別大時(shí),相對(duì)熵值增加;如果兩個(gè)分布相同,則相對(duì)熵為零。
為了簡(jiǎn)化計(jì)算,對(duì)式(2)變形可得:
(3)
式(3)第一項(xiàng)為分布p(x)信息熵的相反數(shù),定義式(3)的第二項(xiàng)為交叉熵:
(4)
當(dāng)H(p(x))為常量時(shí)(即p(x)為給定的真實(shí)分布),交叉熵的值等于相對(duì)熵的值與給定的真實(shí)分布的信息熵值相加。交叉熵H(p,q)等價(jià)于KL散度DKL(p‖q)。
在攻擊識(shí)別過(guò)程中,需區(qū)分待檢異常流量和正常流量的差異。KL散度值DKL(p(正常)‖p(待檢異常))可衡量正常流量分布p(正常)與待檢異常流量分布p(待檢異常)的相似性,相比信息熵值得出分布分散程度的差異,其精準(zhǔn)度更高,可更好地識(shí)別異常攻擊流量。因?yàn)榻徊骒氐葍r(jià)于KL散度,為了簡(jiǎn)化計(jì)算量,本文采用交叉熵。
在SDN網(wǎng)絡(luò)中,攻擊者制造大量網(wǎng)絡(luò)設(shè)備流表項(xiàng)無(wú)法匹配的高流量偽造數(shù)據(jù),設(shè)備緩存未匹配分組機(jī)制,嚴(yán)重消耗設(shè)備的CPU資源及帶寬;同時(shí)大量的PACKET_IN數(shù)據(jù)包導(dǎo)致控制器計(jì)算資源緊張。攻擊者不需知道控制器的位置就可發(fā)動(dòng)攻擊,任何可產(chǎn)生PACKET_IN數(shù)據(jù)包的方式都可作為攻擊控制器的手段。攻擊特點(diǎn)分析如下:
1) 分布式:發(fā)起的攻擊流量的來(lái)源由大量的主機(jī)組成,同時(shí)還偽造源IP地址、隨機(jī)偽造源端口等參數(shù)構(gòu)成無(wú)用的數(shù)據(jù)包,所以攻擊流量分組中的來(lái)源是分散的。
2) 無(wú)規(guī)律:在進(jìn)行攻擊時(shí)使用常見(jiàn)的協(xié)議和服務(wù),導(dǎo)致從協(xié)議和服務(wù)的類(lèi)型上很難對(duì)攻擊進(jìn)行區(qū)分。且攻擊數(shù)據(jù)包的一些信息都是經(jīng)過(guò)偽造的,對(duì)攻擊地址確定困難。
3) 多樣性:不論是利用協(xié)議漏洞、偽造數(shù)據(jù)流量等,任何產(chǎn)生PACKET_IN數(shù)據(jù)包的形式都可發(fā)動(dòng)攻擊,從而對(duì)目標(biāo)所處的網(wǎng)絡(luò)造成擁堵直至癱瘓。攻擊形式可能是一對(duì)一映射、一對(duì)多映射、多對(duì)一映射、多對(duì)多映射等。
3.2.1觸發(fā)及預(yù)警階段檢測(cè)特征
1) SDN交換機(jī)CPU使用率:攻擊者偽造攻擊流量或占用帶寬的DDoS攻擊,網(wǎng)絡(luò)設(shè)備的CPU使用率會(huì)有變化。與傳統(tǒng)網(wǎng)絡(luò)不同,SDN交換機(jī)只負(fù)責(zé)轉(zhuǎn)發(fā)功能,因此具有豐富的計(jì)算能力用于CPU使用率監(jiān)控。
2) PACKET_IN生成速率:對(duì)異常交換機(jī)PACKET_IN數(shù)據(jù)包監(jiān)控可確定目標(biāo)交換機(jī)是否遭受攻擊,在遭受攻擊時(shí),設(shè)備中PACKET_IN數(shù)據(jù)包生成速度會(huì)上升。
3)目的IP交叉熵值:如3.1節(jié)分析,若發(fā)生了DDoS攻擊,攻擊者產(chǎn)生的異常流量的特征分布情況與正常流量會(huì)有一些差異,根據(jù)第2節(jié)可知,交叉熵可以靈敏地檢測(cè)到正常流量分布及異常待檢分布的相似性,區(qū)分異常流量。
3.2.2攻擊識(shí)別階段特征
1) 流數(shù)據(jù)包平均長(zhǎng)度:攻擊者發(fā)出的流量數(shù)據(jù),是為了耗盡攻擊目標(biāo)的資源處理能力,而不是請(qǐng)求服務(wù),所以攻擊流量的數(shù)據(jù)包平均長(zhǎng)度較短。而針對(duì)帶寬的攻擊,數(shù)據(jù)包的平均長(zhǎng)度較長(zhǎng)。
2) 流數(shù)據(jù)包數(shù)量均值:與數(shù)據(jù)包平均長(zhǎng)度特征類(lèi)似,單流數(shù)據(jù)包的數(shù)量較少。若是針對(duì)流量帶寬的攻擊,則每個(gè)流中數(shù)據(jù)包數(shù)量將會(huì)增加。
3) 雙向流的比例:流量傳輸是為獲取或提供服務(wù),數(shù)據(jù)流的交互請(qǐng)求是雙向的。而攻擊流量不具備交互性,攻擊者的地址A和攻擊目標(biāo)的地址B之間的流量傳輸呈現(xiàn)單向性。
4) 協(xié)議的交叉熵值:當(dāng)攻擊者注入攻擊流量時(shí),很難兼顧到攻擊目標(biāo)網(wǎng)絡(luò)中不同協(xié)議的數(shù)據(jù)包比例,所以協(xié)議的交叉熵值可體現(xiàn)正常流量協(xié)議分布與異常流量協(xié)議分布的相似性。
5) 目的端口的交叉熵值:與協(xié)議的交叉熵值類(lèi)似的表現(xiàn),目的端口的交叉熵值可作為檢測(cè)兩種流量分布的相似性的一個(gè)特征。
6) 目的IP的交叉熵值:如3.2.1節(jié)介紹,目的IP的交叉熵值可作為識(shí)別攻擊流量的一個(gè)特征。
本文提出常態(tài)化監(jiān)測(cè)交換機(jī)設(shè)備的CPU使用率,與傳統(tǒng)網(wǎng)絡(luò)不同,SDN交換機(jī)只負(fù)責(zé)轉(zhuǎn)發(fā)功能,因此具有豐富的計(jì)算能力可用于監(jiān)控;當(dāng)發(fā)現(xiàn)異常,通過(guò)進(jìn)一步對(duì)PACKET_IN數(shù)據(jù)包及目的IP交叉熵值進(jìn)行分析,對(duì)網(wǎng)絡(luò)中是否遭受攻擊進(jìn)行預(yù)警;最后通過(guò)對(duì)流量中的特征進(jìn)行分析,判斷當(dāng)前是否遭受DDoS攻擊。攻擊檢測(cè)方案如圖1所示。
圖1 DDoS攻擊檢測(cè)方案
3.3.1觸發(fā)檢測(cè)階段
SDN設(shè)備的CPU使用率可反映轉(zhuǎn)發(fā)進(jìn)程負(fù)載情況。當(dāng)網(wǎng)絡(luò)正常,CPU使用率處于穩(wěn)定的值;當(dāng)受到攻擊行為,則CPU使用率將上升。設(shè)定閾值R,當(dāng)CPU增量值高于R,滿足觸發(fā)條件。
若長(zhǎng)時(shí)間處于滿負(fù)荷情況,轉(zhuǎn)發(fā)進(jìn)程則無(wú)法及時(shí)處理流量請(qǐng)求而造成丟包現(xiàn)象。設(shè)定警戒線Z,CPU使用率達(dá)到警戒線Z時(shí),觸發(fā)緊急狀態(tài),直接進(jìn)入攻擊識(shí)別模塊,預(yù)防高流量攻擊。閾值R及警戒線Z根據(jù)具體的網(wǎng)絡(luò)情況進(jìn)行相應(yīng)的調(diào)整。
本文將SDN交換機(jī)轉(zhuǎn)發(fā)進(jìn)程的CPU使用率作為觸發(fā)特征,不需要過(guò)多的計(jì)算負(fù)荷,且能有效檢測(cè)到異常情況,以較低的監(jiān)控成本來(lái)監(jiān)測(cè)網(wǎng)絡(luò)。
3.3.2預(yù)警檢測(cè)階段
引起CPU使用率變化的不都是攻擊行為,誤警率較高,所以需進(jìn)一步對(duì)PACKET_IN數(shù)據(jù)包及網(wǎng)絡(luò)流量中目的IP的交叉熵進(jìn)行檢測(cè)分析。
對(duì)觸發(fā)異常交換機(jī)的PACKET_IN數(shù)據(jù)包進(jìn)行統(tǒng)計(jì),計(jì)算每秒鐘發(fā)出的PACKET_IN數(shù)據(jù)包數(shù)。若單位時(shí)間數(shù)據(jù)包數(shù)變化值達(dá)到閾值Q,則發(fā)出預(yù)警。
同時(shí)收集異常交換機(jī)的流量數(shù)據(jù),設(shè)置檢測(cè)窗口n,計(jì)算流量中目的IP交叉熵值,當(dāng)其變化差值大于閾值P,進(jìn)行攻擊預(yù)警。由第2節(jié)可知,待檢流量與正常流量的相似性越低,其交叉熵值越大。若后期檢測(cè)結(jié)果為正常,則對(duì)閾值P、Q進(jìn)行反饋調(diào)整,提升檢測(cè)靈敏度。
3.3.3攻擊識(shí)別階段
當(dāng)攻擊預(yù)警之后,啟動(dòng)攻擊識(shí)別模塊。本階段通過(guò)收集異常交換機(jī)的數(shù)據(jù)分組信息及流表項(xiàng)信息,對(duì)流量進(jìn)行特征提取,得到攻擊識(shí)別所需要的6元組特征,進(jìn)行攻擊流量識(shí)別,如果發(fā)現(xiàn)攻擊行為,生成檢測(cè)報(bào)告。
實(shí)驗(yàn)在基于i5 CPU,4 GB內(nèi)存計(jì)算機(jī)的Ubuntu 16.04系統(tǒng)上進(jìn)行,使用Mininet仿真軟件搭建SDN實(shí)驗(yàn)網(wǎng)絡(luò)拓?fù)?,用OpenDaylight控制器作為SDN網(wǎng)絡(luò)的控制器,使用Open vSwitch交換機(jī)作為SDN網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備。網(wǎng)絡(luò)拓?fù)淙鐖D2所示。
圖2 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖
拓?fù)渲泄灿?臺(tái)OVS交換機(jī)和16臺(tái)主機(jī),s4交換機(jī)中連接10臺(tái)主機(jī)。為了盡可能模擬真實(shí)的網(wǎng)絡(luò)流量,使用Mininet中的iperf工具編程以隨機(jī)流量模型生成正常流量,各主機(jī)向另一任意主機(jī)以隨機(jī)的方式建立連接,連接帶寬設(shè)置為0.5 MB。
實(shí)驗(yàn)時(shí)選擇主機(jī)h16作為受害主機(jī),采用hping3作為產(chǎn)生異常流量的攻擊工具,其可生成SYNflood、UDPflood、ICMPflood等一系列攻擊流量。使用wireshark工具統(tǒng)計(jì)收集流量,并用tshark做相應(yīng)的數(shù)據(jù)處理后,使用開(kāi)源軟件weka對(duì)統(tǒng)計(jì)流量進(jìn)行處理分析。
4.2.1SDN交換機(jī)CPU使用率分析
為了測(cè)試交換機(jī)CPU使用率檢測(cè)的有效性,本文進(jìn)行了一些實(shí)驗(yàn)。使用top命令行工具對(duì)CPU使用率進(jìn)行監(jiān)測(cè)。Top命令通過(guò)在規(guī)定周期t秒內(nèi)測(cè)量進(jìn)程使用的CPU時(shí)間t1,將t1與t的比值作為該進(jìn)程的CPU使用率。因設(shè)備實(shí)現(xiàn)轉(zhuǎn)發(fā)功能的是ovs-vswitch進(jìn)程,所以以該進(jìn)程的CPU使用率作為轉(zhuǎn)發(fā)進(jìn)程的CPU使用率。
根據(jù)攻擊強(qiáng)度進(jìn)行2組實(shí)驗(yàn),第一組為低強(qiáng)度攻擊實(shí)驗(yàn),攻擊強(qiáng)度分別為30%、40%、50%,攻擊強(qiáng)度為攻擊分組流量占總流量中的比例。第二組為高強(qiáng)度攻擊實(shí)驗(yàn),攻擊強(qiáng)度分別為60%、70%、80%、90%。前30 s為正常狀態(tài),然后進(jìn)行60 s的流量攻擊,同時(shí)測(cè)量攻擊結(jié)束后30 s內(nèi)的CPU使用率。實(shí)驗(yàn)結(jié)果如圖3和圖4所示。
圖3 低速率攻擊時(shí)CPU變化情況
圖4 高速率攻擊時(shí)CPU變化情況圖
可以看出,在0~30 s,設(shè)備的CPU使用率處于穩(wěn)定狀態(tài),此時(shí)設(shè)備CPU使用率較低,在19%左右。啟動(dòng)攻擊后,設(shè)備的CPU使用率瞬間增長(zhǎng),從圖3可得不同的攻擊強(qiáng)度會(huì)引起CPU不同程度的穩(wěn)定增長(zhǎng);從圖4可看出,當(dāng)攻擊強(qiáng)度為80%和90%時(shí)無(wú)更明顯的變化,穩(wěn)定在一個(gè)峰值。
根據(jù)實(shí)驗(yàn)結(jié)果可知,設(shè)備的CPU使用率可作為預(yù)警設(shè)備是否遭受DDoS攻擊的特征。CPU使用率變化值設(shè)置閾值R,當(dāng)變化值大于閾值時(shí),觸發(fā)預(yù)警檢測(cè),若監(jiān)測(cè)到CPU使用率達(dá)警戒線Z,則直接跳過(guò)預(yù)警檢測(cè),進(jìn)入識(shí)別檢測(cè)模塊。
4.2.2PACKET_IN包與目的IP交叉熵值分析
對(duì)預(yù)警交換機(jī)發(fā)送PACKET_IN數(shù)據(jù)包進(jìn)行監(jiān)測(cè)統(tǒng)計(jì)。同樣做了兩組實(shí)驗(yàn),攻擊強(qiáng)度、實(shí)驗(yàn)環(huán)境等與上述實(shí)驗(yàn)環(huán)境一致。被攻擊交換機(jī)產(chǎn)生的PACKET_IN數(shù)據(jù)包變化如圖5和圖6所示。
圖5 低速率攻擊時(shí)PACKET_IN數(shù)據(jù)包
圖6 高速率攻擊時(shí)PACKET_IN數(shù)據(jù)包數(shù)
可以看出,在0~30 s,PACKET_IN數(shù)據(jù)包處于穩(wěn)定狀態(tài)。隨著未知流的進(jìn)入,PACKET_IN數(shù)據(jù)包驟升,攻擊結(jié)束后,PACKET_IN數(shù)據(jù)包的速率慢慢恢復(fù)至攻擊前的正常狀態(tài)。另外,攻擊強(qiáng)度高時(shí),波峰與波谷差距明顯,分析發(fā)現(xiàn),當(dāng)交換機(jī)負(fù)載過(guò)高時(shí),未匹配流數(shù)多,此時(shí)數(shù)據(jù)包會(huì)攜帶更多未匹配的流信息。
同時(shí),對(duì)目的IP的交叉熵值與信息熵值進(jìn)行對(duì)比分析,模擬正常流量連接單個(gè)主機(jī)約每秒發(fā)出1 000個(gè)數(shù)據(jù)包,設(shè)置檢測(cè)窗口為2 000,計(jì)算目的IP的交叉熵值及信息熵值,不同攻擊強(qiáng)度下計(jì)算5次熵值的平均值,實(shí)驗(yàn)結(jié)果如表1所示。
表1 不同攻擊強(qiáng)度下的信息熵及交叉熵
可以看出,針對(duì)攻擊流量溫和變化的情況,本文引入的交叉熵值度量標(biāo)準(zhǔn)與使用信息熵值相比,增大了正常流量與攻擊流量間的信息敏感距離。對(duì)于攻擊的前期以及攻速較慢的DDoS攻擊,可放大攻擊特征信息,提升區(qū)分準(zhǔn)確度,降低誤警率,更快地發(fā)出預(yù)警。
4.2.3攻擊識(shí)別實(shí)驗(yàn)與分析
實(shí)驗(yàn)收集8 500個(gè)樣本,訓(xùn)練集中正常樣本3 000個(gè),攻擊樣本2 000個(gè),測(cè)試集中正常樣本2 000個(gè),攻擊流量樣本1 500個(gè)。為了比較引入交叉熵分類(lèi)特征的效果,與文獻(xiàn)[12]中所提出的8元組和文獻(xiàn)[13]的4元組進(jìn)行了對(duì)比實(shí)驗(yàn),同時(shí)對(duì)C4.5決策樹(shù)、KNN算法及BayesNet算法進(jìn)行了實(shí)驗(yàn),結(jié)果如表2所示。
表2 檢測(cè)率對(duì)比 %
實(shí)驗(yàn)結(jié)果顯示本文引入交叉熵的6元組特征具有最高檢測(cè)率98.2%,因?yàn)榻徊骒刂悼审w現(xiàn)正常流量分布與異常流量分布的相似性,而信息熵值只體現(xiàn)出分散程度的差異,但不能體現(xiàn)相似性,所以本文基于交叉熵值的特征區(qū)分度好。
從表3檢測(cè)時(shí)間來(lái)看,雖然本文6元組比文獻(xiàn)[13]中的4元組檢測(cè)時(shí)長(zhǎng),但檢測(cè)效果好,耗費(fèi)時(shí)長(zhǎng)屬于可接收的范圍。綜上,本文在檢測(cè)特征上引入交叉熵值,對(duì)正常流量與待檢異常流量分布的相似性量化體現(xiàn),取得了更好的檢測(cè)效果。
表3 檢測(cè)時(shí)間對(duì)比 ms
本文提出一種在SDN網(wǎng)絡(luò)環(huán)境中的基于交叉熵的分階段多層次DDoS攻擊檢測(cè)模型,采用基于交換機(jī)設(shè)備CPU使用率的初檢方法,檢測(cè)轉(zhuǎn)發(fā)進(jìn)程CPU的使用率,減輕計(jì)算資源使用率,又可快速定位異常交換機(jī);引入交叉熵值的理論,將正常與攻擊流量在特征分布上的相似性定量分析,有效增加數(shù)據(jù)間的信息距離,提升檢測(cè)準(zhǔn)確度;預(yù)警檢測(cè)模塊使用目的IP交叉熵值及PACKET_IN數(shù)據(jù)包聯(lián)合檢測(cè),降低了漏報(bào)率。實(shí)驗(yàn)結(jié)果驗(yàn)證了檢測(cè)特征的良好表現(xiàn)。
后期的工作將對(duì)特征篩選進(jìn)行研究,使用優(yōu)化算法選取最優(yōu)特征集,同時(shí)考慮對(duì)比更多的特征,根據(jù)攻擊報(bào)告進(jìn)行攻擊溯源研究。