第五章、 網路風險分析與預警系統
第六節、 分群法與實作詳解
6.1 分群法簡介
資料分群(data clustering)或是分群演算法(clustering algorithms)是對於 靜態數據分析的一門技術,在許多領域受到廣泛應用,包括機器學習(machine learning)、據據挖掘(data mining)、模式識別(pattern recognitition)、圖像分析
(image analysis)以及生物訊息(bioinformatics)等。分群法是一種將資料分類 成群的方法,其主要的目的乃在於找出資料中較相似的幾個群聚(clusters),在 同一群聚的成員們擁有相似的屬性,或是更加相近的距離等。圖 82 即是將一平 面座標點集分成四個群聚的結果。
圖 82、Example of clustering
分群類型依照切入的角度不同,有很多不同的面相:
1. 階層式的與分割式的:
此兩種分群是依據群集的集合為巢狀的(nested)或非巢狀的(unnested)
來區分,最大的不同在於分群過程中的群數(number of clusters)是否會改變。
階層式分群法(hierarchical clustering)的群數可以由大變小(top-down),
或是由小變大(buttom-up),來促進群聚的合併或分裂,最後再選取最佳的群數。
分割式分群法(partitional clustering)則是先指定群數後,再用一套疊代的 數學運算法,反覆將數據重新分配到最適當的群集裡以找出最佳的分群方式,通 常會根據不同的群集計算其群中心(cluster center),再重新分配。
137
2. 互斥的(exclusive)與模糊的(fuzzy):
當分派每個物件至群集時,以傳統集合概念來說,一個物件只屬於唯一一個 集合,這種就是互斥分群(exclusive clustering)。非互斥分群(non-exclusive clustering)則用來反應一個物件可以同時屬於多個群集,其中模糊分群(fuzzy clustering)以機率模型探討每個物件屬於不同群集的機率。此兩種分類有時也稱 做 hard clustering 和 soft clustering。
3. 完整的(complete)與部份的(partial):
完整分群(complete clustering)將每個物件指定至一個群集中,而部份分群
(partial clustering)卻不是。部份分群的動機為資料集中的一些物件可能不屬於 已定義清楚(well-defined)的群集,許多在資料集中的物件可被表示為雜訊
(noise)、離群值(outlier)或「不有趣的背景」(uninteresting background)
所有的分群法都有相似的流程,大略可歸納為下列幾點:
a. 收集資料
b. 使用某種方法進行分群
c. 測試分群結果
d. 檢測分群結果,如果未達預期效果,則回到步驟 II,再一次進行分群
6.2 分割式分群法(Partitional Clustering)
分割式分群法其主要目標是要在大量高維的資料點中找出具有代表性的資 料點,這些資料點可以稱為是群中心(cluster centers)、原型(prototypes)、代表 點(medoids)等,然後再根據這些群中心,進行後續的處理,這些處理可以包
138
聚中心為 yk。
而這 c 個群聚的總和平方誤差 E 便是每個群聚的平方誤差總和,可稱為分群 的「誤差函數」(error function)或「失真度」(distortion)我們分群的方法,就 變成是一個最佳化的問題,換句話說,我們要如何選取 c 個群聚以及相關的群 中心,使得 E 的值為最小。
6.3 K-Means 分群法( K-Means Clustering)
在所有的分割式分群法之中,最基本的方法,就是所謂的 K-Means 分群法
(K-Means Clustering),又稱為 Forgy's algorithm。K-Means 分群法的群中心即是 取該群集各資料點的數值平均(mean)而來,又稱為該群集的質量中心。
K-Means 分群法的流程如下:
1.隨機選出 k 個點做為群中心
2.依資料點到群中心的距離分配資料點到最為相近的群集
3.在所有資料點都分配完後,計算該群集質量中心的位置作為群中心 4.重覆步驟二和步驟三,直到群中心不再改變為止
以下是 K-Means 分群法的一個範例:
圖 83、首先取出 k(=3)個點作為群中心
139
圖 84、依中心點位置將資料分成 k(=3)個群聚
圖 85、根據群聚內成員的屬性決定該群聚的群中心
圖 86、反覆進行上述步驟直到群中心不再改變為止
6.4 K-Medoids 分群法( K-Medoids Clustering)
K-Medoids 分群法(K-Medoids Clustering)是 K-Means 分群法的一個變形。
K-Medoids 分群法與 K-Means 分群法的不同,在於其群中心是由該群集中最具代 表性的點(medoid)來決定,而在 K-Means 分群法中,群中心是由各群集資料 點的數值取其平均(mean)而得到,也稱為該群集的質量中心,但這質量中心 位置並不一定真實有資料點存在,此時便可以改用 K-Medoids 分群法。
K-Medoids 分群法的流程如下:
1. 隨機選出 k 個點做為群中心
140
2. 依資料點到群中心的距離分配資料點到最為相近的群集
3. 在所有資料點都分配完後,取各群集中最接近該群集質量中心的點作為 新的群中心
4. 重覆步驟二和步驟三,直到群中心不再改變為止
以下是 K-Medoids 分群法的一個範例:
圖 87、首先取出 k(=3)個點作為群中心
圖 88、依中心點位置將資料分成 k(=3)個群聚
圖 89、取出群集中最接近質量中心的點作為群中心
141
圖 90、反覆進行上述步驟直到群中心不再改變為止
6.5 應用防火牆日誌找出群聚及應用
透過防火牆日誌(firewall log)我們可以得到主機的連線履歷(profile),每 一履歷包含有該主機的連線紀錄,針對此連線紀錄,我們可以將擁有相似連線行 為的主機分配到同一個群聚裡,並且利用群組內發生異常的主機來進行預警。
1. 分群
假設有 A、B、C 三主機,其中 A 連線到 update server 的次數為 150,B 連 線到 update server 的次數為 180,而 C 完全沒有連線到 update server,則我們會 認為 A、B 是屬於同一個群聚,C 是另一個群聚,因為 C 和 A、B 的連線行為較 的快照(snapshot),再根據使用的服務(如 http、ftp 等)不同進行計算兩兩快照間的 距離,以下以兩主機 A、B 在同一小時內進行 ftp 連線的快照紀錄做一個簡單的 例子。
A B
192.168.1.250 192.168.1.250 192.168.1.250 192.168.1.252 192.168.1.250 192.168.1.252 192.168.1.252 192.168.2.3 192.168.1.252
142
A 主機對 192.168.1.250 進行了 3 次的連線行為,然後對 192.168.1.252 進行 了 2 次的連線行為,而 B 主機先對 192.168.1.250 進行 1 次的連線行為,再對 192.168.1.252 進行 2 次的連線行為,最後對 192.168.2.3 有一次的連線行為。將 其轉換成序列時如下表:
A <192.168.1.250, 192.168.1.250, 192.168.1.250,
192.168.1.252, 192.168.1.252>
B <192.168.1.250,
192.168.1.252, 192.168.1.252, 192.168.2.3>
其中著色部分是 A、B 兩主機相同的部份,而黑色部份是兩主機不同的地 方,在此一範例裡,A、B 兩主機之編輯距離為 3,意指,B 主機和 A 主機的差 別是,對於 192.168.1.250 的連線少了 2 次,另外多了 1 筆對 192.168.2.3 的連線。
在實際計算上,兩兩主機間的編輯距離並未遵守三角不等式等一般度量的性質,
故我們採用一修正過的編輯距離(normalized edit-distance)來進行進算,以此評估 兩兩主機不相似的程度。這裡附上相關的數學式子:
其應用可以用在預警(Early Warning)上,由自定的規則集裡找出違反規則 的主機 A,然後針對 A 所屬的群聚裡其他的主機,依照其相似程度我們可以列 出一個異常指數(Risk Score),依據異常程度高低給予預警。
在原先的設計架構上,並不依據各自定規則計算 risk score,而是考量該群 主機中,已觸發的資安事件主機數。考慮有三個主機群 A、B、C 與二條資安規
143
B 主機群(20) 0 2 2
C 主機群(40) 2 1 3
在 A 主機群中有 50 台主機,B、C 二主機群內各包含 20、40 台主機,則我 們可以清楚了解,在 A 主機群中觸發資安事件的比率為 1/50,在 B 主機群中觸 發資安事件的比率為 1/10,而在 C 主機群中是 3/40。相較之下,雖然在 B 主機 群中觸發的資安事件總數較 C 主機群中為少,但其嚴重性卻比 C 主機群來得重,
故在計算 risk score 時,會將此一比率做為比重加於其上。原始 risk score 的計算 則是以各群內主機與觸發資安事情的主機之相似度做為依據,與觸發資安事件的 主機越相依,其 risk score 分數越高。
6.6 結論
分群法可以讓使用者將有興趣的資料分成不同的群聚,藉以更加了解各群聚 之間的特徵與資料的特性。在以主機連線履歷作為資料分析的情況下,我們可以 找出連線行為相近的主機,若該群聚裡有一主機被攻擊,我們可以預期同一群聚 裡的主機有較高的機率被攻擊,藉此可以提醒系統管理員對這些主機提高警覺。
6.7 應用防火牆日誌找出群聚之實作詳解
在應用防火牆日誌來找出不同主機間的群聚時,首先要為各主機建立一份履 歷(profile),而一份的主機履歷中又以小時為單位將連線資訊整理成數份快照
(snapshots),每一份快照中則依據連線的方向進行分類。對於連入主機的連線
(in-link connections),依照其服務(services)的不同進行合併,統計使用該服 務(如:http,ftp 等)的主機有那些:同時也對連出的連線(out-link connections), 依其取用在其他主機的不同服務項目進行合併,統計該主機對外連線的類型。
144
圖 91、連線快照階層圖
對於每一部主機可以用上面階層圖的概念來分析其快照,在每一層中都紀錄 了下一層的連線量統計,以 140.113.9.15 這部主機來說,我可以在最上層(IP Address)看到一共有 3248 筆紀錄連入 140.113.9.15 這部主機,而該主機連往外 面的記錄只有 53 筆。在第二層(Link Direction)中依服務項目不同統計該特定 連線方向的使用量,例如連入 140.113.9.15 這部主機的流量中,取用 ftp 服務的 一共有 458 筆,而 http 服務的一共有 1622 筆等。最下一層(Service Type)則紀 錄了取用 140.113.9.15 這部主機中某特定服務的主機有那些,其連線次數為多 少,如連入 140.113.9.15 這部主機並使用 ftp 服務的主機有 140.113.9.3,140.113.9.5 等,其連線量分別是 51 次和 69 次。
145
(sequence)後,計算其編輯距離(edit distance)作為相似度的依據。
146
本計畫設置監視控制中心(Monitor and Control Center , MCC),以利統一監視 整個系統的狀況,並且迅速有效地採取應變反應措施,MCC 採用 client-server computing 的組織,client 最主要的功能是把所需要的資訊安全的傳送到 server 端上。而 server 最主要的功能是負責 server 端的呼叫程式執行緒,並且執行它。
server 即 MCC,而 client 指誘捕網系統、威脅分析與預警系統以及封包標記系 統。Server 端上面分別有幾個重要的部分主要是負責通訊、通訊安全、資訊存取、
介面。
1. 通訊
因為各個子系統所用的編寫語言不同所以必須要建立一個 API 提供給使用