楊 志,韓 俐
(天津理工大學 計算機科學與工程學院,天津300384)
SDN 是一種新型的網(wǎng)絡架構,通常由應用層、控制器和轉(zhuǎn)發(fā)層構成,邏輯集中的控制器與轉(zhuǎn)發(fā)層分離[1-2].這種集中控制的架構模式為網(wǎng)絡運營人員的管理帶來方便的同時,也為網(wǎng)絡安全造成了隱患,控制器受到攻擊時,會影響整個網(wǎng)絡的運行.與傳統(tǒng)的DDoS 攻擊類似,SDN 網(wǎng)絡中的攻擊者通常也是通過控制多個僵尸網(wǎng)絡,利用偽造源地址隱藏身份、向目標主機發(fā)送大量無效數(shù)據(jù),達到占用被攻擊者服務,消耗目標網(wǎng)絡資源的目的.不同的是,攻擊者向SDN 網(wǎng)絡發(fā)送攻擊數(shù)據(jù)包時,OpenFlow 交換機通過查詢流表發(fā)現(xiàn)無法進行匹配,于是向控制器發(fā)送PACKET_IN消息請求.DDoS 攻擊產(chǎn)生時,大量PACKET_IN 消息阻塞了控制器與交換機的通信,導致正常數(shù)據(jù)包無法轉(zhuǎn)發(fā),造成了拒絕服務的攻擊[4].
熵是反映集合中數(shù)據(jù)離散程度的變量,本質(zhì)為表示隨即變量不確定的度量,是對所有可能發(fā)生的事件產(chǎn)生的信息量的期望[5].當網(wǎng)絡中的某一特定IP地址受到DDoS 攻擊時,整個網(wǎng)絡中的數(shù)據(jù)流量過于集中于某一個IP,從而導致了網(wǎng)絡整體中的隨機性下降,熵值降低.因此,通過熵值的降低可以用于檢測網(wǎng)絡中是否存在DDoS 攻擊.
在參考文獻[6]中,作者選用了基于源IP 地址信譽的緩解辦法,但在現(xiàn)實場景中,DDoS 攻擊的發(fā)起者通常會控制大量的傀儡主機,從而導致源IP 地址不可查,大量的源IP 地址也會給控制器增加較大的負擔. 據(jù)此提出易損目的IP 地址的評判機制,在緩解DDoS 攻擊方面達到了較低的丟包率,同時能夠有效降低控制器的負載.該技術由基于目的IP 地址的熵值檢測模塊與易損機制評判模塊組成.通過檢測目的IP 地址熵值的變化,判斷是否有DDoS 攻擊存在,將檢測出受到攻擊的目的IP 地址統(tǒng)計到易損目的IP 地址表中,進行易損評判,根據(jù)易損值的大小,決定保持該目的IP 地址的通信或關閉該目的IP 地址對應的端口.
隨著網(wǎng)絡技術的發(fā)展,SDN 作為一種新型的網(wǎng)絡架構體系,受到了學術界和工業(yè)界的青睞. 但SDN在DDoS 攻擊檢測與緩解方面仍面臨一些問題.
R.Braga 等通過利用自組織網(wǎng)絡進提出了一種基于流量特性的輕量級DDoS 攻擊檢測方法,通過使用自組織映射網(wǎng)絡進行流量分析,獲得了較高的檢測率和較低的誤報率.但是該方法僅適用于較低速率下的DDoS 攻擊,當攻擊速率較高時,不能達到較好的檢測率.Jie Cui 等[8]通過提出一種基于雙地址熵認知啟發(fā)計算的DDoS 攻擊檢測與防御模型,將提取出的流表特征,結合支持向量機分類算法,該模型可以在DDoS 攻擊的初期實現(xiàn)實時檢測和防御,并能及時恢復正常通信.但是該方法只能針對于單個主機受到DDoS 攻擊時的檢測,應用到多個主機或者整個SDN 網(wǎng)絡時,對控制器的負載增加較大,并不能得到較高的檢測率.劉振鵬等[9]提出了一種SDN 環(huán)境下基于廣義信息熵和GA-RBFNN 的DDoS 攻擊檢測方法,利用熵檢測流量,根據(jù)劃分的閾值把檢測結果分為正常、異常和攻擊,對于異常流量,利用GARBFNN 來檢測是否發(fā)生DDoS 攻擊.這種檢測方法主要應用于數(shù)據(jù)平面的DDoS 攻擊檢測,對于針對控制器的攻擊并不能進行有效的檢測,并缺乏相應的恢復機制.肖甫等[10]提出一種在SDN 環(huán)境下基于KNN算法的模塊化DDoS 攻擊檢測方法,該方法選取SDN網(wǎng)絡的5 個關鍵流量特征,采用優(yōu)化的KNN 算法對選取的流量特征進行流量異常檢測.該算法在DDoS攻擊初期可以有效檢測出攻擊的存在,但是在應對持續(xù)大規(guī)模DDoS 攻擊時,所選取的特征值并不能有效檢測出DDoS 攻擊的存在.桂兵祥等[11]提出了一種基于全局信息熵背離度的協(xié)作探測方法和IP 回溯跟蹤算法,獲得了比香農(nóng)熵更高靈敏度的實驗結果,并能進行IP 回溯跟蹤所有攻擊源直到其所在的局域網(wǎng)絡.但該方法的算法復雜度相對較高,一定程度上增加了網(wǎng)絡的負載,并且對于偽造源IP 地址的DDoS 攻擊,并不能進行有效溯源.
現(xiàn)有的DDoS 檢測方法大多基于機器學習與神經(jīng)網(wǎng)絡,檢測前需要經(jīng)過大量的樣本訓練檢測模型,特定的檢測模型通常只能應用于單一固定的網(wǎng)絡中,這一點與SDN 網(wǎng)絡的靈活性相沖突.
梅夢喆等[12]通過多維條件熵檢測算法進行DDoS攻擊的檢測,提出可溯源攻擊路徑算法,對接近攻擊源的邊緣交換機進行過濾處理,達到緩解DDoS 攻擊的目的. 但在偽造源IP 地址的攻擊中,尋找攻擊路徑樹會存在較高的誤報率,針對此建立的黑白名單也會比較龐大,在查找過程中會浪費較多系統(tǒng)資源.陳超等[13]通過監(jiān)控受害者的流表,查找攻擊者IP地址,并對此進行下發(fā)流表項的阻塞操作,但這種方法僅適用于攻擊者數(shù)目較少的情況,當受害主機遭受大規(guī)模DDoS 攻擊時,僅能檢測出網(wǎng)段范圍,并會對網(wǎng)絡中的正常通信造成影響.田俊峰等[14]通過收集用戶在路由器中的信息,建立用戶信譽值防御的模型,路由器根據(jù)用戶信譽值防御模型將惡意用戶過濾掉,并按照信譽值大小排列訪問的優(yōu)先級.這種方法對邊界路由器的安全性要求比較高,而且沒有考慮到惡意用戶使用偽造的源IP 地址來發(fā)動攻擊的情況.許傳豐等[15]通過提出判斷網(wǎng)絡中用戶是否存在背叛策略,對沒有采取背叛策略的主機進行獎勵,并基于信譽值進行資源分配,提高了在受到DDoS 攻擊時整個網(wǎng)絡的資源分配率,但是這種協(xié)作式DDoS 防御技術只能應對與正常流量大小差距不是特別大的攻擊,對于急劇增加的DDoS 流量應對能力較差.
針對以上文章中提出的方法與不足,本文提出一種SDN 環(huán)境下基于目的IP 地址熵變化的DDoS 攻擊檢測與易損機制研究方法,通過信息熵的變化進行DDoS 攻擊檢測,并對檢測結果進行易損機制評判,以達到在下一次攻擊發(fā)生的初期及時發(fā)現(xiàn)受損主機的目的.
本系統(tǒng)主要架構如圖1 所示,主要由信息熵檢測模塊、易損機制評判模塊和攻擊緩解模塊組成.OpenFlow 交換機收到不能匹配流表的報文后,發(fā)送PACKET_IN 消息給控制器,控制器中信息熵檢測模塊接收到PACKET_IN 消息后,判斷SDN 網(wǎng)絡是否受到DDoS 攻擊.受到攻擊時,將受攻擊目的IP 地址信息發(fā)送給易損機制評判模塊,攻擊緩解模塊根據(jù)目的IP 地址易損值大小,下發(fā)相應的緩解策略,達到防御DDoS 攻擊的目的.
圖1 系統(tǒng)整體框架Fig.1 System Overall Framework
信息熵是由香農(nóng)于1948 年提出的反映對產(chǎn)生的信息量的期望,可以通過信息熵判斷一個系統(tǒng)的復雜程度,如果一個系統(tǒng)越復雜,出現(xiàn)不同情況的種類越多,那么它的信息熵是比較大的.反之,一個系統(tǒng)越簡單,出現(xiàn)的情況種類很少,那么此時的信息熵較小.
設屬性X的特征值表示為N(N個不同的數(shù)據(jù)),X={ni,i=1,2,3,…,N}表示在數(shù)據(jù)的統(tǒng)計過程中特征值i出現(xiàn)了ni次.表示特征值出現(xiàn)的總次數(shù).通過公式(1)和公式(2)計算屬性X的熵:
當所有元素出現(xiàn)的概率相等時,熵將達到最大值.如果pi等于0 或1,此時熵值為0.當網(wǎng)絡中流量正常,所有主機以均等的概率接收數(shù)據(jù)包,則整個網(wǎng)絡的熵值將處在一個較高的水平上.而當DDoS 攻擊發(fā)生時,某一個或者幾個主機收到大量的攻擊數(shù)據(jù)包,會導致熵值的迅速降低.可以利用熵值的變換來檢測網(wǎng)絡是否處于一個較為穩(wěn)定的狀態(tài).
使用信息熵的變化來進行DDoS 攻擊檢測,需要確定兩個基本條件:窗口大小與閾值.窗口大小的選擇通常有兩種方法,一種是基于時間窗口,一種是基于數(shù)據(jù)包的數(shù)量[16].由于DDoS 攻擊通常會在短時間內(nèi)產(chǎn)生大量的數(shù)據(jù)包,當基于時間的窗口選擇較大的時候,不能及時發(fā)現(xiàn)攻擊,會導致檢測不及時而造成網(wǎng)絡受到攻擊較為嚴重,基于時間的窗口較小時,正常流量的過程中會加劇控制器的負擔,從而影響SDN 整體網(wǎng)絡的工作效率.綜上原因,選擇了基于數(shù)據(jù)包數(shù)量的窗口值[17].閾值選取通過測定正常流量的熵值變化與低速率攻擊中閾值的變化,確定合適的閾值,保證檢測率達到較高水平,同時誤警率較低.
同時,為了避免網(wǎng)絡中的正常流量集中于某一目的IP 地址而導致誤警率升高,將連續(xù)五個窗口的目的IP 熵值低于閾值的情況判斷為網(wǎng)絡正在遭受DDoS 攻擊.
2.3.1 評判機制流程
根據(jù)參考文獻[6,12-14],本文提出了易損機制的概念.易損機制是通過對受到攻擊的目的IP 地址進行判斷,綜合以往該目的IP 地址在網(wǎng)絡中的行為方式,根據(jù)其在正常網(wǎng)絡流量和異常網(wǎng)絡流量中出現(xiàn)的次數(shù)與頻率,判斷其是否容易受到攻擊.在大規(guī)模流量進入網(wǎng)絡時,通過計算目的IP 地址的易損值,優(yōu)先選擇易損值較低的目的IP 地址進行連接.對于易損值越高的目的IP 地址,當大規(guī)模流量進入網(wǎng)絡時,控制器選擇屏蔽該目的IP 地址的轉(zhuǎn)發(fā),從而過濾掉異常網(wǎng)絡流量,達到緩解DDoS 攻擊的目的.
易損機制的流程圖如圖2 所示:
2.3.2 評判機制算法
根據(jù)2.3.1 節(jié)介紹的易損目的IP 地址的評判機制,首先建立一個易損目的IP 地址存儲表. 通過統(tǒng)計每一個窗口內(nèi)收到數(shù)據(jù)包數(shù)量最多的目的IP 地址,并將該IP 地址存儲在該表內(nèi).
當目的IP 地址的信息熵出現(xiàn)突然下降,低于閾值的情況,說明該網(wǎng)絡正在受到DDoS 攻擊,將此時出現(xiàn)次數(shù)最多的目的IP 地址統(tǒng)計在被攻擊目的IP地址列表中.
為了保證網(wǎng)絡流量的順利轉(zhuǎn)發(fā),同時建立易損目的IP 的緩解機制. 通過一定的獎勵機制,連續(xù)五個窗口內(nèi),如果該目的IP 地址沒有受到攻擊,則相應降低其易損值.
在參考文獻[6]中源地址信譽評判算法的基礎上,綜合考慮目的IP 地址在窗口內(nèi)出現(xiàn)的次數(shù)與每次出現(xiàn)的時間間隔,通過不同的權重值將數(shù)據(jù)歸一化,二者相加共同影響易損值的大小.在上一個窗口易損值大小的基礎上,通過設定恢復系數(shù),保證連續(xù)窗口內(nèi)未再次受到攻擊的IP 地址易損值降低.易損目的IP 地址的評判機制使用公式(3):
圖2 易損機制流程圖Fig.2 Vulnerability mechanism flow chart
其中V(i)為目的IP 地址的易損值,易損值越高,受到攻擊的風險越大;LI為上一窗口計算出的該目的IP 地址易損值;ni為該目的IP 地址在該窗口內(nèi)出現(xiàn)的次數(shù),出現(xiàn)次數(shù)越多,易損程度越高;T為該目的IP 地址出現(xiàn)的平均時間間隔,平均時間間隔越低,易損程度越高;K1、K2分別為不同的權重系數(shù):K3為恢復系數(shù),用于每五個窗口計算完成后,降低其易損值.
如上述偽代碼所示,易損目的IP 地址的評判機制具體的流程為,首先建立易損目的IP 地址存儲表和受攻擊目的IP 地址表,每當接收數(shù)據(jù)包的數(shù)量到達窗口值時,根據(jù)2.2 中基于熵的DDoS 檢測算法,計算目的IP 地址的熵值,如果目的IP 地址的熵值低于閾值,統(tǒng)計出現(xiàn)次數(shù)最多的目的IP 地址添加到受攻擊目的IP 地址表Sa 中,否則,統(tǒng)計出現(xiàn)次數(shù)最多的目的IP 地址添加到易損目的IP 地址存儲表Sv中.對比易損目的IP 地址存儲表Sv 和受攻擊目的IP 地址表Sa,如果被攻擊的目的IP 地址不在易損目的IP 地址存儲表Sv 中,表明該目的IP 地址在該網(wǎng)絡中并非承擔大規(guī)模的網(wǎng)絡服務功能,直接關閉此目的IP 地址對應的端口,否則通過公式計算該目的IP 地址的易損值,如果得出的計算結果大于設定的閾值,則關閉此目的IP 地址對應的端口,否則保持該目的IP 地址的通信.
本次實驗在8GB 內(nèi)存、Intel Xeon CPU 的Ubuntu 16.04 操作系統(tǒng)的計算機上進行.使用Mininet 仿真軟件建立實驗拓撲,Mininet 是SDN 網(wǎng)絡實驗中通常選擇的網(wǎng)絡仿真平臺[18],可以模擬真實網(wǎng)絡環(huán)境的運營與架構,并可以將開發(fā)代碼遷移應用到真實網(wǎng)絡中來. 使用了基于Python 實現(xiàn)的POX 控制器作為SDN 網(wǎng)絡的核心控制器,POX 是在NOX 的基礎上開發(fā)的控制器,具有高吞吐量和低延時性. 使用支持OpenFlow 協(xié)議的Open vSwitch 交換機作為網(wǎng)絡交換機.實驗中通過Scapy 工具進行發(fā)包測試,Scapy 發(fā)包工具可以很好的實現(xiàn)數(shù)據(jù)包的生成并發(fā)送,達到模擬真實網(wǎng)絡流量的效果.搭建一個如圖3 所示的深度為2 的樹形仿真實驗網(wǎng)絡,該網(wǎng)絡中包括1 個核心POX 控制器、9 個交換機和64 個主機.
圖3 仿真實驗網(wǎng)絡拓撲圖Fig.3 Network topology diagram of simulation experiment
3.2.1 窗口值大小確定
在控制器頁面很容易控制窗口值的大小,這也是SDN 的優(yōu)勢.在確定基于數(shù)據(jù)包數(shù)量的窗口值大小的過程中,初步選取了窗口大小分別為20,50,100,200 的情況下進行了測試,測試結果如表1.
表1 不同窗口值下測試的熵值Tab.1 Entropy values of tests under different window values
在窗口值大小為20 的檢測過程中,因為正常流量與攻擊流量熵的差值較小,并且攻擊流量中數(shù)據(jù)包的數(shù)量比較少,檢測過程中出現(xiàn)誤警率的幾率比較高.雖然窗口值為200 的檢測過程中熵值的差距較大,但是當連續(xù)五個窗口的熵值低于閾值時,網(wǎng)絡已經(jīng)受到了較長時間的DDoS 攻擊,與在DDoS 攻擊早期檢測出攻擊存在的想法相沖突.窗口值為50 與100 的檢測方法均可以較好的滿足實驗要求,考慮到在SDN 網(wǎng)絡中,一旦建立了鏈接,數(shù)據(jù)包通過查找流表進行轉(zhuǎn)發(fā)工作,除非有新的轉(zhuǎn)發(fā)請求,否則不再經(jīng)過控制器,實驗網(wǎng)絡中主機數(shù)量少于100 臺,所以選擇了窗口值為50 的檢測方法.
3.2.2 確定閾值
在閾值選取過程中,通過檢測網(wǎng)絡在正常運行時的熵值變化范圍與低速率攻擊中閾值的變化,得出表2.
表2 正常流量與攻擊流量下閾值變化Tab.2 Threshold changes under normal traffic and attack traffic
由表中的數(shù)據(jù)可以得出,正常流量下熵的最小值與均值的差值為0.118,占最小值的百分比為11.2%,在最小值的基礎上向下取11.2%的置信區(qū)間,得出熵的閾值為0.937.檢測到的25%速率下的攻擊流量熵的最大值低于該閾值,因此符合閾值的確立.
3.3.3 信息熵檢測結果
通過實驗先后模擬了正常流量下、25%攻擊速率下、50%攻擊速率下的攻擊檢測結果,由圖5、圖6可以看出,在第25 個窗口處,分別對該SDN 網(wǎng)絡發(fā)送25%與50%的攻擊流量,此時檢測到網(wǎng)絡中的熵值急速下降,經(jīng)過五個窗口的熵值低于閾值的情況后,該機制封閉了受到攻擊的主機端口,整個網(wǎng)絡的熵值恢復到正常水平.綜上可以得出結論,該檢測機制能夠在DDoS 攻擊的前五個窗口識別出攻擊流量,并對特定的端口進行封閉,保證網(wǎng)絡流量的熵值能夠回復到正常水平,從而保證了網(wǎng)絡的正常通信.
在上述實驗環(huán)境下,進行了50 次25%攻擊速率下的發(fā)包測試,基于這50 次模擬進行該系統(tǒng)的成功率測試,共有兩次實驗結果與預期分析有偏差,其中包含一次正常流量的誤報與一次DDoS 攻擊的漏檢.基于上述實驗可以得出結論,該系統(tǒng)的檢測率為98%,誤警率為2%.同時進行了50%攻擊流量和75%攻擊流量的檢測,均及時檢測出了DDoS 攻擊.
圖4 正常流量下信息熵變化Fig.4 Information entropy change under normal flow
圖5 25%攻擊速率下信息熵變化Fig.5 Information entropy change at 25%attack rate
圖6 50%攻擊速率下信息熵變化Fig.6 Change of information entropy at 50%attack rate
在上述實驗環(huán)境下,將主機h64(IP 地址為10.0.0.64)作為被攻擊主機,在第15 個窗口處對該SDN 網(wǎng)絡進行DDoS 攻擊,通過檢測這兩臺主機在受到DDoS 攻擊時,控制器是否屏蔽該目的IP 地址,并能夠在停止攻擊后一段時間內(nèi)主動恢復其通信,作為易損主機評判機制的檢測方法[19].
在實驗過程中測試網(wǎng)絡的丟包率,實驗結果如圖7 所示.受到攻擊時,檢測到網(wǎng)絡的整體丟包率在3%左右,效果優(yōu)于使用源IP 地址信譽的緩解方法.而在未部署緩解方法的網(wǎng)絡中,受到攻擊后丟包率激增,從第20 個窗口開始,丟包率趨近于100%.此項實驗表明,易損主機的恢復機制檢測到了網(wǎng)絡中的DDoS 攻擊,并進行了有效緩解,降低了網(wǎng)絡中的丟包率.
圖7 不同緩解機制下丟包率比較Fig.7 Comparison of packet loss rates under different mitigation mechanisms
本文將信息熵與易損主機的評判機制結合,利用信息熵的降低來檢測針對某一個或者多個目的IP地址的DDoS 攻擊,在控制器中添加檢測模塊,能在DDoS 攻擊的前期及時發(fā)現(xiàn)攻擊,并及時對受到攻擊的主機進行端口封閉處理.通過易損主機的評判機制,能夠?qū)W(wǎng)絡中潛在的、易受DDoS 攻擊的目的IP地址做出風險預測,在DDoS 攻擊前期對容易受到攻擊的目的IP 地址進行防范處理,減少了DDoS 攻擊對網(wǎng)絡造成的影響.該方法在Mininet 仿真實驗網(wǎng)絡中得到驗證.在后續(xù)工作中,我們將會進一步將此方法應用部署到真實的網(wǎng)絡環(huán)境中,并驗證其有效性.