鮑 捷,牛 頡,張 勇,鄧海勤
(1.北京郵電大學 電子工程學院,北京 100876;2.愛動超越人工智能科技(北京)有限責任公司,北京 100007)
隨著當前物聯(lián)網(wǎng)在全球各領(lǐng)域的廣泛應(yīng)用與快速發(fā)展,作為一種信息承載工具,物聯(lián)網(wǎng)已經(jīng)成為人們生活中不可缺少的一部分。物聯(lián)網(wǎng)網(wǎng)絡(luò)安全問題越來越成為廣受關(guān)注的焦點。出于不良目的所產(chǎn)生的異常流量影響著物聯(lián)網(wǎng)的正常運轉(zhuǎn),用戶主機面臨新的安全隱患,進一步影響了廣大人民群眾的日常工作與生活。
傳統(tǒng)的通過靜態(tài)規(guī)則匹配的網(wǎng)絡(luò)異常檢測方法在動態(tài)、復(fù)雜的網(wǎng)絡(luò)環(huán)境中難以檢測出未知異常和攻擊類型,不能滿足網(wǎng)絡(luò)安全檢測的要求。機器學習具有自學習、自演化的特性,可以適應(yīng)復(fù)雜多變的網(wǎng)絡(luò)環(huán)境,能夠檢測出未知異常,滿足實時準確檢測的需求。因此,使用機器學習的方法檢測網(wǎng)絡(luò)中海量的流量,對于物聯(lián)網(wǎng)領(lǐng)域的發(fā)展具有重要的意義。本文借鑒傳統(tǒng)網(wǎng)絡(luò)中異常流量檢測技術(shù)加以改進,從而識別物聯(lián)網(wǎng)中異常流量。因為在實時網(wǎng)絡(luò)流量異常檢測中無法得到大量帶標記的樣本記錄,所以從機器學習的無監(jiān)督學習算法中選取One-class SVM、Isolation Forest、K-means等方法進行網(wǎng)絡(luò)異常流量檢測,對相關(guān)技術(shù)進行分析和比較。
傳統(tǒng)的預(yù)防網(wǎng)絡(luò)安全的技術(shù)主要有防火墻、病毒的查殺軟件等,這些措施只能夠發(fā)現(xiàn)一些簡單的網(wǎng)絡(luò)入侵,對于一些設(shè)計較為嚴密的入侵則較難判斷。新形勢下的互聯(lián)網(wǎng)異常流量已經(jīng)變得比以往更加復(fù)雜多變,因此傳統(tǒng)的預(yù)防網(wǎng)絡(luò)安全的技術(shù)只是在特定的范圍中或是一定的程度上起到作用。文獻[1]主要是從分類、聚類、統(tǒng)計、信息理論四個角度來總結(jié)異常流量檢測技術(shù)。文獻[2]介紹利用數(shù)據(jù)挖掘的異常流量檢測技術(shù),主要從分類和結(jié)合數(shù)據(jù)挖掘、聚類、關(guān)聯(lián)分析的多種算法來歸納。張楠等在文獻[3]總結(jié)了當前有哪些主流的異常流量檢測技術(shù)和檢測過程中的技術(shù)和關(guān)鍵問題。文獻[4]從入侵檢測方法中的三個方面入手,介紹了異常檢測的方法和技術(shù)類型等。文獻[5]從動態(tài)網(wǎng)絡(luò)的異常檢測出發(fā),歸納了動態(tài)網(wǎng)絡(luò)中的四種異常類型。雖然有很多機器學習的算法被應(yīng)用到異常流量檢測中,但是都沒有從機器學習的角度全面地介紹網(wǎng)絡(luò)異常流量檢測。
基于監(jiān)督機器學習的方法是利用標記的數(shù)據(jù)集將分類器輸出的結(jié)果與實際結(jié)果進行連續(xù)比較,然后調(diào)整參數(shù)直至訓練出最優(yōu)模型。早在2005年,樸素貝葉斯被摩爾等人引入并進行流量的識別與分類,之后貝葉斯網(wǎng)絡(luò)再一次被奧爾德等人應(yīng)用,并在性能上加以提高,使用效率優(yōu)于從前。另一種較為常見的監(jiān)督算法是C4.5決策樹,應(yīng)用于K-Nearest Neighbor(KNN)以及流量的識別。但是,這些方法整體傾向于局部優(yōu)化。支持向量機是有監(jiān)督的算法,可以避免局部優(yōu)化,在識別流量方面顯示出高度的準確性,并檢測異常流量。文獻[6]使用KNN算法來實現(xiàn)異常行為的檢測,文獻[7]把KNN和K-means融合在一起形成一個新的方法,文獻[8]針對冗余特征和樣本數(shù)據(jù)高維度等問題,使用KNN和改進的人工魚群算法來選擇特征向量,提高異常檢測的效率和正確率。文獻[9]是采用的決策樹來實現(xiàn)網(wǎng)絡(luò)異常流量檢測。
無監(jiān)督的算法旨在聚類,即根據(jù)統(tǒng)計特征來聚合相似的流量,分離不相似的流量并建立群集和網(wǎng)絡(luò)應(yīng)用之間的映射。在2004年,期望最大化(Expectancy Maximum,EM)被McGregor應(yīng)用于流量分類。但是,它只能識別未知流量,不能識別出流量的具體應(yīng)用。然后,Zander st.通過利用EM構(gòu)建無監(jiān)督貝葉斯分類器提出了AutoClass。盡管AutoClass可以識別某種類型的流量,但仍然很難識別其他類型的流量。通常,非監(jiān)督方法比識別特定類型更適合在動態(tài)環(huán)境中查找新的應(yīng)用程序類型。文獻[10]提出了一種改進的K-means的方法,將多次劃分的數(shù)據(jù)集相交直至結(jié)果收斂,減少迭代次數(shù)、加快了算法的速度。
無監(jiān)督學習相比較于監(jiān)督學習是在數(shù)據(jù)不知道任何標簽的情況下,按照偏好所訓練出的算法,這種方法將所有的數(shù)據(jù)與不同的標簽映射。
One-class SVM指的是訓練數(shù)據(jù)只有一類的數(shù)據(jù),學習到這類數(shù)據(jù)的邊界,然后導(dǎo)入測試集,在此范圍內(nèi)的數(shù)據(jù)標簽為1,之外的標簽為-1。例如:假如對工廠的產(chǎn)品進行檢查,往往知道的大多數(shù)數(shù)據(jù)都是合格產(chǎn)品的參數(shù),這個時候可以通過合格產(chǎn)品的參數(shù)訓練一個一類分類器,超出這個邊界的便可標記為不合格產(chǎn)品。
它的求解模型如下:
(1)
subject to (w·Φ(xi))≥ρ-ξi,ξi≥0
(2)
K-means是一種聚類算法,聚類是針對大量未知標簽的數(shù)據(jù)集,按照數(shù)據(jù)內(nèi)部存在的數(shù)據(jù)特征劃分為不同的類別,使類別內(nèi)的數(shù)據(jù)比較相似,類別之間的數(shù)據(jù)相似度比較大,屬于無監(jiān)督學習算法。輸入的是樣本集,聚類的簇數(shù)是l,最大迭代次數(shù)N的輸出是簇劃分。
算法流程:
1.選擇K個點作為初始質(zhì)心;2.將每個點對應(yīng)到最近的質(zhì)心,形成K個簇;3.重新計算每個簇的質(zhì)心;4.重復(fù)上述步驟;5.直到達到最大迭代次數(shù)或者是簇不發(fā)生變化。
尋找使誤差準則函數(shù)最小的簇是K-means算法的目的。簇與簇之間的區(qū)別在潛在的簇形狀為凸面的時候比較明顯,而且當簇的大小差不多時,通常情況下會產(chǎn)生比較理想的聚類結(jié)果。時間復(fù)雜度為O(tKmn)的該算法是與樣本數(shù)量呈線性相關(guān)的,所以在處理大數(shù)據(jù)集合的時候效率非常高,并且在處理時也具有很好的伸縮性。除了對初始聚類中心較為敏感以及需要事先確定簇數(shù)K之外,算法的結(jié)束通常是采取局部最優(yōu)的方法,并且對孤立點和“噪聲”比較敏感,該方法實際上不適于尋找凸面形狀的簇或者大小差別很小的簇。
Isolation Forest是隨機采樣一部分數(shù)據(jù)構(gòu)造每一顆iTree,保證不同樹之間的差異性,iTree的構(gòu)造需要首先隨機選擇一個屬性,然后隨機選擇這個屬性的一個值,把小于這個值的作為左孩子,大于等于的作為右孩子,一般直到傳入的數(shù)據(jù)集的樹的高度達到了限定高度,iForest具有線性時間復(fù)雜度,對全局稀疏點敏感。
算法流程:
1.選擇一個屬性Attr;2.選擇該屬性的一個值Value;3.Attr對每條記錄進行分類,把Attr小于Value的記錄歸為左孩子,把大于等于Value的記錄歸為右孩子;4.遞歸的構(gòu)造左孩子和右孩子,直至滿足以下的兩個條件之一:(1)傳入的數(shù)據(jù)集只有一條記錄或者有多條一樣的記錄;(2)樹的高度達到了限定高度。
把iTree構(gòu)建好之后就可以預(yù)測數(shù)據(jù)了,預(yù)測的過程如下:先在iTree上運行一下訓練數(shù)據(jù)集,看通過測試之后得到的記錄落在哪個葉子節(jié)點。iTree能有效檢測異常的假設(shè)是:網(wǎng)絡(luò)流量異常點一般來說都是十分稀少的,所以在iTree中會很快找到這樣的葉子節(jié)點,葉子節(jié)點到根節(jié)點的路徑用h(x)來表示,可以用這個參數(shù)的長度判斷一條記錄x是否是異常點。對于一個包含n條記錄的數(shù)據(jù)集,其構(gòu)造的樹的高度最小值為log(n),最大值為n-1,歸一化公式如下:
(3)
c(n)=2H(n-1)-(2(n-1)/n)
(4)
其中H(k)=ln(k)+ξ,ξ=0.577 215 664 9 為歐拉常數(shù)。
s(x,n)是記錄x在由n個樣本的訓練數(shù)據(jù)構(gòu)成的iTree的異常指數(shù),s(x,n)取值范圍為[0,1]異常情況的判斷分以下幾種情況:
(1)越接近1表示是異常點的可能性高;
(2)越接近0表示是正常點的可能性比較高;
(3)如果大部分的訓練樣本的s(x,n)都接近于0.5, 說明整個數(shù)據(jù)集都沒有明顯的異常值。
iForest和Random Forest的方法有些類似,都是隨機采樣一部分數(shù)據(jù)集去構(gòu)造每一棵樹,保證不同樹之間的差異性,不過iForest與RF不同,采樣的數(shù)據(jù)量Psi不需要等于n,可以遠遠小于n。
算法流程如下:
輸入:輸入數(shù)據(jù)X,iTree的數(shù)量,樣本大小ψ 輸出:iForest1.初始化Forest;2.設(shè)置限制高度;3.對于每個分支構(gòu)造iTree并賦給Forest;4.返回iForest。
Isolation Forest算法主要有兩個參數(shù):一個是二叉樹的個數(shù);另一個是訓練單棵iTree時候抽取樣本的數(shù)目。實驗表明,當設(shè)定為100棵樹,抽樣樣本數(shù)為256條時,IF在大多數(shù)情況下已經(jīng)可以取得不錯的效果,體現(xiàn)了算法的簡單、高效。
Isolation Forest是無監(jiān)督的異常檢測算法,在實際應(yīng)用時,并不需要黑白標簽。需要注意的是:(1)如果訓練樣本中異常樣本的比例比較高,違背了先前提到的異常檢測的基本假設(shè),可能最終的效果會受影響;(2)異常檢測與具體的應(yīng)用場景緊密相關(guān),算法檢測出的“異?!辈灰欢ǚ蠄鼍皩嶋H。比如,在識別虛假交易時,異常的交易未必就是虛假的交易。所以,在特征選擇時,可能需要過濾不相關(guān)的特征,以免識別出一些不相關(guān)的“異?!薄?/p>
本文中pcap流量包使用開源數(shù)據(jù)集CICIDS2017[11],CICIDS2017數(shù)據(jù)集包含良性和最新的常見攻擊,類似于真實的真實數(shù)據(jù)(PCAP)。還包括使用CICFlowMeter進行網(wǎng)絡(luò)流量分析的結(jié)果,該流量分析具有基于時間戳、源和目標IP、源和目標端口、協(xié)議和攻擊(CSV文件)的標記流。使用wireshark對pcap流量包進行解析、預(yù)處理操作,最后得到41維的.csv文件作為本文使用的數(shù)據(jù)集。對三種結(jié)果數(shù)據(jù)整理、計算,可得到正確率、誤報率、漏報率、效率,如表1所示。
表1 實驗結(jié)果分析
從表中可以看出,K-means在正確率、誤報率、漏報率、效率方面要優(yōu)于Isolation Forest和One-class SVM。綜合來看,K-means表現(xiàn)要優(yōu)于其他兩種無監(jiān)督機器學習算法。
使用三種不同的無監(jiān)督機器學習算法對物聯(lián)網(wǎng)異常流量進行檢測,通過結(jié)果對比可以得到K-means算法要優(yōu)于其他兩種算法,Isolation Forest算法表現(xiàn)最差。希望為無監(jiān)督機器學習算法檢測物聯(lián)網(wǎng)流量研究提供借鑒。