胡希文,彭艷兵
(1.武漢郵電科學(xué)研究院,湖北武漢 430070;2.南京烽火天地通信科技有限公司,江蘇南京 210019)
本世紀(jì)以來(lái),隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展和網(wǎng)絡(luò)規(guī)模的持續(xù)擴(kuò)大,蠕蟲(chóng)和間諜軟件等零日網(wǎng)絡(luò)攻擊變得越來(lái)越普遍與危險(xiǎn)[1]。而現(xiàn)有的基于規(guī)則匹配的入侵檢測(cè)機(jī)制常常由于其過(guò)于死板而不足以檢測(cè)到這些攻擊。因此,研究者們開(kāi)發(fā)了基于異常檢測(cè)的入侵檢測(cè)方法來(lái)應(yīng)對(duì)這類(lèi)可以快速變異的攻擊。
在各種入侵檢測(cè)方法中,文獻(xiàn)[2]研究了基于統(tǒng)計(jì)學(xué)方法的入侵檢測(cè),文獻(xiàn)[3]的研究側(cè)重于異常檢測(cè)的理論措施,它主要研究了異常檢測(cè)中的信息理論,如熵、條件熵、相對(duì)條件熵、信息增益等。文獻(xiàn)[4]主要研究了基于基礎(chǔ)機(jī)器學(xué)習(xí)算法如K-means 與KNN的入侵檢測(cè)。
文中研究的主要是基于SVM的入侵檢測(cè)方法。軟間隔支持向量機(jī)由Cortes 提出,所以經(jīng)常被稱(chēng)為C-SVM,它在分類(lèi)問(wèn)題中通常有很好的性能[5]。然而,軟間隔支持向量機(jī)并不太適合用于檢測(cè)網(wǎng)絡(luò)流量中的新攻擊,因?yàn)樵诒O(jiān)督學(xué)習(xí)過(guò)程中需要預(yù)先獲取新攻擊的特征信息,需要人為將這些流量數(shù)據(jù)分為正常流量和攻擊流量,并分別貼上標(biāo)簽,導(dǎo)致了系統(tǒng)額外的時(shí)間和成本開(kāi)銷(xiāo)。因此,在入侵檢測(cè)系統(tǒng)中可以考慮使用無(wú)監(jiān)督學(xué)習(xí)的方法來(lái)進(jìn)行異常檢測(cè)。在SVM 家族里,適合這一場(chǎng)景的是單類(lèi)支持向量機(jī)(One-class SVM),它屬于無(wú)監(jiān)督學(xué)習(xí)算法。然而,在實(shí)際使用過(guò)程中,單類(lèi)支持向量機(jī)有著假陽(yáng)性率高的問(wèn)題[6],用其進(jìn)行分類(lèi)過(guò)后的數(shù)據(jù),往往還需要進(jìn)行第二次過(guò)濾才能有較好的效果,這無(wú)疑增加了系統(tǒng)的操作難度與復(fù)雜性。
文中采用加拿大紐布倫斯威克大學(xué)(University of New Brunswick,UNB)最新的入侵檢測(cè)數(shù)據(jù)集CSE-CIC-IDS2018 作為訓(xùn)練與測(cè)試數(shù)據(jù)集,該數(shù)據(jù)集是當(dāng)前入侵檢測(cè)領(lǐng)域最前沿的數(shù)據(jù)集,相比于已有近二十年歷史的DARPA 數(shù)據(jù)集和KDD CUP 數(shù)據(jù)集,該數(shù)據(jù)集無(wú)疑更貼近現(xiàn)在的網(wǎng)絡(luò)環(huán)境,更具有實(shí)用性。
在CSE-CIC-IDS 之前,入侵檢測(cè)數(shù)據(jù)集幾乎都是以DARPA 和KDD CUP 為主。隨著網(wǎng)絡(luò)用戶(hù)行為的變化以及網(wǎng)絡(luò)入侵的逐步演變,現(xiàn)在這些很老的數(shù)據(jù)集已不再適合現(xiàn)在瞬息萬(wàn)變的動(dòng)態(tài)網(wǎng)絡(luò)環(huán)境。針對(duì)這一點(diǎn),UNB的網(wǎng)絡(luò)安全研究員們開(kāi)發(fā)出了一種網(wǎng)絡(luò)流量生成器和分析器工具CICFlowMerter,該工具使用Java編寫(xiě),免費(fèi)開(kāi)源,可以在Github上獲得。
CSE-CIC-IDS2018 數(shù)據(jù)集包括7 種不同的攻擊場(chǎng)景,分別是暴力攻擊(Brute-force)、心臟滴血漏洞攻擊(Heartbleed)、僵尸網(wǎng)絡(luò)攻擊(Botnet)、DoS、DDoS、web 應(yīng)用攻擊集合(Web attacks)以及滲透攻擊(Infilteration),它的每條數(shù)據(jù)包含80 個(gè)特征[7]。
原始數(shù)據(jù)去重合并后得到7 873 490 條數(shù)據(jù)。在進(jìn)一步處理過(guò)程中發(fā)現(xiàn)該數(shù)據(jù)集里面某幾列數(shù)據(jù)是完全重復(fù)的,對(duì)于一個(gè)特征來(lái)說(shuō),如果所有樣本中該特征的值都一樣,那么它將不會(huì)對(duì)該模型的訓(xùn)練有任何影響。此外,還發(fā)現(xiàn)有一些行數(shù)據(jù)包含NaN與Infinity 這種無(wú)法進(jìn)行數(shù)值化的數(shù)據(jù)。對(duì)這些數(shù)據(jù)進(jìn)行清洗過(guò)濾后得到剩余的3 890 993 條數(shù)據(jù),每條數(shù)據(jù)有70 個(gè)特征。清洗后的數(shù)據(jù)根據(jù)標(biāo)簽分布如表1 所示。

表1 數(shù)據(jù)集數(shù)據(jù)分布
由于SQL Injection 在原始數(shù)據(jù)中占比實(shí)在太低,若對(duì)其進(jìn)行等比例取樣,將得到個(gè)位數(shù)數(shù)量的樣本,這樣的數(shù)據(jù)量不適用于模型訓(xùn)練,故在抽取訓(xùn)練數(shù)據(jù)時(shí),忽略掉SQL Injection 數(shù)據(jù)。
為了保證各類(lèi)型數(shù)據(jù)占比與原數(shù)據(jù)一致,確保模型訓(xùn)練不會(huì)發(fā)生偏差,在訓(xùn)練模型和進(jìn)行n-fold交叉驗(yàn)證時(shí),在除去表1 中SQL Injection 數(shù)據(jù)之外的數(shù)據(jù)里,對(duì)每個(gè)類(lèi)型的數(shù)據(jù)等比例隨機(jī)抽取10%作為模型的輸入數(shù)據(jù)集。
在機(jī)器學(xué)習(xí)模型中,有一些模型是對(duì)數(shù)值敏感的模型,數(shù)值的范圍大小對(duì)它們的訓(xùn)練速度影響比較大,過(guò)大的數(shù)值范圍可能會(huì)導(dǎo)致模型訓(xùn)練速度過(guò)慢。SVM 家族就是這類(lèi)對(duì)數(shù)據(jù)范圍敏感的模型,故需要對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理[8]。文中采用Min-Max標(biāo)準(zhǔn)化,將數(shù)據(jù)映射到[0,1]的區(qū)間內(nèi):

其中,xi為標(biāo)準(zhǔn)化之前的第i列特征數(shù)據(jù),為標(biāo)準(zhǔn)化之后的第i列特征數(shù)據(jù),xMin為第i列特征數(shù)據(jù)里面的最小值,xMax為第i列特征數(shù)據(jù)里面的最大值。
為了加快訓(xùn)練速度以及得到更加準(zhǔn)確的模型,文中在進(jìn)行模型訓(xùn)練之前,使用遺傳算法(Genetic Algorithm,GA)對(duì)輸入數(shù)據(jù)的70 個(gè)特征進(jìn)行特征選擇。遺傳算法的框架結(jié)構(gòu)如圖1 所示。

圖1 遺傳算法框架
由于文中使用遺傳算法的場(chǎng)景是進(jìn)行特征選擇,即判斷每個(gè)特征對(duì)于區(qū)分樣本的貢獻(xiàn)度[9]。對(duì)于一個(gè)特征來(lái)說(shuō),將不同類(lèi)型的樣本區(qū)分的越開(kāi)越好,所以文中采用Fisher 線(xiàn)性判別法作為適應(yīng)度函數(shù)。其核心思想是尋找一個(gè)最能反映類(lèi)與類(lèi)之間差異的投影方向,即要使得類(lèi)間間距盡可能大,而類(lèi)內(nèi)間距盡可能小[10],計(jì)算各類(lèi)特征向量之間平均距離的公式為:

其中,c是類(lèi)別的數(shù)量,Pi和Pj分別是類(lèi)別i和類(lèi)別j的先驗(yàn)概率,文中對(duì)于某類(lèi)先驗(yàn)概率直接取其在原始數(shù)據(jù)中的占比;ni和nj是類(lèi)別i和類(lèi)別j的數(shù)量,在上一步對(duì)原數(shù)據(jù)進(jìn)行抽樣時(shí)就已確定;為向量空間中兩個(gè)向量的距離度量,文中取歐氏距離作為度量,即:

輸入的樣本一共有70 個(gè)特征,設(shè)置初始種群大小為100,迭代次數(shù)為200,交叉率25%,變異率1%,然后觀察特征選擇結(jié)果,設(shè)特征選擇數(shù)量為d,實(shí)驗(yàn)結(jié)果如圖2 所示。

圖2 選取特征數(shù)量為50個(gè)時(shí)的適應(yīng)度
從圖2 可以明顯看出,隨著遺傳算法迭代次數(shù)增加,每一代種群的適應(yīng)度在逐漸變大,當(dāng)?shù)螖?shù)到達(dá)一定次數(shù)時(shí),算法會(huì)走向收斂。
然后擴(kuò)展到選擇所有個(gè)數(shù)特征的情況,將特征選擇數(shù)量d從1 取到70,對(duì)每個(gè)d都進(jìn)行10 次訓(xùn)練,一共訓(xùn)練700 次,每次訓(xùn)練的d都對(duì)應(yīng)著一個(gè)最優(yōu)適應(yīng)度,將10 次訓(xùn)練的最優(yōu)適應(yīng)度取平均值,然后按照d從大到小排列,橫向比較其最大平均適應(yīng)度,結(jié)果如圖3 所示。

圖3 選取特征數(shù)量與最高適應(yīng)度的關(guān)系
從圖3 可以看出,所選取的特征個(gè)數(shù)在35 個(gè)之前,最高適應(yīng)度呈現(xiàn)出很大的波動(dòng),而在35 個(gè)之后,曲線(xiàn)相對(duì)平穩(wěn),最終適應(yīng)度收斂在0.15~0.2 之間。
在上述獲取最優(yōu)適應(yīng)度的過(guò)程中,對(duì)選出的最優(yōu)特征進(jìn)行計(jì)數(shù)統(tǒng)計(jì),計(jì)算每個(gè)特征被選中的次數(shù),結(jié)果如圖4 所示。

圖4 每個(gè)特征被選中的次數(shù)
將700 次訓(xùn)練中每個(gè)特征被選中的次數(shù)作為每個(gè)特征的區(qū)分度,從圖4 可以看出,大部分點(diǎn)都具有比較好的區(qū)分度,只有一些少數(shù)的點(diǎn)被選中的次數(shù)比較少。剔除掉低于中位線(xiàn)太多的點(diǎn),可選出48個(gè)特征。
軟間隔支持向量機(jī),也叫C-SVM。它是在基礎(chǔ)SVM 之上改進(jìn)而成的。基礎(chǔ)的SVM 也被稱(chēng)為硬間隔支持向量機(jī),它主要有兩個(gè)缺點(diǎn),第一是不適用于線(xiàn)性不可分?jǐn)?shù)據(jù)集,第二是對(duì)離群數(shù)據(jù)點(diǎn)敏感[11]。軟間隔支持向量機(jī)引入一個(gè)松弛變量和一個(gè)懲罰參數(shù)C,它允許一些樣本點(diǎn)跨越間隔邊界甚至是跨出超平面,懲罰參數(shù)C的值限定了這個(gè)可以跨出的比例,它使得SVM 能夠在線(xiàn)性不可分的數(shù)據(jù)集上進(jìn)行擴(kuò)展,于是SVM的優(yōu)化問(wèn)題變?yōu)椋?/p>

其中,ξi表示松弛變量,n表示樣本總數(shù),C為懲罰系數(shù)。由上述公式可知:
1)離群點(diǎn)i的松弛變量值ξi越大,該點(diǎn)離間隔邊界就越遠(yuǎn);
2)所有在分離超平面內(nèi)的點(diǎn)的松弛變量ξi的值都等于0,即這些點(diǎn)都滿(mǎn)足條件
3)懲罰參數(shù)C越大,意味著對(duì)離群點(diǎn)的懲罰就越大,也就是只允許更少的點(diǎn)跨過(guò)間隔邊界,模型也會(huì)變得復(fù)雜,邊界會(huì)收束的更緊;而C越小,則允許更多的點(diǎn)會(huì)跨過(guò)間隔邊界,最終形成的模型邊界也更平滑;
4)b的大小與分離超平面到原點(diǎn)的距離相關(guān),b越大說(shuō)明分離超平面離原點(diǎn)越遠(yuǎn)。
One-class SVM 和一般的SVM 有所區(qū)別,它的核心思想是在樣本空間中尋找一個(gè)分離超平面,將樣本中的正例樣本空間與其他樣本空間分離開(kāi),預(yù)測(cè)時(shí)就用這個(gè)分離超平面作為決策標(biāo)準(zhǔn),認(rèn)為超平面內(nèi)的樣本是正例,超平面外的樣本是反例[12]。它的優(yōu)化函數(shù)為:

其中,ξi表示松弛變量,n表示樣本總數(shù),v類(lèi)似于軟間隔支持向量機(jī)中的C。由式(5)可知:
1)離群點(diǎn)i的松弛變量值ξi越大,該點(diǎn)離超平面邊界就越遠(yuǎn);
2)所有在超平面內(nèi)的點(diǎn)的ξi值都為0,即這些點(diǎn)滿(mǎn)足條件
3)v限定了異常點(diǎn)的比例上限,說(shuō)明允許一定比例的點(diǎn)跨過(guò)超平面;
4)v限定了分離超平面的邊界平滑度,更小的v值對(duì)應(yīng)著收束更緊的邊界;
5)ρ與分離超平面到原點(diǎn)的距離相關(guān),ρ越大說(shuō)明分離超平面離原點(diǎn)越遠(yuǎn),它與軟間隔支持向量機(jī)中的b功能一致。
在日常實(shí)際網(wǎng)絡(luò)使用中,絕大部分網(wǎng)絡(luò)流量都是正常流量,異常流量的占比相對(duì)較小。那么,就實(shí)際檢測(cè)而言,與正常流量相比,期望檢測(cè)到的異流量的占比也就相對(duì)較小。所以從僅理論上來(lái)說(shuō),Oneclass SVM的思想似乎更適用于入侵檢測(cè)。但是One-class SVM 在實(shí)際使用過(guò)程中并不是如此,它有一個(gè)很麻煩的缺點(diǎn),那就是它不像軟間隔支持向量機(jī)那么穩(wěn)定,可能會(huì)出現(xiàn)很高的假陽(yáng)性率,以至于將很多正常流量也識(shí)別成異常流量。針對(duì)這一點(diǎn),文中將One-class SVM 進(jìn)行改進(jìn),對(duì)其參數(shù)進(jìn)行調(diào)整,使其分類(lèi)超平面向分類(lèi)性能更好地向軟間隔支持向量機(jī)逼近。
由上述內(nèi)容可知,在One-class SVM的優(yōu)化函數(shù)中,與分離超平面位置相關(guān)的參數(shù)分別是||w||、ρ和由其優(yōu)化函數(shù)可知,為了得到最優(yōu)超平面,||w||需要盡可能小,ρ需要盡可能大與離群點(diǎn)相關(guān),這與軟間隔支持向量機(jī)是一致的。又由上文的對(duì)比發(fā)現(xiàn)參數(shù)v與參數(shù)C的功能基本一致,參數(shù)ρ與參數(shù)b功能基本一致,因此,可以使用參數(shù)C代替參數(shù)v,使用參數(shù)ρ代替參數(shù)b,于是得到如下優(yōu)化模型:

在文中實(shí)驗(yàn)里,數(shù)據(jù)集采用之前經(jīng)過(guò)清洗過(guò)濾后的CSE-CIC-IDS2018 數(shù)據(jù)集,在特征選擇之后,隨機(jī)抽取其中的10%,提取的數(shù)據(jù)量對(duì)應(yīng)類(lèi)型分布如表2 所示。

表2 用來(lái)訓(xùn)練和測(cè)試的數(shù)據(jù)量
在入侵檢測(cè)中,比較重要的評(píng)價(jià)指標(biāo)[13]有檢測(cè)率(detection rate)、漏報(bào)率(missing report rate)和誤報(bào)率(false alarm rate)。文中將檢測(cè)率定義為檢測(cè)出來(lái)的攻擊數(shù)/總攻擊數(shù),漏報(bào)率為未檢測(cè)出來(lái)的攻擊數(shù)/總攻擊數(shù),誤報(bào)率為正常流量被誤認(rèn)為是攻擊流量/總正常流量,公式如下:

在實(shí)際使用中,系統(tǒng)將正常流量判定為攻擊流量的情況是對(duì)用戶(hù)影響最大的,故在保證高準(zhǔn)確度的情況下,要嚴(yán)格控制誤報(bào)率這一指標(biāo)。
文中實(shí)驗(yàn)?zāi)P褪紫炔捎镁W(wǎng)格搜索法來(lái)尋找模型最佳參數(shù),在尋找到最佳模型參數(shù)之后采用交叉驗(yàn)證的方式對(duì)模型進(jìn)行驗(yàn)證。由于文中數(shù)據(jù)集選取的較大,故在進(jìn)行交叉驗(yàn)證時(shí),取n值為5,然后得到五輪不同的數(shù)據(jù)再取平均結(jié)果,實(shí)驗(yàn)結(jié)果如圖5~7 所示,分別展示出了3 種不同的模型對(duì)于測(cè)試數(shù)據(jù)集中每種攻擊的檢測(cè)率、漏報(bào)率和誤報(bào)率[14-20]。

圖5 檢測(cè)率
從實(shí)驗(yàn)結(jié)果可以看到,3 種SVM 模型對(duì)于Infilteration 攻擊的檢測(cè)基本沒(méi)用。經(jīng)過(guò)調(diào)研發(fā)現(xiàn),Infilteration 攻擊的流量特征與正常流量特征非常相似,僅靠SVM 確實(shí)無(wú)法將其識(shí)別出來(lái)。

圖6 漏報(bào)率

圖7 誤報(bào)率
在檢測(cè)率與漏報(bào)率方面,軟間隔支持向量機(jī)如逾期一樣,擁有非常好的檢測(cè)性能,它可以檢測(cè)出絕大部分的攻擊流量,只有很少的攻擊流量沒(méi)有被檢測(cè)到;而對(duì)于One-class SVM 而言,其雖然具備無(wú)監(jiān)督學(xué)習(xí)的特性,不需要對(duì)數(shù)據(jù)集做分類(lèi)處理,但是由結(jié)果可知,其對(duì)于大部分攻擊不具有很好的分類(lèi)性能;對(duì)于文中提出的ONE-ESVM 模型,它的檢測(cè)率與誤報(bào)率非常靠近原生的軟間隔支持向量機(jī),從側(cè)面證明了,它的分類(lèi)超平面的確逼近了軟間隔支持向量機(jī)。
在誤報(bào)率方面,軟間隔支持向量機(jī)對(duì)于大部分攻擊來(lái)說(shuō),有著很低的誤報(bào)率,完全可以滿(mǎn)足現(xiàn)實(shí)使用需求;One-class SVM 如預(yù)期一般,有著非常高的假陽(yáng)性率,它將大量的正常流量識(shí)別為攻擊流量,這種超高的誤報(bào)率在實(shí)際使用中是完全無(wú)法接受的;而文中的ONE-ESVM 模型有著與軟間隔支持向量機(jī)相似的誤報(bào)率,這在實(shí)際使用過(guò)程中完全可以被接受。
該實(shí)驗(yàn)結(jié)果說(shuō)明了,在取得最佳參數(shù)的情況下,文中提出的ONE-ESVM 模型確實(shí)可以按照預(yù)期逼近分類(lèi)性能很好的軟間隔支持向量機(jī),同時(shí)它也擁有了與One-class SVM 一樣的無(wú)監(jiān)督特征,使得獲取數(shù)據(jù)集時(shí)更加靈活,而不用花費(fèi)大量的精力去對(duì)數(shù)據(jù)集進(jìn)行標(biāo)記。
文中詳細(xì)闡述了將改進(jìn)的One-class SVM 應(yīng)用到網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)中的情況,并詳細(xì)介紹了傳統(tǒng)的軟間隔支持向量機(jī)模型和One-class SVM 模型,在此過(guò)程中使用遺傳算法作為特征選擇工具。
實(shí)驗(yàn)證明,改進(jìn)后的One-class SVM 模型在不丟失其無(wú)監(jiān)督學(xué)習(xí)特性的基礎(chǔ)上確實(shí)能夠?qū)涢g隔支持向量機(jī)進(jìn)行逼近,使其分類(lèi)性能和軟間隔支持向量機(jī)一樣好。