劉向舉,劉鵬程,徐 輝,朱曉娟
(安徽理工大學計算機科學與工程學院,安徽淮南232001)
(*通信作者電子郵箱liupengcheng1194@163.com)
隨著物聯(lián)網(wǎng)(Internet of Things,IoT)技術的廣泛應用,物聯(lián)網(wǎng)涉及到大量相互連接的設備,包括公共設施、可穿戴設備和無人機等[1-5];但是其安全問題日益凸顯,物聯(lián)網(wǎng)設備所處的環(huán)境十分復雜,而且龐大的網(wǎng)絡規(guī)模使得管理起來十分困難,存在安全漏洞的物聯(lián)網(wǎng)設備相較于傳統(tǒng)網(wǎng)絡更容易被黑客攻陷,形成僵尸網(wǎng)絡并發(fā)動分布式拒絕服務(Distributed Denial of Service,DDoS)攻 擊[6-7]。鑒 于 軟 件 定 義 網(wǎng) 絡(Software Defined Network,SDN)在網(wǎng)絡管理和安全維護等方面的成功[8],越來越多的國內(nèi)外研究學者嘗試將其控制與轉發(fā)分離的設計理念引入到物聯(lián)網(wǎng)中,提出新型軟件定義物聯(lián)網(wǎng)(Software Defined Internet of Things,SD-IoT)體系架構[9-10]。SD-IoT 屏蔽了底層設備的硬件差異,簡化物聯(lián)網(wǎng)設備的配置和管理,降低了網(wǎng)絡的運營成本,實現(xiàn)了物聯(lián)網(wǎng)設備的靈活部署。更重要的是,SD-IoT可以將傳統(tǒng)物聯(lián)網(wǎng)中難以部署的、能量消耗大的DDoS攻擊檢測系統(tǒng)部署在控制器中,為改善物聯(lián)網(wǎng)的安全問題帶來了重大機遇。
目前,在SD-IoT 與傳統(tǒng)物聯(lián)網(wǎng)領域內(nèi)的DDoS 攻擊檢測研究成果較少,針對傳統(tǒng)物聯(lián)網(wǎng)的DDoS 攻擊檢測問題,胡向東 等[11]提 出 一 種 基 于K均 值(K-means)+主 成 分 分 析(Principal Component Analysis,PCA)算法的輕量級入侵檢測方法。雖然該方法較為輕量化并能夠有效檢測DDoS攻擊,但是其檢測特征數(shù)量較多也增加了算法的復雜度。針對SD-IoT中的DDoS 攻擊檢測問題,Liu 等[12]設計了基于SDN 的采用數(shù)據(jù)流抽象和啟發(fā)式算法的數(shù)據(jù)傳輸中間件保護(Middlebox Guide,M-G)安全模型,該模型可以降低網(wǎng)絡延遲,并進行適當?shù)臄?shù)據(jù)流管理以確保網(wǎng)絡安全運行。Yin 等[13]提出基于SD-IoT 的利用邊界SD-IoT 交換端口的Packet_in 消息速率向量的余弦相似度檢測DDoS 攻擊的算法。姬生生[14]提出了基于SDN 的無線傳感器網(wǎng)絡流量異常檢測機制和通過計算網(wǎng)絡流量自相似參數(shù)(Hurst 值)來區(qū)別網(wǎng)絡流量異常的方法。以上兩種方法根據(jù)流量的自相似度來判斷網(wǎng)絡中是否有DDoS攻擊發(fā)生,優(yōu)點是算法輕量化,執(zhí)行速度快,但是網(wǎng)絡流量是動態(tài)變化的,判斷自相似度的閾值難以確定。同時還有許多SDN 網(wǎng)絡中的DDoS 攻擊檢測方法可以借鑒:肖甫等[15]提出了一種采用優(yōu)化的K-近鄰(K-Nearest Neighbors,KNN)算法對選取的SDN 網(wǎng)絡的5個關鍵流量特征進行異常檢測。張雨龍等[16]提出基于SDN 的六元組流特征值的DDoS 攻擊檢測判斷研究。陳超等[17]提出了一種利用攻擊檢測四元組特征并通過自適應改變監(jiān)控流表粒度以定位潛在受害者的檢測方法。華輝有等[18]提出了一種適應大樣本集的網(wǎng)絡入侵檢測算法,該算法先在離線預處理階段建立大樣本集的聚簇索引,然后在在線實時分類階段則利用聚簇索引搜索得到近鄰,最終得出分類結果。馬樂樂等[19]提出了一種基于支持向量機(Support Vector Machine,SVM)+K-means 算法的DDoS 攻擊檢測方法,該算法首先使用熵值檢測流是否異常,如異常則使用SVM+K-means 算法檢測DDoS 攻擊。以上幾種SDN 環(huán)境中的DDoS 攻擊檢測算法都利用DDoS 攻擊流量的特征進行檢測,雖然準確但是其高復雜度并不適合應用在傳統(tǒng)的物聯(lián)網(wǎng)環(huán)境中。
針對以上問題,本文提出了在SD-IoT環(huán)境中,利用SD-IoT架構的優(yōu)勢,將檢測結果準確但是資源消耗大的檢測算法放置在能量和資源充足的SD-IoT 控制器中。根據(jù)SD-IoT 中DDoS攻擊的七元組特征,使用均分取值區(qū)間長度-K均值算法(Equal Length of Value RangeK-means,ELVR-Kmeans)進行DDoS攻擊檢測。
傳統(tǒng)的物聯(lián)網(wǎng)的三層架構越來越不能滿足安全、管理、應用等方面的需求[20],將新興網(wǎng)絡架構SDN 引入物聯(lián)網(wǎng)之后,在應用層與網(wǎng)絡層之間加入了控制層,變成了四層結構,SDIoT架構如圖1所示。
1)感知層。不同于傳統(tǒng)物聯(lián)網(wǎng)中的感知層,SD-IoT 中感知層設備采用了控制平面與數(shù)據(jù)平面分離的方式,只負責采集數(shù)據(jù)和轉發(fā)數(shù)據(jù),而鏈路發(fā)現(xiàn)和拓撲維護等功能則放在控制器中。SD-IoT 感知層設備的數(shù)據(jù)處理流程與SDN 模式相同[21]。
2)轉發(fā)層。SD-IoT 的轉發(fā)層將感知層接入到互聯(lián)網(wǎng)中,實現(xiàn)高效、可靠和安全的數(shù)據(jù)傳輸。SD-IoT 轉發(fā)層不僅包括SDN 交換機等SDN 設備還包含多種類型的SD-IoT 網(wǎng)關設備,使異構網(wǎng)絡實現(xiàn)了相互通信。
3)控制層??刂茖佑蒘D-IoT 控制器構成,SD-IoT 控制器通常具有較高的計算能力和較多的存儲資源,通過南向接口管理SD-IoT 轉發(fā)層中的OpenFlow 交換機和SD-IoT 網(wǎng)關設備,并且利用南向接口收集來的感知層節(jié)點信息建立全局視圖,可以提供安全檢測、拓撲維護、服務質量(Quality of Service,QoS)管理等功能,同時通過北向接口提供相應的應用程序接口供應用層調(diào)用。
4)應用層。開發(fā)人員可以通過控制器提供的北向接口在應用層非常便捷地進行智能物聯(lián)網(wǎng)應用開發(fā)、安全管理、網(wǎng)絡維護等操作。
圖1 SD-IoT架構Fig. 1 Architecture of SD-IoT
傳統(tǒng)物聯(lián)網(wǎng)中的DDoS 攻擊可以根據(jù)攻擊消耗的資源類型分為帶寬消耗型攻擊和資源消耗型攻擊,也可以根據(jù)攻擊速率分為高速攻擊和慢速攻擊。由于目前DDoS 的攻擊形式以高速帶寬消耗型為主,所以本文以高速帶寬消耗型DDoS攻擊為研究對象。
與傳統(tǒng)物聯(lián)網(wǎng)的DDoS攻擊的具體表現(xiàn)相比,基于軟件定義架構下的物聯(lián)網(wǎng)需對其DDoS 攻擊的特征進行實際的數(shù)據(jù)收集分析,為下一步的DDoS攻擊檢測做準備。
許多關于SDN 網(wǎng)絡攻擊檢測的研究[22]都提到了大量的Packet_in 數(shù)據(jù)包是發(fā)生DDoS 攻擊的顯著特征之一,但是在基于軟件定義物聯(lián)網(wǎng)的DDoS攻擊檢測中,要根據(jù)網(wǎng)絡內(nèi)流量的特征進行相應的變化,以提高檢測算法的檢測準確率。特征的選擇分為兩部分,分別是流量中不同數(shù)據(jù)包的數(shù)量和流量中不同參數(shù)的熵值,具體選擇過程如下:
1)流量中不同數(shù)據(jù)包的數(shù)量。根據(jù)攻擊收集到的數(shù)據(jù)可以看出在DDoS攻擊發(fā)生時,不僅每秒發(fā)送的數(shù)據(jù)包的數(shù)量會顯著上升,而且會有大量的包含偽造源地址的Packet_in 數(shù)據(jù)包,這與SD-IoT 架構的流表下發(fā)特性有關,交換機會把未匹配的數(shù)據(jù)包封裝成Packet_in 消息發(fā)送給控制器,等待控制器下發(fā)新的流表。在交換機向控制器發(fā)送含有虛假源地址的Packet_in消息后,控制器也會為了尋找該地址,而向所有交換機廣播發(fā)送大量的Packet_out 消息。另外,在攻擊結束的最后幾秒內(nèi),Packet_in 中的源地址熵值和Packet_in 數(shù)量會回歸正常,但是Packet_out的數(shù)量還是沒有下降太多。
例如圖2 中顯示的一段20 s 的流量數(shù)據(jù)是在InstantContiki3.0 環(huán)境下使用ONOS(Open Network Operation System)控制器、SDN-WISE-CONTIKI 和Mininet 仿真軟件模擬SD-IoT環(huán)境,在SD-IoT環(huán)境中模擬DDoS攻擊時收集到的。在4~9 s 發(fā)起攻擊,第7 s 時Packet_in 中源地址熵值已經(jīng)回歸正常,但是此刻仍是處于攻擊之中,可以看到7~9 s 內(nèi)的數(shù)據(jù)包總量、Packet_out數(shù)量還是很多,所以由此可判斷4~9 s處于攻擊之中。若不把Packet_out 數(shù)量作為特征之一,則在進行檢測的時候就會因為Packet_in 中源地址熵值的下降而誤把該流量分類成正常流量,所以將Packet_out 數(shù)量作為特征之一可以提高DDoS攻擊檢測的精度。
圖2 流量構成變化Fig. 2 Change in flow composition
根據(jù)以上分析,選取數(shù)據(jù)包總量、Packet_in 數(shù)據(jù)包數(shù)、Packet_out 數(shù)據(jù)包數(shù)、平均數(shù)據(jù)包長度作為檢測DDoS 攻擊的特征。具體表示如下。
①平均數(shù)據(jù)包長度:
其中:Δt是收集流表的時間間隔,n為Δt內(nèi)的流表總數(shù);
②數(shù)據(jù)包總量:num(Δt);
③Packet_in數(shù)據(jù)包數(shù):packet_in_num(Δt);
④Packet_out數(shù)據(jù)包數(shù):packet_out_num(Δt)。
2)流量中不同參數(shù)的熵值。根據(jù)相關的DDoS 攻擊檢測的研究[22]表明:可以通過單位時間內(nèi)源地址、目的地址、數(shù)據(jù)包協(xié)議類型三個屬性的信息熵(式(2))變化情況來判斷是否有攻擊發(fā)生。
其中:H(X)表示信息熵;隨機變量X表示所有的隨機變量,它包含n個隨機事件;xi是其中可能出現(xiàn)的隨機事件,p(xi)表示事件xi出現(xiàn)的概率。信息熵可反映一個系統(tǒng)的穩(wěn)定程度:信息熵值越低,系統(tǒng)越有序;相反,信息熵值越高,系統(tǒng)越混亂。
所以本文選取Δt時間內(nèi)Packet_in 數(shù)據(jù)包中的源地址熵值、目的地址熵值和協(xié)議類型熵值作為檢測特征。具體計算如式(3)~(5)所示:
其中:S為源地址總數(shù)
其中:D為目的地址總數(shù),個數(shù)。
其中:P為Δt內(nèi)數(shù)據(jù)包協(xié)議類型總數(shù),為不同的協(xié)議類型的個數(shù)。
在未發(fā)生DDoS攻擊時,數(shù)據(jù)包中的源地址與目的地址大多都是網(wǎng)絡中已知的地址,和控制器向交換機發(fā)送的交換機狀態(tài)請求報文和交換機向控制器的應答報文,一旦網(wǎng)絡遭受DDoS 攻擊,控制器將收到大量的偽造源地址的Packet_in 消息,并且攻擊流量中協(xié)議類型相同,協(xié)議類型的熵值較低。所以,應該統(tǒng)計Packet_in 數(shù)據(jù)包中的源地址熵值、目的地址熵值和協(xié)議類型熵值。
同樣以1)中的一段20 s 的流量數(shù)據(jù)為例,可以看出在4~7 s發(fā)生攻擊時,Packet_in 數(shù)據(jù)包中封裝的目的地址因為是隨機生成的偽造地址所以熵值會接近增大接近于1(熵值的區(qū)取值范圍為0~1),而被攻擊的主機的IP 地址相對固定,所以目的地址的熵值會接近于0。如圖3所示。
圖3 Packet_in數(shù)據(jù)包中地址熵值變化Fig. 3 Change in address entropy value in Packet_in packet
在使用Wireshark 收集SD-IoT 控制器與交換機之間相互通信的數(shù)據(jù)之后,得到的數(shù)據(jù)都為pcapng文件,需要將pcapng文件解析并保存為csv文件,并且存儲到數(shù)據(jù)庫中。存儲在數(shù)據(jù)庫中的數(shù)據(jù)項包括:1)時間,這里的實現(xiàn)以開始收集流量的時間(0 s)為起點,用秒表示;2)Packet_in 數(shù)據(jù)包中的源地址、目的地址、協(xié)議類型;3)每個數(shù)據(jù)包的長度(大?。?)數(shù)據(jù)包的Info信息。如表1中的流量數(shù)據(jù)表所示。
將數(shù)據(jù)存儲在數(shù)據(jù)庫中后,按照3.1 節(jié)中選擇的特征以及計算方法計算每一秒的流量的所有特征,并存儲到數(shù)據(jù)庫中,數(shù)據(jù)表如表1中的流量特征數(shù)據(jù)表所示。
將計算好的數(shù)據(jù)導出為csv 文件并去除ID 和時間屬性,作為實驗數(shù)據(jù)集,數(shù)據(jù)集內(nèi)容如圖4所示。
圖4 實驗數(shù)據(jù)集(部分)Fig. 4 Part of experimental dataset
表1 數(shù)據(jù)表結構Tab. 1 Structure of data table
根據(jù)3.1節(jié)收集到的數(shù)據(jù)顯示,對流量分類影響最大的7個特征其在正常流量和DDoS 攻擊流量中的表現(xiàn)存在較大差異,例如:在DDoS 攻擊流量中,Packet_in 數(shù)據(jù)包中封裝的源地址與目的地址的熵值會分別接近熵值取值范圍的兩個端點,而在正常流量中熵值則不會這樣。DDoS攻擊流量中每秒的數(shù)據(jù)包總量、Packet_in 數(shù)據(jù)包數(shù)量和Packet_out 數(shù)據(jù)包數(shù)量的變化也十分明顯,會比正常情況下多出許多。
根據(jù)環(huán)境的需要,傳統(tǒng)的K-means 算法并不適合檢測軟件定義物聯(lián)網(wǎng)中的DDoS攻擊,因為其在進行初始的分類中心點的選擇是隨機選取,會造成分類結果的不穩(wěn)定,同時分類誤差較大。為了使每個聚類都盡可能遠離并相似度盡可能小,采用屬性取值區(qū)間平均劃分來確定初始聚類中心。所以本文提出一種均分取值區(qū)間長度-K均值(ELVR-Kmeans)算法,根據(jù)以上分析的數(shù)據(jù)分布的區(qū)間,改變K-means 算法的初始聚類中心的選擇方式。算法具體過程如下:
1)在選擇k(k∈[0,2])個聚類中心時:首先在數(shù)據(jù)集中選擇每個特征取值的最大和最小值,組成兩個聚類中心,因為聚類算法是根據(jù)數(shù)據(jù)之間的相似度進行分類,所以要首先選擇兩個相距最遠的樣本作為初始聚類中心。
2)當分類的個數(shù)k大于2 時:除了1)中的兩個聚類中心外,還需生成k-2個聚類中心,具體步驟為:
①計算1)中兩組數(shù)據(jù)對應位置的差值,假設數(shù)據(jù)樣本為四元組特征A、B、C、D:
[Amax-Amin,Bmax-Bmin,Cmax-Cmin,Dmax-Dmin],其 中Amax、Bmax、Cmax、Dmax和Amin、Bmin、Cmin、Dmin分別是A、B、C、D這4 個特征的取值區(qū)間最大值與最小值;
②算出的對應位置的差值,
③除了最大最小值組成的聚類中心以外,第i個聚類中心由1)中的每個特征的最小值組成的聚類中心對應位置的數(shù)值加上i倍的2)中算出的差值,第i個聚類中心為:
具體的初始聚類中心選擇過程描述如下:
按照上面步驟選取初始分類中心之后,開始進行下一步的分類,算法具體流程如下。
本文提出的ELVR-Kmeans 采用歐氏距離作為相似性評價指標,若兩個對象的歐氏距離越小,則它們之間的相似性就越大。對于一組數(shù)據(jù),將其看成若干個簇,簇由距離靠近的對象組成,每個簇就是一個聚類,由于同一個聚類中對象之間的距離最小,那么相似度也就最大,使用ELVR-Kmeans 算法可以將所有對象按相似度聚類,并計算出每一類的聚類中心。ELVR-Kmeans 聚類算法對每個數(shù)據(jù)進行k次迭代,對于樣本x,通過式(6)找到歐氏距離最小的聚類中心,以最后得到的k個平均聚類中心為數(shù)據(jù)的最優(yōu)聚類中心,按照最小歐氏距離依次為各個測試數(shù)據(jù)進行聚類操作,使最終類內(nèi)對象相似性最大,類間對象相似性最小。
其中:xik與xjk分別為i與j在第k個特征上的數(shù)據(jù)。
具體的處理方法描述如下:
本文提出的檢測方法部署在SD-IoT 控制器內(nèi),因為SDIoT控制器通常具有較多的計算和存儲資源,可以運行傳統(tǒng)物聯(lián)網(wǎng)中難以實現(xiàn)的攻擊檢測算法,而且將SDN 技術引入到物聯(lián)網(wǎng)之后,物聯(lián)網(wǎng)的控制平面與數(shù)據(jù)平面分離,無論物聯(lián)網(wǎng)拓撲如何變化,控制平面中的SD-IoT 控制器始終擁有整個網(wǎng)絡的全局拓撲視圖,可以對所有物聯(lián)網(wǎng)設備進行集中控制和流量管理等操作。并且根據(jù)本文3.1節(jié)中關于SD-IoT 環(huán)境中發(fā)生DDoS攻擊時流量特征的變化,以及檢測方法主要是通過提取控制器與SD-IoT 交換機之間通信流量的特征進行DDoS 攻擊的檢測,所以檢測方法與物聯(lián)網(wǎng)拓撲無關。檢測方法主要包括流表收集、特征提取和攻擊檢測3 個部分,具體過程如下:
1)流表收集:該部分負責周期性地收集網(wǎng)絡中的流表信息,并且將每個數(shù)據(jù)包的所有信息都存儲在數(shù)據(jù)庫中,請求周期為t。
2)特征提取:該部分負責按照3.1 節(jié)中通過分析SD-IoT中DDoS 攻擊流量的特征所得出的七元組特征,如表2 所示,對存儲在數(shù)據(jù)庫中的ts內(nèi)的數(shù)據(jù)進行特征提取。
表2 七元組特征Tab. 2 Seven-tuple feature
3)攻擊檢測:該部分按照3.3節(jié)中提出的ELVR-Kmeans算法,對已經(jīng)提取出七元組特征的流量進行分類,分類過程如下:
①計算初始分類中心,首先分別找出每個特征上的最大值和最小值確定每個特征的取值區(qū)間,然后將7 個特征的取值區(qū)間均分為k個子區(qū)間,并且將k個子區(qū)間的最小值與整個取值區(qū)間的最大值作為初始的k個聚類中心,如式(7)~(9)所示:
在以上3個公式中,ui為聚類中心,ti為第i個特征的取值區(qū)間,i={1,2,…,7}。
②計算所有樣本到初始聚類中心{u1,u2,…,ui,…,uk}的歐氏距離dij:
xj與ui分別是樣本與聚類中心,在每個樣本中標記離它最近的聚類中心標號,這樣就將每個樣本劃入到離它最近的類中Ci=Ci∪{xj}。
③在每個聚類中計算新的均值向量u′i作為新的聚類中心。
其中:u′i為新的均值向量,|Ci|為為第i個聚類中樣本的總數(shù)。并且根據(jù)新的均值向量產(chǎn)生新的分類中心,通過對比新舊分類中心是否一致來判斷是否進行新一輪的迭代:如果新產(chǎn)生的聚類中心和上一輪迭代產(chǎn)生的聚類中心不一致,則重新計算每個樣本到各個聚類中心的歐氏距離,然后標記離它最近的分類標號進行劃分;如果本次迭代產(chǎn)生的新聚類中心與上輪迭代產(chǎn)生的聚類中心一致,則不再進行重新計算,將本次分類結果輸出。
本章首先描述實驗環(huán)境設置,然后對攻擊檢測算法的實驗結果進行分析和評估。
本文使用SDN-WISE-CONTIKI 和Mininet 網(wǎng)絡模擬器來模擬真實的軟件定義物聯(lián)網(wǎng)環(huán)境,實驗使用開源控制器ONOS(Open Network Operation System),操 作 系 統(tǒng) 為Ubuntu18.04LTS,在i5 CPU 和4 GB RAM 的計算機上完成。首先使用Mininet 搭建一個由12 臺主機和6 臺OpenFlow 交換機組成的樹形網(wǎng)絡并且連接到Internet,同時使用SDN-WISECONTIKI創(chuàng)建一個具有2個SDN-WISE Sink類型的匯聚節(jié)點,8 個隨機分布的SDN-WISE mode 類型的傳感節(jié)點,并且使兩種網(wǎng)絡都連接上ONOS 控制器。整個網(wǎng)絡的拓撲在控制器中的全局視圖如圖5 所示。本文使用經(jīng)典的DDoS 攻擊工具TFN,在交換機1 右側所連子網(wǎng)中的H9 向S3 所連子網(wǎng)中的H1 發(fā)起TCP SYN flood、UDP flood、ICMP flood 等典型網(wǎng)絡流量攻擊。
圖5 實驗拓撲Fig. 5 Experimental topology
對上述產(chǎn)生的流表進行收集,實驗一共進行了44 min 36 s,共收集到2 046 373 個數(shù)據(jù)包,取其中含有攻擊流量的1 400 s數(shù)據(jù)并分為7 組,作為實驗的測試樣本,每組樣本均由正常流量和DDoS 攻擊流量組成,并且DDoS 攻擊流量所占比例依次下降。具體分組情況如表3所示。
表3 分組情況Tab. 3 Grouping situation
本節(jié)通過真正例(Ture Positive,TP)、真反例(Ture Negative,TN)、假正例(False Positive,F(xiàn)P)和假反例(False Negative,F(xiàn)N)計算以下3 個參數(shù)來評判算法的性能,3 個參數(shù)分別是:
1)檢測率(Detection Rate,DR):檢測率是被正確識別的攻擊流的數(shù)量除以測試樣本中所有攻擊流的數(shù)量的比值,它的大小與隨機誤差相關。檢測率越高說明識別DDoS 攻擊的精度越高。
2)準確率(Accuracy,ACC):準確率是正常流和攻擊流分別被正常識別的數(shù)量除以測試樣本中的總體流的數(shù)量的比值,它的精度與系統(tǒng)誤差相關。準確率越高,流量分類更精確。
3)錯誤率(Error Rate,ER):錯誤率是被識別為攻擊流的正常流的數(shù)量與被識別為正常流的攻擊流的數(shù)量的和,除以測試樣本中所有流的數(shù)量。錯誤率越低,分類效果越好。
首先在4.1節(jié)中模擬的SD-IoT環(huán)境中,對本文提出的SDIoT 環(huán)境下基于ELVR-Kmeans 算法的DDoS 攻擊檢測方法和經(jīng)典的K-means 算法進行性能比較分析,兩個算法都分別對表4 中的七組數(shù)據(jù)進行分類測試,比較它們的檢測率(DR)隨k值的增加而產(chǎn)生的變化。
由于K-means 算法中k值的選取會對分類結果造成較大的影響,所以分別測試k值在3 至7 的情況。分類結果如表4所示。由表4 中的數(shù)據(jù)可以看出在k=7 時本文算法的分類結果最好,而且隨著k值的增加,本文提出的算法的檢測率也在不斷上升,對于不同k值下的同組數(shù)據(jù)而言,本文算法的檢測率均高于K-means 算法,且算法較為穩(wěn)定,而K-means 算法的檢測率是不規(guī)則變化的。
七組數(shù)據(jù)在k的不同取值下的平均檢測率如圖6所示,可以看出,本文提出的算法相較于K-means 算法檢測率會隨著k值的增加而上升,而且在不同的k值下的檢測率都好于K-means算法。
由以上實驗得知在k=7 時算法的分類檢測率最好,然后與文獻[19]中提出的基于SVM+K-means 的檢測方法、SVM 算法進行比較,使用檢測率、準確率和錯誤率三個參數(shù)來評判算法的性能。
表4 不同k值下的檢測率Tab. 4 Detection rate with different k values
圖6 平均檢測率Fig. 6 Average detection rate
表5 揭示了四種算法的檢測率、準確率和錯誤率,在k=7時,本文提出的算法的檢測率最高,為96.43%。相較于Kmeans 算法、SVM 算法和SVM+K-means 算法的檢測率分別提升了4.89 個百分點、3.31 個百分點和1.07 個百分點。在準確率的比較中,本文提出的算法的準確率同樣是最高的,為98.71%,相較于K-means 算法、SVM 算法和SVM+K-means 算法的準確率分別提升了1.42個百分點、5.88個百分點和3.11個百分點。從表5 中的錯誤率的比較中可以看出,本文所提出的算法錯誤率最低,為1.29%。由此可以看出本文算法的性能優(yōu)于K-means算法、SVM算法和SVM+K-means算法。
表5 四種算法性能比較 單位:%Tab. 5 Performance comparison of four algorithms unit:%
本文提出了一種SD-IoT 環(huán)境中基于ELVR-Kmeans 算法的DDoS 攻擊檢測方法,該方法有如下特點:1)將軟件定義技術引入到物聯(lián)網(wǎng)中,從而可以將原本難以部署在物聯(lián)網(wǎng)中的高性能的、資源消耗大的DDoS 攻擊檢測系統(tǒng)部署在SD-IoT控制器中;2)通過分析SD-IoT 環(huán)境下DDoS 攻擊流量的特性,提取出與DDoS 攻擊相關的七元組特征;3)針對SD-IoT 中DDoS 攻擊檢測七元組的特征,提出了ELVR-Kmeans 算法。最后在模擬環(huán)境中對本文提出的算法進行測試。測試結果表明,該算法的檢測率和準確率相較于SVM+K-means 算法有提升,而錯誤率則大幅下降。然而,該算法的執(zhí)行時間略高于傳統(tǒng)的K-means 算法,下一步的工作就是要降低算法的執(zhí)行時間。