2.2 事件關聯
2.2.2 Simple Event Correlator (SEC)
市面上已有一些功能強大的事件關聯系統(如 HP ECS, EMC SMARTS, 與 NerveCenter 等)[35],但入門門檻高,安裝與設定過程 不易且費時,價格也不便宜,一些商業用的關聯系統軟體有安裝平台 的限制,有些只能應用於特定的環境中(例如 HP Openview ECS)。目 前事件關聯已有很多相關的研究,並有一些雛型被開發出來,但大多 都無法從網際網路上取得[30],也沒有免費且發展成熟到足夠在企業 正式環境中使用的事件關聯器。有鑑於此,Vaarandi [35]發表了一個 輕量級且可運作在各平台上、使用關聯規則的事件關聯器 Simple Event Correlator(SEC),SEC 主要的目標是建立一個開放原始碼的工 具,具備處理集中化或分散在各端之事件關聯的能力,適用於多種作 業系統,並能輕易地整合到其他的管理系統上,供填補自行程式開發 與事件關聯商業軟體兩者之間的差距(Gap),創造輕量級、容易自行 客製調整與可廣泛使用的事件關聯器。
SEC 是一個使用 Rule-based 的事件關聯工具[36],可從檔案系 統接收一個輸入的事件,然後根據使用者指定的程式產生輸出結果。
一般檔案、命名管線(Named Pipe)或者是標準輸入皆做為 SEC 的輸 入。為了能夠處理任何格式與形式的輸入事件, SEC 使用常規表示
複雜且一次多行的樣式(Patterns)。此外,為了能適用於多種作業系統 平台,所以 SEC 是利用 Perl 開發而成,Perl 能執行在大多數市占率 高的作業系統上,且已變成許多作業系統預設會安裝的軟體,另外 Perl 程式語言中已整合了常規表示式。
一些事件關聯引擎,提供使用者事先定義好的關聯規則,可以被 參數化使用,亦能像建立區塊般地定義出更複雜的事件關聯作業。
SEC 採用相似的方式,來支援使用者建立自己的區塊,SEC 支援的 規則類型如下所示[35][36][37]:
z Single – 匹配輸入的事件並執行一個行動。
z SingleWithScript – 匹配輸入的事件,並根據引發的外部 script 執行結果所回傳的代碼,來執行對應的行動。
z SingleWithSuppress – 匹配輸入的事件並執行行動,但是忽略接 下來 t 秒內所匹配的輸入事件。
z Pair – 匹配輸入的事件並立刻執行行動,除非有接受到其他輸入 的事件,否則忽略之後輸入的同樣事件,若有符合其他事件的輸 入,則會執行第二個行動。
z Pairwithwindow – 匹配輸入的事件並等待其他輸入事件 t 秒。若 其他事件沒有在給定的時間範圍內出現,則執行一個行動,若有 事件於此時間範圍內抵達,則執行另一個行動。
z SingleWithThreshold – 在 t 秒內若匹配的事件次數有達到定義 的門檻次數 n 以上,則執行一個行動。
z SingleWith2Thresholds – 在 t 秒內若匹配的事件次數有達到定 義的門檻次數 n 以上,則執行一個行動,在執行後仍繼續統計次 數,若在 u 秒內匹配的事件次數有達到定義的門檻次數 m,則 執行另一個行動。
z Suppress – 忽略匹配的輸入事件。
z Calendar – 在特定的時間時執行一個行動。
而在 SEC 中所觸發的行動,不只是可以設計來產生輸出的事 件,也能用來設計互動、儲存與管理知識、連接到外部的錯誤管理或 知 識 分 析 模 組 等 規 則 。 下 列 的 動 作 即 SEC 目 前 支 援 的 類 型 [35][36][37]:
z None – 不執行任何行動。
z Logonly – 只記錄訊息。
z Shellcmd – 執行一個外部的 shell script 或程式。
z Pipe – 執行一個外部的 shell script 或程式,並且將產生的輸出作 為標準的輸入使用。
z Spawn – 此行動將執行一個外部的 shell script 或程式,提供額外 的輸入事件給 SEC。
z Create – 建立一個內容(context),並且選擇性地設定它的參數內 容(如存活時間)為非預設值。
z Set – 設定內容的參數值。
z Delete – 刪除一個內容。
z Add – 增加一個事件到內容中。
z Report – 提供內容中的所有事件,給外部的處理使用。
z Event – 產生一新的輸入事件,可供其他規則做比對。
z Reset – 取消一個事件關聯運作,例如重設正計數中的事件統計。
SEC 的規則範例如圖 10 所示[35],此範例是檢查字串,當字串 含 有 “INTERFACE” 與 “DOWN” 的 pattern 時 , 則 執 行 一 個 shell command “notify.sh”,並將此字串值傳給 notify.sh 作為輸入參數,接 下 來 的 86400 秒 內 , 若 有 同 樣 的 “INTERFACE” 與 “DOWN” 字 串
pattern 傳入則不再執行任何動作,不過若有“Interface”與“changed state to up”字串 pattern 傳入時,便執行 action2 的動作。
圖 10 SEC 規則範例 資料來源:Vaarandi [35]
在 SEC 規則[35]中允許執行 shell 程式作為行動,也允許建立或 刪除內容(Contexts),在此內容中可以啟動或取消規則、可以產生新 事件作為其他事件的輸入,也可以重設事件關聯的操作(如重設正在 進行中的事件計數值)。若有需要,包含內容與布林表示式皆可被設 定為規則的定義,利用結合數個有行動與布林表示式的規則,即能建 立出符合複雜規則的事件。
SEC 已被使用於多種作業系統平台上如 LINUX、 Solaris、
HP-UX、AIX、FreeBSD、Tru64 UNIX 與 Windows 等[30],應用的領 域包含:網路問題與效能管理、入侵偵測、日誌檔監控與分析[37]、
詐騙偵測等等[35];此外,SEC 的主程式只有 250 KB 的大小。因 SEC 事件關聯軟體規則設定簡易,利用常規表示式與其提供的規則類型,
可建構出多樣性的事件關聯方式,本研究將使用 SEC 軟體,來協助 事件管理中的自動分類步驟。