張偉娜
(中國民用航空飛行學院洛陽分院,河南 洛陽 471001)
目前互聯網應用已經深入到了人們生產生活的方方面面,計算機網絡在人類生活的各個領域已起著越來越重要的作用。隨之而來的網絡安全威脅變得日益嚴重,越來越多的關鍵業務已成了黑客的攻擊目標,各種網絡攻擊也層出不窮,一旦網絡安全出現問題,將造成巨大的損失,因此網絡安全成了一個困擾網絡應用的首要問題。尤其是蠕蟲、DDoS及DoS等攻擊帶來了巨大的危害,例如DDoS攻擊可以利用分散在網絡各處的其他主機協作共同完成對一臺主機攻擊的操作,從而使被攻擊主機進入不安全狀態。因此對網絡主機的狀態進行主動識別變得尤為重要,如何高效精確的檢測主機是否存在不安全行為或處于不安全狀態已成為一個十分必要的研究課題。
對于主機安全檢測這一問題,國內外許多專家也已經做了很多的研究。傳統的檢測模型主要有數據統計及模式匹配等簡單的數據分析方法。文獻[1]提出了兩種模式匹配的入侵檢測方法,一個是基于BM的模式匹配算法進行入侵檢測,另一個是根據字符出現概率進行優先匹配。文獻[2]對四種模式匹配的入侵檢測算法進行了測試和比較。文獻[3]使用樸素貝葉斯分類器實現異常檢測。隨著大數據及神經網絡等方法被廣泛地應用于各個領域,常用的數據挖掘方法也逐漸被引入主機安全檢測。文獻[4]提出了一種支持向量機的入侵檢測方法,并利用AdaBoost對其模型進行訓練。文獻[5]提出了一種改進的BP神經網絡進行主機安全檢測方法,主要是采用自動變速率學習法,同時引入遺忘因子等。文獻[6]提出了一個基于機器學習的網絡入侵檢測系統。文中提出了將兩種支持向量機結合起來的方法,此方法同時具有監督學習中的無監督學習的優點。文獻[7]提出了一種網絡入侵檢測的非線性分析方法,文中使用了一種非線性技術遞歸量化分析,這種方法通常用于具有時間相關性的數據統計。文中深入探討了遞歸量化分析和支持向量機技術在事件分類中的應用。結論表明非線性技術有助于獲取網絡數據的隱藏特性,當使用支持向量機機器學習時可以用于網絡異常檢測。
隨機森林是由Breiman于2001年提出,其本質也是一種對數據進行挖掘的理論,利用重抽樣方法抽取樣本,然后生成對應的決策樹,通過所有樹的投票得到最終結果,是一種有效的非線性數據的建模工具,近幾年來已經被廣泛地應用于計算機、醫學、經濟學、等多個領域。文獻[9]提出了一種利用隨機森林來改進圖像分割的方法,文中討論了隨機森林是如何學習判別特征的,并提供了這些特征重要性的量化,利用這種被量化的重要性特征設計一個策略進行有效的分類,作者在許多醫學圖像上測試了這種分割方法,結果表明這是一種有效的圖像分割方法。一些傳統方法例如決策樹、支持向量機及貝葉斯等在面對數據較多時檢測誤差率較大,因此檢測效率不夠。但是隨機森林在處理高緯度數據時具有較好的表現,隨機森林對異常值和噪聲具有很好的容忍度,并且具有較好的泛化能力,因此本文采用隨機森林分類模型實現對主機的網絡行為進行檢測。
隨機森林可以通過重采樣的方法從原始數據集中提取多個子樣本,通過構造多個針對不同的特征值的決策樹對同一問題進行預測,然后通過所有決策樹產生的結果進行投票,最終度量特征值重要程度,同時消除不太重要的特征值的影響,進而產生一個較為準確的結果。隨機森林模型對于海量的數據集也能達到較快的訓練速度,并且與單獨決策樹相比可以有效地避免過擬合現象,具有更好的穩定性。
本文分別對多個特征值構造多個決策樹,在每棵樹的每一次分割時對分割準則不斷進行調整。隨機森林中的決策樹由訓練集的二進制分割序列構造成終端節點,如圖1所示。

圖1 決策樹的結構
在主機安全檢測中把度量主機是否存在不安全狀態的相關參數作為輸入的特征值,用這些特征值對相應主機的安全狀態進行檢測。首先需要用訓練集對模型進行訓練,隨機森林的構建過程如下:
本文對主機安全狀態使用歸一化的方法進行評估,越接近1說明主機的狀態低,越接近0代表主機的安全狀態越高,因此實際主機的安全狀態為I=[I,I,…,I],其中∈[0,1]。定義第個與檢測主機安全狀態相關的個特征值數據集為X=[X,X,…,X],其中X∈R,X={X,X,…,X}。本文的I與X有對應關系,也就是說X為第個主機的特征值,I為第個主機的安全狀態。


其中y代表第個主機的安全狀態,x代表與檢測主機安全狀態相關的特征值,q代表分裂的第一部分主機安全狀態的平均值,q代表第二部分主機安全狀態的平均值。
決策樹不能一直的分裂,這會導致最終生成樹的復雜度過高,所以需要在合適的時候停止分裂。當數據屬性增多時,單棵決策樹的節點也會相應增加,同時也會增加決策樹的復雜度,最終導致模型的過擬合,因此在許多其他實驗中決策樹通常通過修剪進一步提升性能,也就是移除不重要的分支,但是本文在實驗中發現剪枝對檢測精度提高并不明顯,因此在本文中不對決策樹進行剪枝操作。本文直接設置節點到決策樹根節點的距離為決策樹的深度,也就是說當子節點深度D≤時,代表此節點為終端節點,不再進行分裂,本文中設置決策樹的=5。
在單棵決策樹構建完成后,需要構造其他決策樹共同形成隨機森林。本文采用有放回的堆積抽取個特征值,按照構造單棵決策樹的貪婪算法生成其他決策樹。每棵決策樹根據設定的決策樹深度停止分裂。最終生成的棵決策樹共同構成隨機森林檢測模型。檢測模型訓練完成后需要對模型的擬合度進行檢驗,本文通過最小化誤差來驗證檢驗模型,即:

其中當檢驗結果和與實際數值的差值足夠小時,說明整個模型的擬合程度較為充分,也就是說這個模型是有效的。隨機森林的構造方法具有多個優點,首先通過隨機選擇特征值使得每棵決策樹的關聯性更小,這可以提高模型的檢測精度,并避免出現過擬合現象;其次可以區別特征值在分類中的重要性,并且單個決策樹增長速度更快;最后針對具有噪聲的數據也具有良好的穩定性。
本文的數據通過實驗仿真在局域網模擬DDOS攻擊采集相應特征值數據并進行模型的參數訓練與檢測驗證。得到數據集后,首先對數據進行預處理,由于各種實際原因,原始數據包含一些缺失或無效的數據,本文對缺失的數據使用平均值進行填充。然后把原始數據集分為兩個子集,分別是訓練集和測試集。選取方式為隨機抽取多個樣本作為訓練集,其余的未被選中的數據集作為測試集。首先用訓練集的數據來訓練的檢測模型,從原始數據集中隨機抽取多個子集,每個子集組成每棵決策樹的訓練集,然后按照相應的方法構造對應的決策樹,過程如圖2所示。然后利用測試集的數據通過訓練完成的決策樹,每棵決策樹共同投票得到最終分類結果,即使用測試集來驗證整個檢測模型的過程如圖3所示。為了加快訓練和檢測的過程,本文采用歸一化方法對預處理后的數據集進行處理。在訓練模型之前,對原始數據進行歸一化處理并不會對檢測結果有影響,因為在得到預測結果后,通過對歸一化過程進行逆向處理,就可以得到正常檢測值。

圖2 模型訓練過程

圖3 模型測試過程
本檢測模型使用的特征值包括五種,分別是特殊協議所占總流量的比例、網絡傳輸速率、實時連接會話數、TCP確認報文數量和報文長度。在生成每個決策樹時采用隨機選取多個不同方面的多個特征值。檢測方法的性能使用三種常用的有效性度量來評估,分別是誤報率、檢測率和漏報率。其中誤報率為安全樣本被判斷為不安全樣本數量與安全樣本總數的比,檢測率為成功檢測出不安全樣本數量與不安全樣本總數的比。
從表1的試驗結果可以看出本文使用的檢測模型與傳統檢測模型支持向量機相比,檢測精度高于傳統的檢測方法,檢測率達到了0.81,同時誤報率也比傳統的檢測方式更低,誤報率為0.12,可見該檢測模型對主機安全檢測具有較高的檢測精度。

表1 檢測模型性能比較
本文提出了一種用于網絡中主機安全檢測的隨機森林的檢測模型。此模型從原始數據中進行隨機有放回的抽取子集,并利用子集構建決策樹,這樣可以避免每棵決策樹之間的相關性,從而使得檢測模型不容易陷入過擬合,并且具有很好的抗噪能力,提高檢測精度。本文在實驗的數據集上驗證了此模型的性能,實驗結果表明,對原始數據進行特征提取后再進行數據清洗可以提高檢測的精度,并且與傳統檢測模型相比該模型在主機安全檢測方面具有良好的性能,其提高了檢測率,降低了誤報率,具有更好的穩定性,為網絡安全提供更好的安全保障。