劉向舉,劉鵬程,路小寶,徐 輝,朱曉娟
(安徽理工大學 計算機科學與工程學院,安徽 淮南 232001)
物聯網技術的高速發展所帶來的不只是更加便利的生產與生活方式,也會帶來一些嚴峻的安全挑戰,例如非法入侵、控制物聯網感知層設備,進而發動分布式拒絕服務(distribute denial of service,DDoS)攻擊是日益嚴峻的安全威脅之一,嚴重影響網絡的數據正常轉發與服務質量[1,2]。如何檢測和防御物聯網中的DDoS攻擊,成為近年來研究的熱門話題。一直以來由于傳統物聯網架構的局限性及物聯網設備自身的資源、能量有限,導致防御的研究重點仍放在如何使防御算法更加輕量化上,但輕量化的算法無法很好應對物聯網所面臨的DDoS攻擊。由此,眾多學者將研究重點轉向改變傳統物聯網架構上。軟件定義物聯網(software defined internet of things,SD-IoT)是一種新型的物聯網架構,它是軟件定義網絡(software defined networking,SDN)與傳統物聯網相結合而形成[3-5],將SDN的集中管控能力、數據傳輸與控制分離和流表下發的運行模式[6]引入到傳統物聯網中。與物聯網環境下的DDoS攻擊有所不同的是,在SD-IoT中,DDoS攻擊不但消耗受害設備的計算和存儲資源,還會占用大量網絡帶寬,阻塞南向接口中帶寬本就有限的安全通道,造成控制器的網絡的管理能力與性能大幅下降。
由此本文根據SD-IoT運行模式的優勢,利用SD-IoT的流表下發與集中控制的特性,提出將DDoS攻擊防御方法放置在SD-IoT控制器內,以實現在SD-IoT中防御DDoS攻擊。
在國內外防御傳統物聯網中的DDoS攻擊的相關研究中:Muhammad等[7]提出了一個利用動態種群過程和點過程理論的模型,捕獲網絡上的惡意軟件的滲透與協調過程,分析無線物聯網中惡意軟件在設備之間的傳播特征。王睿[8]提出了一種由選舉出的聚合節點收集鄰域內其它節點的本地信任值、表現信任值與通信信任值的輕量級本地信任評估機制,根據計算得出的綜合信任值,進行節點行為的判斷,但是檢測結果容易受到惡意節點的干擾。
從上面的研究可看出,在物聯網架構不改變的前提下,防御DDoS攻擊的途徑多以研究輕量化、低功耗的算法來實現,所以有專家學者將SDN的運行模式與物聯網相融合,在SDN環境中的攻擊防御相關研究中:Jie Cui等[9]提出一種SDN下的DDoS攻擊檢測與防御機制,該機制建立了基于支持向量機(support vector machine,SVM)的、對攻擊實時檢測與防御的模型。Marcos等[10]通過使用博弈論方法,在控制器中對DDoS攻擊進行緩解,實現快速防御。姜文醍等[11]在SDN環境中利用可調節的φ-熵增大不同特征的差異,從交換機的流表中提取出多維特征后對樣本訓練分類,實現DDoS攻擊的檢測。王楊俊杰等[12]通過統計SDN網絡中packet_in報文的上傳增長率,并結合卡方分布檢測算法篩選攻擊源后,下發新的流表封禁端口。陶蒙恩[13]通過自適應的將被攻擊的交換機中的流量調度到相鄰交換機中,使受害者交換機與相鄰的交換機發送packet_in 報文的速率達到平衡,實現自適應流量調度防御。曾榮飛等[14]在SDN環境中實現了基于改進自組織映射(self organizing map,SOM)算法與多維條件熵的兩段式防御機制,通過調整防火墻優先級過濾攻擊流量,當改進的SOM算法遇到無法判斷類型的報文時,會根據多維條件熵計算結果增加新的聚類中心。該算法雖然有效,但算法效率較低,當算法無法判斷報文類型時,需要比較閾值和多維條件熵,并且閾值不能隨網絡狀態動態調整。以上研究實現攻擊防御大多是通過檢測網絡流量特征是否異常并啟動防御措施,或是利用流量調度算法將攻擊流量分流實現攻擊防御,但是這些研究不適合SD-IoT環境,并且沒有從源頭解決如何防御DDoS的問題。
針對以上研究的不足之處,本文提出一種高效的、適用于SD-IoT的DDoS攻擊防御方法:信任模型-自組織映射防御(trust model-self organizing map defender,TSD)。該方法能夠較好溯源DDoS攻擊節點并在不影響網絡正常運行的同時有效防御DDoS攻擊。
本文所提出的TSD方法由攻擊檢測、攻擊溯源與攻擊防御3個模塊構成,并且以上3個模塊全部放置在SD-IoT控制器中,如圖1所示。其中攻擊檢測模塊作為溯源的觸發機制,負責實時監控交換機提交給SD-IoT控制器的流表信息,以檢測網絡內是否有DDoS攻擊發生。攻擊檢測模塊使用在前期工作中完成的均分取值區間長度-K均值(equal length of value range K-means,ELVR-Kmeans)算法[15]來檢測是否有DDoS攻擊發生。本文主要介紹溯源及防御模塊。

圖1 基于SD-IoT的DDoS攻擊溯源防御架構
追根溯源是防御DDoS攻擊最有效的方式,若要截斷受害者和攻擊發動節點之間的通信鏈路,通常需要得到攻擊節點的IP地址或者是Mac地址。但是攻擊節點的IP地址往往是偽造的,無法通過IP地址發現真正的攻擊節點,而Mac地址是固定不變的,所以通過Mac地址可以準確定位攻擊節點,根據拓撲信息實施防御策略。因此本文所提出的基于信任模型-自組織映射(trust model-self organizing map,T-SOM)算法的DDoS攻擊溯源方法是通過定位攻擊節點Mac地址實現攻擊溯源。溯源方法分為:packet_in報文與流表信息收集、節點流量特征提取和DDoS攻擊溯源3個步驟。
2.1.1 Packet_in報文與流表信息收集
當檢測到網絡中有DDoS攻擊發生時,首先記錄下當前的時間點t,并且收集該時刻內來自交換機提交的packet_in消息和流表信息,并將相關信息存入數據庫中,例如,packet_in報文中封裝的源、目的IP、源Mac地址、協議類型、報文長度、報文種類等。
2.1.2 節點流量特征提取
本文選擇的節點流量特征,分為節點發送報文的數量特征和節點發送報文的熵值特征兩類,如下所示:
(1)節點發送報文的數量特征,當網絡內有節點發動DDoS攻擊時,會產生大量具有隨機源IP地址的報文,使報文總數與packet_in報文總數會急劇上升,此時,packet_out總數可以很好體現出控制器當前處理packet_in報文的性能壓力,所以將packet_out數目作為特征之一可以提高溯源的準確度,具體如下:
1)節點i在Δt內的平均發送報文長度LAVGi(Δt)
(1)
其中,Δt是時間間隔,n為Δt內節點i發送的數據包總數。
2)節點i在Δt內發送報文的總量:NUMi(Δt)。
3)節點i在Δt內發送報文的packet_in報文個數:PINi(Δt)。
4)節點i在Δt內發送報文的packet_out報文個數:PONi(Δt)。
(2)節點發送流量的熵值特征:時間間隔Δt內交換機提交的與流表項匹配失敗的數據包源、目的IP地址和協議類型的熵值變化,是判斷節點所發送的流量是否為攻擊流量的重要依據。所以選擇Δt內,控制器接收到交換機提交的節點i發送流量中的源、目的IP地址、協議類型3個屬性的香農熵作為節點流量特征。具體計算如式(2)~式(4)所示:
1)源IP地址熵SH
(2)

2)目的IP地址熵DH
(3)

3)協議類型熵PH
(4)

2.1.3 基于T-SOM算法的DDoS攻擊溯源方法
在SD-IoT環境中,節點所發送的流量類型較多,會存在幾種流量類型與攻擊流量相似度接近,如果使用SOM算法[16]根據2.1.2節所提取的節點流量特征進行溯源,有可能導致將正常節點判定為攻擊節點的情況發生。由此,為了增加節點發送流量的差異性,本文將信任模型與SOM算法相結合。信任模型可以評估Δt時間內,網絡中的節點行為的最大可能性,消耗更少資源的同時,增大不同節點發送流量的特征之間的差別,可以提高非攻擊節點信任值,而降低DDoS攻擊節點的信任值(見表1),因此提出了T-SOM算法。

表1 不同節點的信任值表現
基于T-SOM算法的DDoS攻擊溯源方法,通過聚類提取到的節點發送流量的7種特征,實現攻擊源的追溯,過程如下:

(2)節點流量特征輸入,輸入2.1.2節中所提取的節點i,i=1,2,…,m發送流量的7種特征
ni=[SH,DH,PH,LAVG,NUM,PIN,PON]
(3)信任值計算:利用(2)中的節點流量特征,從中選取t時刻節點i發送的報文數量NUM、packet_in報文量PIN和源IP熵SH這3個參數計算節點的信任值,由發送、表現行為信任值二者計算得出節點信任值,過程如下:
1)發送信任計算
基于Bayes的信任模型其自身的輕量化減少了計算的復雜度,減輕了系統的壓力,為了預測節點在未來行為的最大可能性,將Beta概率密度函數的期望E(Beta(p|x,y)) 作為發送信任值,發送信任的計算如式(5)所示

(5)
其中,xi(Δt)=NUMi(Δt)-PINi(Δt) 為控制器在Δt內收集節點i發送的非packet_in報文數量;yi(Δt)=PINi(Δt) 為packet_in報文數量。
2)表現行為計算
本文所規定的表現行為是指節點i在Δt內發送報文中的源IP地址的隨機性,表現行為與隨機性成反比,表現行為信任值越高,則源IP隨機性越小,源IP熵值越低,反之表現行為信任值越低,則說明源IP地址隨機性越大,源IP熵值越高。
BTi(Δt)為節點i在Δt內發送報文中的源IP的熵值SHi(Δt)+1的倒數,為了避免式(6)中分母為0的情況,將SHi(Δt)向上取整后加1
(6)
3)計算節點信任值
節點i的信任值Ti(Δt)由節點i的表現信任值BTi(Δt)、節點i的發送信任值Ei(Δt)兩部分構成,如式(7)所示
Ti(Δt)=Ei(Δt)×BTi(Δt)
(7)
各節點的信任值T作為新的特征加入到輸入的節點流量特征ni中
ni=[SH,DH,PH,LAVG,NUM,PIN,PON]

(8)
計算競爭層中的所有權值向量與當前輸入的樣本之間的相似性,本文算法采用歐氏距離作為相似性的評價標準,將與樣本相似度最高的權值向量作為在競爭中取得優勝的節點,用j*標記
(9)
推導

從上面的推導中可知,兩個單位向量點積最大,歐式距離最小,即

wij(t+1)=wij(t)+η(t,P)[ni-wij(t)]
(10)
式中:t為訓練時間、η(t,P) 是t和鄰域內第j個神經元與獲勝神經元j’之間的拓撲距離的函數,該函數的一般規律為:t↑?η↓,P↑?η↓,η(t,P)=η(t)e-P。

算法描述如下:
輸入:樣本集N={n1,n2,…,ni};
ni=[SH,DH,PH,LAVG,NUM,PIN,PON],i=1,2,…,m。
過程:

(2)根據輸入樣本中的:SHi(Δt),NUMi(Δt),PINi(Δt) 計算節點信任值

信任值T作為新的特征,添加到輸入的樣本集N中。
(3)歸一化處理輸入的新樣本集N,得到
(4)repeat
(5) fori=1,2,…,mdo
wij(t+1)=wij(t)+η(t,P)[ni-wij(t)]
(8) end for
(9)untilη(t)<ηmin
輸出:聚類劃分C={C1,C2,…,Ck}
為緩解攻擊節點造成控制器處理packet_in報文的壓力,本文提出的TSD方法的防御過程由端口封禁和packet_in報文過濾兩個步驟組成。
(1)端口封禁:當防御方法收到2.1.3節溯源的結果后,利用網絡拓撲和攻擊節點的Mac地址,進而找出其通過端口P與交換機S通信,隨后下發封禁端口P的流表項,使得交換機S丟棄從端口P接收到的所有消息,從源頭上切斷了攻擊節點與整個網絡的連接。由此交換機不會再因為收到匹配失敗的報文而向控制器提交大量packet_in報文。
(2)過濾packet_in報文:由于DDoS攻擊將產生大量具有虛假IP的數據包,交換機收到這些數據包后會以packet_in的方式提交給控制器,請求新的流表項以匹配這些數據包,在攻擊開始到防御模塊封禁端口的這段時間內,控制器仍然要響應大量packet_in消息,如果不對這些消息進行過濾,則會在響應這些packet_in消息上花費大量資源,并在處理完成后向網絡內所有交換機下發封裝在pac-ket_out內的新流表,造成報文數量居高不下,影響數據的正常轉發,所以本文在防御方法中增加了過濾packet_in消息的步驟。
具體的防御過程描述如下:
輸入:packet_in報文集合PI={pi1,pi2,…,pii}; 溯源得到的攻擊節點mac地址集合Mac={mac1,mac2,…,mack}。
過程:
(1)根據控制器擁有的網絡拓撲找出攻擊節點所連接的交換機S={s1,s2,…,sn} 及其所連端口P={p1,p2,…,pm}。
(2)fori=1,2…n do
forj=1,2,…m do
ovs-ofctl add-flowsiin_port=pj, actions=drop
end for
end for
(3)計算PI與Mac集合的長度: Length(PI), Length(Mac)
(4) fori=1,2,…, Length(PI) do
fork=1,2,……, Length(Mac) do
ifpii.mac_address=mack
DROP(pii)
else
將pii加入集合PI’={pii’}
end if
end for
end for
輸出: 過濾之后的packet_in報文集合:
PI’={pi1’,pi2’,…,pii’}
本節的主要內容分為:仿真實驗環境的設置、溯源方法性能測試、防御方法性能和鏈路延時測試。首先單獨測試溯源方法的性能是因為溯源結果直接影響到防御方法中的端口封禁操作,通過與相關溯源研究的對比,可以更好展現本文所提出的TSD方法的溯源能力。其次將整個防御實驗拆分為3個部分,分別與該部分的相關研究對比測試,能夠更好體現本文方法的性能。
本文使用運行在i5 CPU和20 GB RAM的PC上的VMware Workstation虛擬機,虛擬機內安裝Ubuntu18.04LTS系統,SDN-WISE-CONTIKI和Mininet模擬SD-IoT環境,控制器選取開源控制器ONOS。網絡中包含13臺主機、6臺OpenFlow交換機、8個軟件定義傳感網節點與2個Sink節點,網絡拓撲如圖2所示。使用經典的TFN2K工具發動DDoS攻擊,使用Iperf3工具產生網絡背景流量,同時測量相關的通信性能指標。

圖2 實驗拓撲
在溯源方法的仿真實驗中,選擇SYN-Flood、ICMP-Flood和UDP-Flood這3種較為常見的攻擊手段發動DDoS。每次攻擊測試持續時間為35 s,h1作為受害者節點,每組攻擊節點的數量遞增,攻擊節點選擇與溯源實驗結果見表2。
溯源方法性能的評估使用F1分數(F1,F1 Score),如式(11)所示,因為F1分數可以找到精確率和召回率兩者之間的平衡點,是在考慮精確率和召回率平衡的狀態下達到二者最高值
(11)
由表2中的6組攻擊節點分別在3種攻擊手段下,測試溯源方法F1分數的結果可得到: SYN-Flood攻擊方式下F1分數的平均值為98.80%;ICMP-Flood攻擊方式下F1分數的平均值為97.24%;UDP-Flood攻擊方式下F1分數的平均值為98.75%。

表2 攻擊節點選擇與溯源結果
比較本文提出的溯源方法與K-means算法、文獻[11]中提出的基于φ-熵的K近鄰(K Nearing Neighbor,KNN)算法和基于香農熵的SVM算法F1分數平均值,結果見表3。由表3可以看出K-means算法3種攻擊方式下F1分數平均值為77.88%、基于香農熵的SVM算法F1分數的平均值為86.30%、基于φ-熵的KNN算法F1分數的平均值為96.20%,而本文所提出的溯源方法,在3種攻擊方式下的F1分數平均值為98.27%,相較于基于φ-熵的KNN算法[11],F1分數在3種攻擊方式下分別提升了2.2%、3.94%和0.05%,并且算法性能不會被攻擊方式的變化所影響。

表3 平均F1分數/%
基于3.1節中的實驗環境,對本文提出的TSD方法、基于卡方檢驗的防御方法[12]和無防御方法進行防御性能比較與結果分析。在h9中使用經典的DDoS工具TFN2K作為攻擊節點,攻擊流量的比例為1∶1∶1的SYN流量、ICMP流量與UDP流量,背景流量為h2與h13采用Iperf3工具產生,同時使用Iperf3監測網絡的帶寬變化狀態和鏈路時間延遲。測試每次持續時間為50 s,DDoS攻擊均在第10 s發動。
(1)防御實驗結果分析
圖3揭示了部署有本文方法與不部署任何防御方法的網絡中的流量變化對比,在DDoS攻擊發動后,在無防御方法的SD-IoT中,報文速率與在packet_in報文速率2 s內迅速上升,從發動攻擊后至測試結束的40 s的時間內,報文速率始終遠高于正常水平。由圖中本文方法的報文總數和packet_in報文數折線可以看出,相同實驗條件下,在攻擊開始后,從第12 s至第16 s,每秒的報文總數與packet_in報文數迅速回落至正常水平,這是因為溯源方法很快找到DDoS攻擊節點,并且防御方法根據攻擊節點的Mac地址下發端口封禁流表項,隔離攻擊節點。

圖3 防御性能對比1
圖4揭示了本文方法與基于卡方檢驗的方法[12]的防御性能比較,由圖中的報文速率可以看出,基于卡方檢驗的防御方法[12]只封禁端口,在其防御機制啟動后,報文速率依舊沒有回歸正常,因為控制器響應packet_in報文后需要廣播大量的尋址消息,收到尋址應答后會將大量新流表項以packet_out消息的方式下發到OF交換機。而本文方法則考慮到了這個問題,在下發端口封禁流表項后,過濾控制器內收到的由交換機提交的包含偽造源IP的packet_in報文,所以由圖中所示的本文方法的報文速率曲線得知,防御方法執行后,網絡的報文速率大幅下降,2 s后下降到正常水平,packet_in報文速率也恢復正常。

圖4 防御性能對比2
(2)鏈路延時結果分析
表4揭示了本文的防御方法與無防御、FloodDefender均勻調度算法、自適應調度算法[13]3種方法的鏈路延時對比情況。可以看出本文的防御方法的鏈路延時平均值為0.098 ms,好于FloodDefender算法的5.739 ms和自適應調度算法[13]的0.998 ms。不僅鏈路延時的平均值最小,最大值與和最小值也要少于其余的3種算法。

表4 鏈路時間延遲
本文對SD-IoT中如何防御DDoS的問題進行了研究,提出了TSD方法在SD-IoT中防御DDoS攻擊。該方法使用基于T-SOM算法的DDoS攻擊溯源方法,利用“節點流量特征”對網絡內所有節點實現聚類操作,找出攻擊節點,根據溯源結果,啟動防御機制,封禁端口過濾packet_in報文,從而進行DDoS攻擊防御。通過仿真實驗檢驗本文提出的TSD方法防御DDoS攻擊的效果,實驗結果可以看出:TSD方法可以對DDoS攻擊節點迅速準確溯源,在保證網絡可用性與鏈路低延時的同時對DDoS攻擊有效防御。由于本文所提出的TSD方法只適用于單控制器的SD-IoT環境,所以下一步計劃研究如何在分布式的軟件定義物聯網環境實現對檢測和防御DDoS攻擊。