本文將介紹主機型入侵偵測系統sagan,它將善用即時監控系統主機上的syslog資訊,並且比對是否內有符合的惡意樣式,倘若結果符合,就立即阻擋惡意來源,或是寄發電子郵件通知管理者。
基本上,Log檔案就像是一張體檢表,只要能夠正確地解讀Log資訊的涵意,即可完整地掌握主機目前的狀況。
sagan介紹
sagan程式可即時監控syslog資訊,簡單來講,就是即時監控系統上的Log檔案,並且可利用所設定的規則來解析syslog資訊,以監控Log檔案是否內含惡意的樣式,進而發現是否有潛在的惡意攻擊事件。相關的架構圖如圖1所示。
|
▲圖1 sagan程式架構圖。 |
sagan程式利用FIFO裝置與syslog建立通道來取得相關的syslog資訊,並與所設定的規則檔案比對,如果符合相關的樣式,即執行相關的動作(最常見的是記錄相關資訊檔案)。
除了可記錄至檔案外,sagan也提供記錄至資料庫的機制(利用barnyard2程式),但本文將只探討記錄至檔案的機制。
開始安裝
在安裝sagan軟體之前必須先安裝相關所需的程式庫,首先執行指令「yum install pcre-devel」安裝pcre-devel程式庫,這是sagan所需要的程式庫,主要用來提供正規表示法所需要的函式。
然後,透過指令「yum install libdnet-devel」來安裝libdnet-devel程式庫,此為sagan所需的程式庫,用來提供網路功能所需要的函式。
安裝libee-0.4.1程式庫
執行指令「tar xvzf libee-0.4.1.tar.gz」解壓縮libee原始檔,然後以「autoreconf -vfi」自動組態相關選項,並使用指令「./configure」組態相關選項,自動產生makefile檔案。接著,依序以指令「make」及「make install」來編譯及安裝相關程式。
安裝libestr-0.1.9程式庫
v
先解壓縮libestr原始碼,所以執行指令「tar xvzf libestr-0.1.9.tar.gz」,再透過「autoreconf -vfi」自動組態相關選項。隨後,執行指令「./configure」組態相關選項以便自動產生makefile檔案,並使用「make」指令編譯以及「make install」指令來安裝相關程式。
安裝json程式庫
json程式庫是安裝LibLogNorm所需的程式庫,用來提供解析json格式所需的函式。先執行指令「tar xvzf json-c-0.11-20130402.tar.gz」解壓縮,然後輸入指令「./configure」,以便組態相關選項來自動產生makefile檔案。
最後,以「make」指令編譯相關程式、「make install」指令安裝相關程式。
安裝liblognorm程式庫
liblognorm程式庫是sagan所需的程式庫,可提供解析Log格式所需要的函式。先組態相關選項,執行指令「./configure」來自動產生makefile檔案,然後執行指令「make」進行編譯動作,最後使用指令「make install」開始安裝相關的程式。
安裝rsyslog-6.6.0
接著安裝rsyslog-6.6.0,先執行指令「./configure --prefix=/usr/local/rsyslog」組態相關選項,自動產生makefile檔案,並且設定將相關程式安裝到「/usr/local/rsyslog」目錄內。
筆者的習慣是將相關軟體安裝在特定目錄上,如果想將sagan軟體安裝在系統標準的目錄時,則無須設定「--prefix」參數。然後分別執行指令「make」及「make install」進行編譯與安裝。
安裝sagan-1.0.0RC1
安裝sagan-1.0.0RC1軟體,先使用指令「adduser sagan」新增名稱為「sagan」的使用者當作sagan執行時所使用。然後組態相關選項,請執行指令「
./configure」自動產生makefile檔案,最後透過指令「make」進行編譯。
筆者在編譯過程中曾發生「too many arguments to function 'ln_normalize'」的錯誤。發生這個錯誤的原因在於,liblognorm程式庫內的ln_normalize函數已更動輸入參數的個數,這必須在出錯的程式原始碼中將「ln_normalize(ctx, buf, strlen(buf), &json)」修改為「ln_normalize(ctx, buf, &json)」,亦即少掉strlen(buf)參數。
另外一個遇到的問題是,發生找不到json.h檔案的狀況,解決辦法是將出錯的檔案(檔名為liblognorm.h)中的「#include 」更改為「#include 」後再重新編譯。
安裝好sagan軟體後,就會產生主要的執行檔(檔案名稱為「sagan」)及主要的組態檔(檔案名稱為「sagan.conf」),表4為組態檔主要組態相關的說明。