伍德軍,韓寶華
(1.四川交通職業(yè)技術(shù)學(xué)院,成都 611130;2.空軍工程大學(xué)空管領(lǐng)航學(xué)院,西安 710051)
隨著大數(shù)據(jù)時代的到來,網(wǎng)絡(luò)在人們?nèi)粘I钪邪缪葜絹碓街匾慕巧?。給人們帶來便利的同時其自身也面臨著越來越多的安全威脅。入侵檢測作為一種有效的主動安全防護(hù)方法,能夠在網(wǎng)絡(luò)受到危害之前進(jìn)行快速響應(yīng)和攔截,保障網(wǎng)絡(luò)運行的安全穩(wěn)定[1]。高精度的入侵檢測方法能夠有效降低網(wǎng)絡(luò)攻擊帶來的危害,這也使得其一直是網(wǎng)絡(luò)安全領(lǐng)域的研究熱點的原因。
入侵檢測,本質(zhì)上可歸結(jié)為關(guān)于網(wǎng)絡(luò)行為正常/異常的一個二分類問題。目前,在入侵檢測領(lǐng)域主要的研究方向是機(jī)器學(xué)習(xí)方法,一些典型的機(jī)器學(xué)習(xí)方法:K-近鄰(KNN)、BP 神經(jīng)網(wǎng)絡(luò)(BPNN)、支持向量機(jī)(SVM)等都在該領(lǐng)域得到成功應(yīng)用[2-7]。但是對于機(jī)器學(xué)習(xí),要想獲得一個比較理想的檢測模型,無法回避的一個問題是模型的參數(shù)設(shè)置。雖然很多學(xué)者在參數(shù)選擇上做了大量的工作,但是很難找出最優(yōu)的參數(shù),影響了檢測效果,這也成為機(jī)器學(xué)習(xí)方法應(yīng)用的一個瓶頸。近年來,集成學(xué)習(xí)算法得到越來越多的關(guān)注[8-10]。集成學(xué)習(xí)算法通過對多個基分類器的集成來提升整體算法的泛化性能。在集成學(xué)習(xí)中,要獲得好的泛化能力,要求各個基分類器判決正確率比隨機(jī)猜測要高,這個對于泛化能力較好的SVM、KNN、Bayesian 等方法幾乎不需要考慮參數(shù)問題,就可滿足要求,這樣就避免了參數(shù)選擇問題,可以突破目前的瓶頸問題。因此,本文選擇集成學(xué)習(xí),對入侵檢測問題進(jìn)行研究。
集成學(xué)習(xí)的過程主要包括兩部分:基分類器的構(gòu)建和多分類器結(jié)果的融合方法[11-13]。各個基分類器差異性越大,可以獲得的總體性能越強。為了提高各個基分類器之間的差異性,本文采用異質(zhì)集成和多采樣結(jié)合的方法。除此之外,對于各個基分類器檢測結(jié)果的融合方法也是影響檢測模型的關(guān)鍵問題。目前最常用且效果比較好的方法是投票法和加權(quán)法。相較而言,加權(quán)法是對投票方法的一種改進(jìn),它依據(jù)不同基分類器分類性能的好壞對其決策輸出結(jié)果進(jìn)行賦權(quán)。但是具體賦的權(quán)值為多少,得到的結(jié)果是否最優(yōu),這又是一個問題。為了解決此問題,本文采用螢火蟲優(yōu)化算法[14]對各個基分類器的決策輸出權(quán)值進(jìn)行優(yōu)化,找出最優(yōu)的賦權(quán)結(jié)果,提高檢測模型的精度。綜上,本文以集成學(xué)習(xí)方法為核心檢測算法,通過對基分類器構(gòu)造方法和結(jié)果融合方法的優(yōu)化改進(jìn),提高檢測模型的精度。
為了提高集成學(xué)習(xí)的效果,本文采用異構(gòu)集成學(xué)習(xí)方法,集成多種學(xué)習(xí)機(jī)器,并且從訓(xùn)練樣本集著手,提高訓(xùn)練樣本的差異性。通過這些方法來提高集成學(xué)習(xí)的泛化性,確保檢測精度。
集成學(xué)習(xí)是用有限個學(xué)習(xí)機(jī)器對同一個問題進(jìn)行學(xué)習(xí),在某輸入示例下的最終輸出是由構(gòu)成集成的各學(xué)習(xí)機(jī)器在該示例下的輸出共同決定。給出了集成分類器比個體分類器更加準(zhǔn)確的充要條件:個體分類器是準(zhǔn)確且多樣的。對于目前泛化性較好的機(jī)器學(xué)習(xí)方法,在幾乎不考慮參數(shù)條件的前提下能夠較好地滿足準(zhǔn)確性要求。這里需要重點考慮的是如何提高基分類器之間的差異性。
根據(jù)基分類器自身分類算法的異同,集成學(xué)習(xí)分為同構(gòu)和異構(gòu)集成兩種方式。同構(gòu)集成中所有基分類器均采用同一種學(xué)習(xí)算法,只是算法選擇的參數(shù)、樣本不同;異構(gòu)集成則采用不同的分類器,不同的學(xué)習(xí)算法能夠有效保證基分類器之間的差異性,因此,本文采用異構(gòu)集成,對入侵檢測進(jìn)行研究。
影響基分類器之間差異性除了上述的自身分類算法之外,還有構(gòu)建基分類器時對數(shù)據(jù)集的選擇。依據(jù)數(shù)據(jù)集選擇的方式,可將集成學(xué)習(xí)分為基于不同重抽樣技術(shù)的Pattern-Level 集成和基于不同樣本特征的Feature-level 集成。Pattern-Level 集成是利用簡單重復(fù)取樣或者改變樣本分布的方法,對原始數(shù)據(jù)集進(jìn)行再抽樣,使每一個基分類器得到不同的訓(xùn)練集,以提高它們之間的差異性。當(dāng)前,常用的Bagging 和Boosting 方法都是Pattern-Level 集成。Feature-Level 集成主要針對特征較多的場景,選擇反映該問題不同性質(zhì)的特征子集來形成每個基分類器的訓(xùn)練集。網(wǎng)絡(luò)入侵檢測的樣本維數(shù)往往較高,因此,在這里用Feature-level 的集成是可行的。為了提高基分類器的精度,使用Pattern-Level 和Feature-level 相結(jié)合的異質(zhì)集成構(gòu)造方式。
在獲取多個基分類器輸出的基礎(chǔ)上,需要融合這些輸出結(jié)果得到最終的檢測結(jié)果。由于入侵檢測是一個二分類問題,將各個基分類器的輸出結(jié)果設(shè)為+1 和-1,分別表示正常和檢測到入侵。假設(shè)有n個基分類器,第i 個基分類器的檢測結(jié)果為yi,融合的權(quán)重為xi,則最終的檢測結(jié)果y 為:
需要求出最優(yōu)的x,以保證模型的檢測精度最高,那么優(yōu)化目標(biāo)函數(shù):
其中,acc 表示在不同權(quán)重xi下整個集成模型的測試檢測精度。為了解決這一問題,選擇螢火蟲優(yōu)化算法(GSO)對其進(jìn)行求解。GSO 是一種典型的群體智能優(yōu)化算法,它最初是由Krishnanand 在2005 年提出[15],其基本思想是模擬螢火蟲群體活動中,亮度低的個體會向亮度高的個體靠攏,從而實現(xiàn)優(yōu)化。相較于其他的一些群體智能算法,它具有算法簡單,參數(shù)少且容易實現(xiàn)等優(yōu)點,適合于決策層權(quán)值的確定。
根據(jù)前面的分析,以及入侵檢測問題的實際情況,本文采用異構(gòu)集成,選擇當(dāng)前比較成熟的、泛化性能比較好的機(jī)器學(xué)習(xí)方法:SVM、KNN、Bayesian網(wǎng)絡(luò)以及BP 神經(jīng)網(wǎng)絡(luò)(BPNN),作為基分類器的學(xué)習(xí)方法。同時,為了進(jìn)一步提高基分類器之間的差異性,結(jié)合Pattern-Level 和Feature-Level 選擇訓(xùn)練集方法,提出一種GSO 優(yōu)化權(quán)值的集成學(xué)習(xí)檢測算法。具體算法流程如圖1 所示。
圖1 算法流程
具體步驟為:
步驟1:依據(jù)Bagging 方法,對樣本進(jìn)行有放回的重采樣,確定多個樣本子集;
步驟2:采用Feature-level 方法,分別對前面獲得的樣本子集進(jìn)行特征隨機(jī)選擇,獲得特征子集;
步驟3:采用不同的學(xué)習(xí)方法對步驟2 獲得的子集進(jìn)行學(xué)習(xí),其中,各個基分類器的參數(shù)采用簡單的試湊方法,進(jìn)而獲得各個基分類器;
步驟4:對各個基分類器的結(jié)果進(jìn)行加權(quán)綜合。權(quán)值采用1.2 節(jié)中的螢火蟲算法進(jìn)行尋優(yōu)獲得,最終的檢測結(jié)果通過符號函數(shù)輸出。
為了驗證本文算法的有效性,首先將從算法的有效性入手,通過將算法應(yīng)用于目前通用的數(shù)據(jù)集[15],考察算法的分類性能。這里分別選擇German、Ionosphere、Image 以及Thyoid 這4 個數(shù)據(jù)集作為實驗數(shù)據(jù)集??疾毂疚乃岬乃惴ㄅc傳統(tǒng)的分類方法之間以及Bagging、Boosting 集成算法之間的性能比較。文獻(xiàn)[10]提出對于集成學(xué)習(xí)而言,集成的基分類器不宜太多也不宜太少,參考文獻(xiàn)[10]選擇40 個基分類器,分別基于本文方法、bagging 和boosting 構(gòu)造基分類器。本文中在第1 層對樣本采樣,對每個樣本分別進(jìn)行5 次重采樣,在此基礎(chǔ)上,對各個子集進(jìn)行兩次隨機(jī)的特征選擇,特征選擇比例為80 豫。這樣就得到了10 個訓(xùn)練集?;谶@10個訓(xùn)練集,分別對其采用SVM、KNN、Bayesian 網(wǎng)絡(luò)以及BP 神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,得到40 個基分類器。采用多數(shù)投票法得到最終的分類結(jié)果。
首先比較單分類器和本文方法的分類效果。單分類器分別采用本文中的基分類器方法,即SVM、KNN、Bayesian 網(wǎng)絡(luò)以及BP 神經(jīng)網(wǎng)絡(luò)。SVM 和BP神經(jīng)網(wǎng)絡(luò)均選擇高斯函數(shù)作為核函數(shù)和激活函數(shù),各個學(xué)習(xí)器的參數(shù)均通過5 折交叉驗證和網(wǎng)格搜索方法確定。本文算法中各個基分類器的參數(shù)通過簡單設(shè)定,未作專門處理。由于所選的學(xué)習(xí)機(jī)的學(xué)習(xí)能力都較強,因此,一般選擇的參數(shù)均符合要求。在GSO 優(yōu)化算法中,依據(jù)問題,設(shè)置螢火蟲數(shù)目為50 個,熒光素?fù)]發(fā)因子ρ=0.4,熒光素更新率γ=0.6,更新率β=0.08,鄰域閾值=5,代次數(shù)為100 代。得到的實驗結(jié)果如圖2 所示。
圖2 不同數(shù)據(jù)集的GSO 尋優(yōu)結(jié)果
從圖中可以看出,在初始時各個數(shù)據(jù)集的分類精度相較而言都比較高,這說明集成學(xué)習(xí)算法能夠達(dá)到比較好的學(xué)習(xí)結(jié)果,而且整個算法是穩(wěn)定的。在不同數(shù)據(jù)集上,算法都快速收斂,說明GSO 算法的收斂性是比較好,各個算法最終都穩(wěn)定在一個比較高的分類精度上。接下來將本文結(jié)果與其他幾種單分類方法進(jìn)行比較,表1 給出了分類結(jié)果。
表1 通用數(shù)據(jù)集實驗精度比較
從實驗結(jié)果可以看出,在這些算法中KNN 的分類精度基本上是最低的,相較其他學(xué)習(xí)方法,KNN 算法簡單,運行效率最高,但是它所能提取的分類信息也是最少的。SVM、Bayesian 以及BPNN 獲得接近的分類效果,這3 種方法采用不同的學(xué)習(xí)機(jī)制從不同的角度對樣本進(jìn)行學(xué)習(xí),它們均能較好地處理非線性分類問題。本文提出的方法能夠獲得最優(yōu)的分類精度,這是由于通過對各個分類器的集成可以將一些個體分類器的錯、漏判由其他個體分類器所彌補,這種集成學(xué)習(xí)方式使整體分類的泛化能力進(jìn)一步提升。這也是集成學(xué)習(xí)的優(yōu)勢。
接下來再分析本文方法與傳統(tǒng)的集成學(xué)習(xí)算法之間的性能。傳統(tǒng)的集成算法選擇經(jīng)典的Bagging、Boosting 集成算法,集成的基分類器個數(shù)也為40 個。基分類器之間的差異度能夠反映集成學(xué)習(xí)的效果。文獻(xiàn)[17]給出差異度的定義。
從表2 可以看出,總體上Bagging 和Boosting 集成的方法差異度不是特別大,相較而言本文方法的平均差異度明顯高于前面兩種方法。這是由于本文方法采用的是異構(gòu)集成。下面從比較幾種集成算法的分類精度考察它們的泛化性能,這里重點考察本文的GSO 優(yōu)化和僅采用投票方式融合決策結(jié)果,表3 給出了這4 種方法的分類精度。
表2 基分類器平均差異度比較
表3 集成算法分類精度結(jié)果
從實驗結(jié)果可以看出,幾種集成算法相較單種學(xué)習(xí)方法在分類精度上都有了一定的提升。在本文構(gòu)建基分類器的條件下,投票融合的分類精度相較傳統(tǒng)的Bagging 和Boosting 更高,這也是由于基分類器差異增大后整個集成效果得到提高,相較簡單的投票方法,通過GSO 優(yōu)化的方法能夠獲得最高的分類精度,說明本文的方法確實能夠進(jìn)一步提高集成學(xué)習(xí)的性能,為其在入侵檢測中的應(yīng)用打下基礎(chǔ)。
上面的實驗驗證了本文所提的GSO 優(yōu)化集成學(xué)習(xí)算法,在處理二分類問題上是可以得到較好的精度的。本節(jié)將算法應(yīng)用于入侵檢測中,入侵檢測數(shù)據(jù)集選擇CSE-CIC-IDS2018。該數(shù)據(jù)集由加拿大通信安全機(jī)構(gòu)(Communications Security Establishment,簡稱CSE)和加拿大網(wǎng)絡(luò)安全研究所(Canadian Institute for Cybersecurity,簡稱CIC)聯(lián)合發(fā)布。該數(shù)據(jù)集是基于50 臺攻擊主機(jī),對一個企業(yè)內(nèi)5 個部門的420 臺計算機(jī)和30 臺服務(wù)器進(jìn)行攻擊的網(wǎng)絡(luò)流量和系統(tǒng)日志,總共包括7 種攻擊類型:Bruteforce,Heartbleed,Botnet,DoS,DDoS,Web 和Infiltration。相較傳統(tǒng)的KDD99 數(shù)據(jù)集[17],CSE-CIC-IDS 2018 能夠更好地模擬企業(yè)的網(wǎng)絡(luò)環(huán)境,它包含了較多網(wǎng)絡(luò)協(xié)議和新的攻擊方式。原始的數(shù)據(jù)集非常龐大,其中,正常樣本和入侵樣本比例大約為4∶1,在本實驗中,按4∶1 的比例選擇訓(xùn)練樣本。從訓(xùn)練集中隨機(jī)選擇正常樣本4 000 條,入侵樣本1 000 條(包括所有的選擇7 種攻擊類型)。測試樣本為1 000 條正常樣本,攻擊樣本250 條。分別采用基于單個機(jī)器學(xué)習(xí)方法(這里選擇SVM),集成學(xué)習(xí)算法bagging、boosting,以及本文方法進(jìn)行檢測實驗,其中,bagging 和boosting 算法集成的基分類器均為SVM,比較幾種算法的誤檢率、漏報率和整體的檢測精度這3 個指標(biāo)。表4 為檢測結(jié)果。
表4 入侵檢測實驗結(jié)果
從表4 得到的檢測結(jié)果可以看出,僅用SVM 算法進(jìn)行入侵檢測的誤報率和漏報率相較后面的集成算法均比較高。從這個結(jié)果也可以看出集成學(xué)習(xí)的優(yōu)勢。而在3 種集成算法中,本文提出的算法能夠獲得最好的檢測效果,這也和我們在UCI 數(shù)據(jù)集上得到的實驗結(jié)果是一致的,通過對基分類器差異性的增大,提高了算法的泛化性能。具體統(tǒng)計對不同攻擊方法的檢測情況,我們可以發(fā)現(xiàn),提出的算法對Botnet、DoS、DDoS 以及Web 等攻擊類型的檢測率基本達(dá)到了100 豫,主要的錯誤判斷集中在Brute-force 和Infiltration 兩種攻擊類型上。對這兩種攻擊的數(shù)據(jù)進(jìn)行分析,發(fā)現(xiàn)異常樣本中存在著部分正常流量數(shù)據(jù),在特征上與異常流量具有相同的數(shù)值。比較幾種方法在這兩個易錯分?jǐn)?shù)據(jù)集上的表現(xiàn),本文提出的方法能夠大大提升檢測算法對這兩類攻擊的檢測精度。
接下來從接受者操作特性曲線(Receiver Operation Characteristic Curve,ROC)[18]來分析檢測算法的性能。通過ROC 曲線判斷模型好壞時,主要從曲線形態(tài)和AUC(Area Under Curve)兩個方面考察。如果曲線形態(tài)上越靠近左上角,模型的檢測效果越好;相反,則說明該模型的檢測效果越差。AUC 指的是ROC 曲線下方的面積,其大小可以反映檢測模型的診斷價值,AUC 值越接近1,說明模型的性能越好。圖3 給出了幾種算法的ROC 曲線:
圖3 幾種入侵檢測算法ROC 曲線
從圖3 中可以看出,整體上前面采用的幾種算法的ROC 曲線形態(tài)上均比較偏向左上角,說明都是比較好的檢測器。其中,本文提出的算法偏向最好,明顯優(yōu)于其他幾種檢測方法。從AUC 方面,本文方法的線下面積更大,達(dá)到了0.992,高于其他3種方法。綜上,從ROC 曲線可以看出本文提出方法的優(yōu)勢。
在現(xiàn)實中,對于網(wǎng)絡(luò)的攻擊往往不是持續(xù)性的,可能在某一些時段攻擊事件比較多,有些時段攻擊事件比較少。對應(yīng)到數(shù)據(jù)集中,表現(xiàn)為正常樣本和攻擊樣本的比例。這也對訓(xùn)練數(shù)據(jù)集采集過程提出一些挑戰(zhàn)。理論上,數(shù)據(jù)集越大,得到的模型檢測效果越好,但是也可能在檢測的初期,采集到的攻擊事件數(shù)目比較少,在這種情況下,檢測模型的效果如何?這里,考察不同的攻擊強度(攻擊樣本數(shù)與正常樣本數(shù)的比值)下,各種檢測模型的檢測效果分別以5 豫,10 豫,15 豫和20 豫模擬不同攻擊強度下的樣本,以這4 種攻擊樣本訓(xùn)練得到檢測模型,其在不同學(xué)習(xí)模式下的檢測精度如圖4 所示。
圖4 不同攻擊強度下的檢測精度
從圖4 可以看出,在不同的攻擊強度下,經(jīng)過訓(xùn)練得到的檢測模型均能較好地檢測出入侵事件。在攻擊強度較少,即訓(xùn)練樣本中,攻擊樣本條數(shù)比較少的情況下(攻擊強度5 豫),SVM 的檢測精度為91.5 豫,并且其漏檢率比較高,這主要是因為樣本的不均衡,使得SVM 的分類面偏移造成。從實驗結(jié)果也可以看出,樣本的不均衡會影響機(jī)器學(xué)習(xí)效果。相較其他幾種算法,本文方法在檢測精度上能夠一直維持在一個比較高的水平(最低為96.6 豫),說明本文算法是穩(wěn)定的,在樣本不均衡的情況下同樣能夠得到比較好的檢測效果。
網(wǎng)絡(luò)入侵檢測問題是一個典型的二分類問題,單個學(xué)習(xí)機(jī)器整體的檢測精度不高,為此采用了異構(gòu)集成學(xué)習(xí)的方法。通過對基分類器中訓(xùn)練集和訓(xùn)練方法兩個方面的差異增大,提高整體集成的效果。同時,為了進(jìn)一步提高檢測的精度,對集成學(xué)習(xí)的結(jié)果融合部分進(jìn)行了改進(jìn)。通過GSO 算法優(yōu)化找出最佳的基分類器權(quán)值,通過加權(quán)得到最終的檢測結(jié)果。實驗結(jié)果說明本文提出的方法是穩(wěn)定、準(zhǔn)確的。因此,本方法在網(wǎng)絡(luò)入侵檢測的實際應(yīng)用中具有一定的實用價值。在面對訓(xùn)練樣本不均情況時,依然有可以改進(jìn)的地方,這也是后期我們的研究側(cè)重點。