劉向舉,路小寶,方賢進,尚林松
(安徽理工大學計算機科學與工程學院,安徽淮南 232001)
L
,R
,T
)來表示,如圖1 所示。L
是脈沖寬度,它表示攻擊脈沖的持續時間;R
是脈沖強度,它顯示攻擊流的最大值;T
是攻擊周期,它表示連續攻擊脈沖的時間間隔。這種攻擊方式與正常數據流混合難以區別,可操控性強且攻擊效率高。因此,現有的針對傳統DoS 攻擊檢測方法運用到LDoS 攻擊不能有效檢測到攻擊。
圖1 LDoS攻擊模型Fig.1 Model of LDoS attack
TCP 是現在網絡中普遍使用的傳輸協議。目前研究的各類LDoS 攻擊大部分是基于TCP 的自適應機制。LDoS 攻擊正是利用了TCP 自適應機制中的兩種擁塞控制機制。第一種是超時重傳機制(Retransmission Time Out,RTO):當TCP 報文在網絡傳輸過程中超時丟失,TCP 發送方將擁塞窗口減少到一個數據包,并重新傳輸丟失的TCP 報文;第二種是加增減乘機制(Additive Increase Multiplicative Decrease,AIMD):發送方收到三次重復的確認(ACKnowledgement,ACK)消息,TCP 發送方將擁塞窗口減半,以重傳丟失的TCP報文。RFC2988建議最小超時重傳時間為1 s。理論上,當LDoS 攻擊周期為1 s 時,它可以連續觸發超時重傳,并周期性丟棄正常TCP 數據包,迫使發送方減小擁塞窗口以限制傳輸速率,從而降低網絡服務質量。
軟件定義網絡(Software Defined Network,SDN)作為一種新型的網絡創新體系架構,相較于傳統網絡設備實現了控制平面與數據平面的分離。這種新型網絡的架構優勢很明顯,簡化網絡設備的管理和配置,形成統一高效的管理和維護,提高網絡的運行效率,降低設備的維護成本。但由于通過控制器對網絡集中控制和管理,更容易遭受LDoS 攻擊,被攻擊后造成的后果更加嚴重。因此,在SDN 環境下研究LDoS 攻擊檢測,對改善網絡安全具有重要意義。
ζ
是在一定范圍內選擇的。何炎祥等提出了一種基于小波特征提取的LDoS 檢測方法,該方法通過小波多尺度分析提取LDoS 攻擊特征,采用反向傳播(Back Propagation,BP)神經網絡模型來檢測攻擊。吳志軍等提出一種基于時間窗統計的LDoS 攻擊檢測方法,該方法利用LDoS 攻擊在單位時間內產生正常流量下降同時攻擊流量出現高脈沖的這種突變現象,用時間窗統計來進行LDoS 攻擊檢測。該方法網絡環境簡單,得到實驗數據理想。茍峰等提出一種基于CUSUM算法的LDoS 攻擊檢測方法,該方法對流量利用基于累計和(CUmulative SUM,CUSUM)算法累積異常,累積值超過閾值即觸發報警,實現異常檢測。此方法在檢測初期會有誤報現象。吳志軍等提出一種基于ACK 序號步長的LDoS 攻擊檢測方法,此方法通過LDoS 攻擊的瞬間ACK 序號步長存在波動行為,運用排列熵算法設置閾值來檢測攻擊。以上方法都是利用LDoS 攻擊流量的單個異常特征進行攻擊檢測,可能導致檢測性能不穩定。Yue 等提出基于小波能量譜和組合神經網絡的LDoS 攻擊流量識別方法,根據網絡流量多重分形特征,識別LDoS 攻擊流量。吳志軍等提出一種基于聯合特征的LDoS 攻擊檢測方法,提取了可用帶寬比、小分組比例和分組丟失率3 種LDoS 攻擊流量的內在特征,通過BP 神經網絡模型實現攻擊檢測;但是由于網絡流量是動態變化的,攻擊強度變弱時可用帶寬比和分組丟失率并不會明顯變化。Tang 等對LDoS 攻擊檢測有一定研究,提出基于多特征融合和CNN 的LDoS 攻擊檢測方法,該方法將網絡流量多特征融合生成網絡狀態映射圖,將其作為CNN 模型的輸入來訓練模型對網絡流量進行分類,該方法檢測率高且穩定性好。Tang 等提出一種用于LDoS 攻擊檢測的改進Mean-Shift聚類算法,根據不同屬性重要程度不同對均值漂移聚類歐氏距離進行加權,通過對簇的預設閾值和判決特征比較來識別攻擊流量,此方法有較好的檢測性能。以上檢測方法都是提取了網絡流量多特征,通過機器學習算法來實現攻擊檢測。相較于單一特性,多特征聯合檢測方法的性能更優。與此同時,在SDN 新型網絡架構下,陳興蜀等提出云環境下SDNLDoS 攻擊的研究,該方法提取了10 維特征,基于貝葉斯網絡實現對LDoS 攻擊的檢測,此方法僅在數據平面得到驗證。顏通等提出了一種SDN 環境下的LDoS 攻擊檢測與防御技術,該方法對每條OpenFlow 數據流的速率單獨進行統計,并利用信號檢測中的雙滑動窗口法實現對攻擊流量的檢測。王文濤等提出一種SDN 環境下基于Renyi 熵的LDoS 攻擊的檢測,該方法通過收集packet_in 數據包,然后基于目的IP 來計算Renyi 熵,最后通過設定一定的閾值來檢測異常流量。這種方法只考慮到packet_in 消息,可能因獲取信息不足導致檢測結果又有誤差。
上述檢測方法多集中在傳統網絡,目前針對SDN 環境下的LDoS 攻擊檢測的研究成果相對較少。基于在SDN 環境下檢測LDoS攻擊的特征單一性和過分依賴packet_in消息,本文提出一種在SDN 環境下的LDoS 攻擊檢測新方法,首先分析SDN 環境下LDoS攻擊流量特征并提取出六元組特征,然后利用WMS-K
means算法進行聚類,以區分正常流量和異常流量。在軟件定義網絡的環境下,傳統單一的K
-Means 算法并不適合LDoS攻擊檢測。K
-Means算法輸入的初始聚類中心是隨機的,必須給定生成簇的數量k
,最后的聚類結果往往受初始聚類中心的影響較大。Mean-Shift是基于密度的聚類算法,不需要預先知道簇個數,也不限定簇的形狀,但聚類的最終結果不一定是最優的,Mean-Shift 算法對噪聲的魯棒性更強,因此將Mean-Shift算法聚類后的簇心,作為K
-Means 算法的初始聚類中心進行算法的融合。由此本文提出一種加權均值漂移-K
均值(Weighted Mean-ShiftK
-Means,WMS-K
means)算法。在全部的攻擊類型中,資源消耗型攻擊最為典型。SDN技術因其特殊的網絡系統架構,攻擊者可以限制控制器決策能力、消耗OpenFlow 交換機流表資源、消耗控制器與交換機通信的控制通道資源等。目前SDN 研究大部分是基于OpenFlow 協議的,因此本文所研究的主要是針對OpenFlow協議的SDN 資源消耗型攻擊。在真實網絡中,LDoS 攻擊流量隱藏在正常網絡流量之中,并沒有完全消耗網絡可用資源。但其攻擊速率低且帶有周期性,長時間發送攻擊流量,依然可以給網絡安全帶來威脅。詳細的網絡流量分析如下:
1)在正常的網絡流量時間尺度上,網絡流量具有自相似性,因此短時間內不會出現網絡流量明顯的波動。在SDN架構下,當存在LDoS 攻擊時,攻擊端會周期性產生偽造虛假數據包,造成網絡中packet_in 消息增加,所以packet_in 數據包變化可以作為檢測依據。同時,在維持攻擊速率穩定的情況下,LDoS 攻擊流量分組越小,攻擊效果越好。此時攻擊流量數據包長度小于正常流量數據包長度,在攻擊期間的表現為一段時間間隔Δt
內平均數據包長度被拉低。如圖2 所示,可以看出在第14 秒攻擊開始后,網絡流量中packet_in 數據包個數增加以及攻擊期間平均數據包長度低于正常流量平均數據包長度。
圖2 packet_in數據包數和平均數據包長度的關系Fig.2 Relationship of packet_in packet number and average packet length
2)標準差反映的是數據集中數據分布的離散程度。在正常網絡中,由于網絡流量的自相似性,TCP 流量的標準差接近平均值。在SDN 架構下,當發生LDoS 攻擊時,同樣存在TCP 的擁塞控制機制,使得TCP 報文周期性持續丟失。在攻擊期間表現為TCP 報文數下降且呈現周期性。如圖3 所示,可以看出在14~126 s 攻擊期間,TCP 標準差離散程度較大,相比于正常流量有明顯變化。

圖3 TCP標準差變化Fig.3 TCP standard deviation change
3)在正常網絡流量中,數據包中的源IP 地址絕大部分是已存在的網絡地址,當遭受LDoS 攻擊時,網絡中會涌現大量偽造源IP 地址的數據包,此時控制器會收到大量packet_in 消息,并且攻擊流量經過OpenFlow 協議封裝產生TCP 的數據包,使得TCP 熵值偏低。如圖4 所示,在14~126 s攻擊期間,packet_in 源IP 地址熵值普遍接近于1,TCP 數據包熵值普遍靠近0.5,這是因為攻擊源地址是偽造且隨機產生增加了不確定性。

圖4 熵值的變化Fig.4 Change of entropy
通過以上分析,LDoS 攻擊流量特征選取的是packet_in數據包數、UDP 數據包個數、平均數據包長度、TCP 數據包標準差、packet_in 源IP 地址熵值和TCP 數據包熵值。在信息論中,信息熵是用來衡量隨機變量不確定性和隨機性的指標,對于時間序列,信息熵表示序列的無序程度。信息熵值越大,序列越無序;信息熵值越小,序列越穩定。信息熵的定義如下:

H
(X
)表示信息熵;x
表示出現的隨機事件;n
表示隨機事件的個數;p
(x
)表示隨機事件發生的概率。具體流量特征表示如下:
1)packet_in 數據包個數:packet_in_sum
(Δt
),Δt
表示收集流表的時間間隔。2)UDP 數據包個數:udp_sum
(Δt
)。
3)平均數據包長度:

n
表示Δt
時間內的數據包總數;packet
_len
表示每個數據包的長度。4)TCP 數據包標準差:

n
表示Δt
時間內TCP 數據包取的份數;X
ˉ表示Δt
時間內TCP 數據包平均值;X
表示Δt
時間內每份TCP 數據包個數。5)packet_in 數據包源IP 地址熵值:


6)TCP 數據包熵值:


2.2.1 初始聚類中心生成過程
通常,聚類是根據數據集的樣本點相似程度對其進行分類。因為數據點的屬性有差別,相應的重要程度也會有所不同,所以數據點之間的距離不僅取決于相似程度,還取決于數據間的屬性。Mean-Shift 算法一般采用歐幾里得距離,同等對待數據的每個屬性,不能反映不同屬性間的重要性。針對這一問題,使用加權歐氏距離代替傳統的歐氏距離。具體的改進方法如下:
在d
維歐氏空間上的n
個數據點x
(i
=1,2,…,n
)的核密度估計值如下:
h
為帶寬;K
(x
)為徑向對稱函數,K
(x
)=C
k
(‖x
‖),C
是單位密度的歸一化常數,k
為k
(x
)的簡寫。式(6)中的梯度如下:

x
(i
=1,2,…,n
)在d
維歐氏距離下一個更新中心點為:
x=
(x
,x
,…,x
)和x=
(x
,x
,…,x
)間加權歐氏距離可表示為:
w
(v
=1,2,…,d
)表示第v
個屬性權重。因此,Mean-Shift 算法在d
維歐氏距離下一個更新中心點由式(9)改為:
w
為第v
個屬性的權重系數;g
(x
)為核函數。當發生LDoS 攻擊時,網絡流量的離散程度比正常網絡流量離散程度更大,相應的加權系數的值越大,說明此屬性有很強的重要性。本文選取平均絕對百分比誤差作為歐氏距離加權系數,一定程度上反映網絡數據流量的波動情況,具體表示為:


具體的初始聚類中心生成過程如下。
算法1 改進Mean-Shift 初始聚類中心選擇過程。
輸入 樣本集Z
={z
,z
,…,z
},聚類帶寬h
。輸出 初始聚類中心{G
,G
,…,G
}。
K
means算法改進后的Mean-Shift 算法也是基于密度的算法,只是根據具體數據集使得均值偏移向量向概率密度最大的方向偏移得更加精準。通常情況下,好的聚類中心應該是數據分布密度最大的中心點,改進的Mean-Shift 算法生成的初始聚類中心更貼合實際數據的分布。算法具體過程如下:
選定初始聚類中心{G
,G
,…,G
}以及簇的個數k
,將數據集每個數據點根據歐氏距離劃分到最近的簇,數據集樣本點之間的歐氏距離越小,樣本間相似程度越高。通過計算簇中所有數據點到中心點的均值重新選定簇心,WMS-K
means算法經過k
次迭代,直到簇心不再更新。最終得到k
個最佳聚類質心,使得簇內樣本點相似度最高,簇間樣本點相似度最低。具體算法描述如下。算法2 WMS-K
means 算法。輸入 樣本集Z
={z
,z
,…,z
};聚類個數k
。輸出 簇劃分C
={C
,C
,…,C
}。
K
means 算法通過聚類區分有無攻擊。本文WMS-K
means 算法部署在SDN控制器中,SDN 控制器相當于人類大腦,具有足夠的算力和儲存空間。由于網絡流量分析、特征選取和檢測方法涉及流量都是SDN 控制器和OpenFlow 交換機之間的通信流量,所以檢測方法和網絡拓撲無關。具體的攻擊檢測過程如下:1)數據收集。此部分通過Wireshark 周期性地采集交換機中流表流量,保存完整的流表信息,將流表信息利用Python 導入數據庫,為特征提取做準備。
2)特征提取。此部分通過2.1 節中的特征分析,提取出SDN 環境下LDoS 攻擊流量六元組特征。使用Python 工具統計每秒內六元組特征值,并保存到數據庫中。
3)攻擊檢測。此部分利用2.2 節中提出的WMS-K
means算法,對攻擊流量六元組特征進行分類。具體檢測過程如下:

G
,G
,…,G
}。將中心點{G
,G
,G
…,G
}作為K
-Means 聚類初始聚類中心,計算所有樣本點到初始聚類中心的距離:
d
,將每個樣本點標記劃分到最近的簇中。在每個簇中所有樣本點重新計算新的聚類中心:

如果新計算出的簇心與原簇心距離變化較大,則重新迭代上述步驟,計算距離劃分新的簇;如果重新計算出的簇心位置趨于穩定,可以認為聚類已達期望效果,輸出本次分類結果。
為了能充分展現LDoS 攻擊檢測的準確性,本文實驗使用Mininet 和開源控制器ONOS 搭建仿真環境。虛擬交換機采用Switcher 2.9.2,OpenFlow 協議使用OpenFlow1.3 版本。虛擬機操作系統為Ubantu18.04 系統,內存為5 GB,處理器內核總數為2,在i5CPU 和8 GB RAM 的計算機上完成。實驗拓撲如圖5 所示,用Mininet 搭建由9 臺主機和6 臺OpenFlow交換機的網絡并連接到Internet 上。主機h2~h9 為正常用戶,h1 為攻擊者。OpenFlow 交換機s1~s6 之間的鏈路帶寬為10 Mb/s,各主機與交換機之間鏈路帶寬為100 Mb/s,所有鏈路時延為10 ms。

圖5 實驗拓撲Fig.5 Experimental topology
h1 向h9 發送UDP 攻擊流量,攻擊工具使用Hping3。h4、h7 分別向h8、h9 發送由D-ITG 產生的TCP 流量建立正常連接,使得在S4、S5 鏈路上匯集的正常流量速率接近于10 Mb/s,讓UDP 流量產生更好的攻擊效果。
實驗分為三組,每組實驗包含不同攻擊參數的LDoS 攻擊,具體參數如表1 所示。在搭建的網絡拓撲中收集流表信息,每組實驗攻擊周期循環90 次,三組平均收集流表數983 202 個。

表1 LDoS攻擊的參數Tab 1 Parameters of LDoS attack
本文通過真正例(True Positive,TP)、真反例(True Negative,TN)、假正例(False Positive,FP)和假反例(False Negative,FN)計算檢測率、誤警率和漏警率來評價檢測的性能。三個評價指標表示如下:
1)檢測率I
(Detection Rate):表示正確預測攻擊流量數量除以實際總的攻擊流量數量的值。值越大說明檢測LDoS攻擊效果越好。
I
(False Alarm Rate):表示正常流量被預測為攻擊流量數量除以實際總的正常流量數量的值。值越小說明正常流量成功預測率高。
I
(Missing Alarm Rate):表示未正確預測攻擊流量數量除以實際總攻擊流量數量的值。值越小說明檢測LDoS 攻擊效果越好。
K
means算法的LDoS攻擊檢測方法計算出I
、I
和I
三種攻擊檢測算法評定指標值。比較I
、I
和I
隨著h
值的變化而產生的變化。由于h
值為核函數帶寬,隨著核函數帶寬h
的減小,核函數值增加,數據集的概率密度增加,直接影響著最終聚類的檢測結果。因此本文選取h
為0.2到0.7的值進行多次測試。實驗測試結果如表2所示,計算六組不同h
值的平均檢測率I
分別為99.29%、98.06%、97.01%、96.72%、94.30%、93.95%。
表2 三種評價指標隨不同h值的變化 單位:%Tab 2 Changes of three evaluation indexes with different h values unit:%
從六組平均檢測率中可以看出,平均檢測率I
隨著帶寬h
值的增加不斷減小。當帶寬h
值大到一定程度,平均檢測率會明顯下降。當h
=0.2 時,此時平均檢測率最高為99.29%,平均I
為1.97%,平均I
為0.69%。為了檢驗本文WMS-K
means 算法對LDoS 攻擊檢測的有效性,將本文方法與K
-Means 算法進行比較。用K
-Means 算法同樣對上述三組LDoS 攻擊數據進行檢測,由于K
-Means 算法需要指定聚類個數,通過多次實驗,取三組實驗數據結果的最好檢測值,即聚類個數k
為5 時的檢測結果,記錄如表3 所示。通過計算得出K
-Means 算法的平均檢測率為97.71%,平均誤警率為2.01%,平均漏警率FNR 為2.27%,如表4 所示,本文WMS-K
means 算法平均檢測率為99.29%高于K
-Means 算法的97.71%,平均誤警率和平均漏警率均低于K
-Means 算法,可以看出本文方法優于單一的K
-Means 算法。
表3 K-Means算法評價指標(k=5) 單位:%Tab 3 K-Means algorithm evaluation index(k=5)unit:%

表4 本文方法與K-Means算法的對比 單位:%Tab 4 Comparative in proposed method and K-Means algorithm unit:%
表5 是本文方法與基于累加和(CUmulative SUM,CUSUM)算法、多特征自適應增強(Multiple Features-Adaptive boosting,MF-Adaboost)算法、HSMM(Hidden Semi-Markov Model)和雙滑動窗口法的四種檢測方法進行比較,并且使用I
、I
和I
三個指標評價算法性能。
表5 不同檢測方法的對比 單位:%Tab 5 Different detection methods comparison unit:%
表5 展示了五種檢測方法的檢測率,本文方法的檢測率最優為99.29%,CUSUM 算法、MF-Adaboost 算法、HSMM 模型和雙滑動窗口法四種檢測方法的檢測率分別為96%、97.32%、98%和98.3%。在誤警率的比較中,本文所提方法的平均誤警率I
為1.97%,CUSUM 算法、MF-Adaboost 算法和HSMM 模型檢測方法的誤警率I
分別為8%、5.87%和4%,均高于本文方法。與雙滑動窗口法的1.2%相比,本文方法平均誤警率略高于雙滑動窗口法,但是本文方法的總體計算復雜度更低,檢測率更高。在漏警率比較中,標記處雙滑動窗口法無此參數,相較于其他方法,本文方法的平均漏警率I
同樣最低為0.69%,CUSUM 算法、MF-Adaboost 算法和HSMM 模型檢測方法的漏警率分別為4%、2.68%和2%。K
means 算法的LDoS 攻擊檢測方法,提取出LDoS 攻擊流量六元組特征,用平均絕對百分比誤差作為Mean-Shift 歐氏距離加權系數,將六元組特征作為改進Mean-Shift 算法的輸入生成初始聚類中心,再利用K
-Means 算法進行分類,最后通過分組實驗,得到本文方法評價指標值。本文方法的特色如下:1)在SDN 中利用控制器部署算法實現了LDoS 攻擊的檢測;2)在SDN 環境下分析LDoS 攻擊流量特征,并提取出LDoS 攻擊流量六個內在特性;3)根據LDoS 攻擊流量特征,提出了WMS-K
means算法。最后在仿真環境下對本文方法進行驗證,實驗結果表明,本文方法與其他檢測方法相比檢測率有所提升,并且誤警率和漏警率相對較低,有良好的檢測性能;但是經過多次迭代執行時間相對較長。下一步的工作是優化算法,降低算法的時間復雜度。