混合式機制的概念在於透過多種演算法的配合、互相補足,往往可以得到比 單一演算法更好的結果,如對不同類型的資料採用不同的機器學習演算法進行辨 識,或是在機器學習演算法中加入如模糊演算法(Fuzzy Algorithm)來調整機器學
10
習訓練出的模型,諸如此類的混合式機制,都是在機器學習上相當常見的做法。
而在這邊,我們將嘗試利用多層的方式,以多個針對不同類型攻擊的分類器合作,
並以過濾式的流程,配合前一節所提的自我學習方法,希望藉此來得到更佳的辨 識結果。
3.2.1 多層(Multilevel)
多層的分類器做法是為了能夠針對各類型的攻擊,採用最適合偵測該攻
Decision Tree Naïve Bayes
Normal 99.50% 97.68%
3.2.2 攻擊種類多層(Multilevel of Attack Category)
DARPA 及 KDD 資料集所定義的四大攻擊類型,如下所列:
DOS: denial-of-service, e.g. syn flood;
R2L: unauthorized access from a remote machine, e.g. guessing password;
U2R: unauthorized access to local superuser (root) privileges, e.g., various ``buffer overflow'' attacks;
Probe: surveillance and other probing, e.g., port scanning.
11
而攻擊種類多層(Multilevel of Attack Categor)便是依據此分類來做分層 的原則。其中由於 R2L 與 U2R 類型之樣本數較少,故將其合併為同一層,
藉由同一個分類器來做辨識;而因根據統計分析,對 DOS 的偵測誤判率為 最低,Probe 次之,誤判率最高的則是 R2L 及 U2R 這類,於是便利用過濾 的方式,從 DOS 的攻擊開始偵測,以達到最好的效益,建構好的多層入侵 偵測系統之架構如下圖。
圖 5 攻擊種類多層系統架構
3.2.3 分群多層(Multilevel of Clustering)
但僅藉由攻擊的種類來對系統做分層,並不見得客觀,首先面臨到的問 題,便在於要分幾層?要針對官方所給的攻擊種類分層,還是根據個別的攻 擊分層,又或是根據攻擊的樣本數量分層?無論哪一項,皆缺乏了一個客觀 的分層依據。所以在此就嘗試利用分群法的方式,來對攻擊樣本們作分群的 動作,希望藉由分群後的結果,來做為分層的客觀依據。
示意圖如下,首先將訓練樣本中的惡意攻擊資料進行分群,再將不同群 的惡意攻擊資料與正常的資料混合,之後依照各個群的資料樣本,訓練出各 個不同的分類器,以作為偵測攻擊之用。
12
圖 6 將訓練樣本分群並訓練出多個分類器
圖 7 分群多層系統架構
而在分群的演算法中,本研究所採用的是使用最普遍的 K-means 演算 法,其方法為計算樣本間的歐式距離,並以此作為分群的依據,找出各群的 群中心並對資料加以標籤;而由於特徵集當中,每一特徵的數值大小範圍不 同,特徵又有連續性或離散性的差別,於是便需要先做正規化的動作,計算 後之距離才不會有過大的差異。
正規化部分,主要依據"numeric"及"string"兩種特徵類型進行處理,
對於"numeric"的資料,簡單的正規化取樣公式如下,即對於每個特徵值 得數值範圍重新計算該值的大小。
13
(Value X – Attribute Min) / (Attribute Max – Attribute Min)
而對於"string"的特徵,則直接判斷 string 值是否相同,若不同則其距 離為 1,相同則為 0。
if (string A == string B) return 0
else return 1;
而無論是攻擊種類多層或是分群多層,在混合自我學習機制後,系統的 概念示意圖如下
圖 8 混合多層及自我學習機制