為了避免系統遭入侵卻沒有發現的情況發生,除了部署防火牆之外,最好再架設入侵偵測系統,多一層保護。本文將介紹一套開源碼社群中著名的主機型入侵偵測系統AIDE,它可利用偵測檔案系統的變動情況,來掌握系統是否有異常的狀況。
對於系統管理者而言,除了網路或服務中斷的災難外,另外一個最大的惡夢來源是系統被入侵而不自知。也因此,一般系統除了會部署防火牆(Firewall)設備外,通常也會部署入侵偵測系統(Intrusion Detection System,IDS)來偵測是否有惡意的行為正在攻擊系統。
以部署的類型來區分。入侵偵測系統大致可分為網路型入侵偵測系統(Network-based Intrusion Detection System,NIDS)及主機型入侵偵測系統(Host-based Intrusion Detection System,HIDS)。
NIDS通常部署在網段的閘道(Gateway)位置,以規則樣式(Rule Base)的方式監控整個網段內的通訊封包,並比對是否具有惡意的攻擊樣式,一旦發現具有惡意的攻擊行為正在進行,就會即時記錄該行為,甚至直接阻擋該來源的連線。此類設備部署較為簡單,僅須部署在網路的匝道上解析網段內的封包即可。
而HIDS是直接安裝在個別主機上,藉由監控主機上的系統資源如檔案紀錄檔或程序(Process)的變化來判別是否有惡意的行為,並採取適當的行動來防止相關的危害。
在本文中所介紹的AIDE(Advanced Intrusion Detection Environment,官方網址為https://github.com/aide/)軟體,即為一套開源碼社群中有名的主機型入侵偵測系統,可安裝於主機上,目前支援UNIX、Linux等系統。藉由檔案完整性檢查(File Integrity Check)的方式即時地偵測檔案系統的變動情況,進而提早發現系統異常的行為。
什麼是AIDE
AIDE主要是利用監控檔案系統的異動情形來確認系統是否有異常的情況。使用者可事先定義好監控檔案的範圍(例如系統內某個目錄)及檢查項目(例如檔案內容、檔案存取時間、檔案擁有者等屬性),並利用單向雜湊函數(例如sha1、md5等演算法)來產生比對用的基準資料庫。
在產生基準資料庫後,再利用相同的條件,產生當下欲比對的比對資料庫。再從中比對出不同的地方,藉此取得檔案系統變動的資訊。
簡單了解AIDE的比對原理後,接下來安裝AIDE(在此以CentOS 8為例),首先安裝相關所需的軟體套件,執行如下指令(其中#符號為註解說明):
dnf install flex-devel dnf install libgpg-error-devel dnf install libgpg-error dnf install libgcrypt dnf install libgcrypt-devel
在安裝完所需的相關套件後,即可來安裝AIDE。首先,以下列指令來取得最新的原始碼:
git clone https://github.com/aide/aide.git cd aide/ sh ./autogen.sh #根據系統設置來組態相關設定 ./configure --prefix=/usr/local/aide #設定將 AIDE安裝至/usr/local/aide目錄 make #編譯相關程式 make install #安裝相關程式與組態
安裝完成之後,將提供一個名稱為「aide」的主程式及檔名為「aide.conf」的預設組態檔。AIDE指令格式如下:
aide [選項參數] 執行命令
其中最常用的選項參數即為設定組態檔的位置,格式如下:
-c 組態檔名稱
此外,執行命令主要使用:
--check:執行基準資料庫與現有檔案系統的比較,以找出異動的相關資訊。
--init:建立一個初始化的基準資料庫。
--update:重新更新基準資料庫,通常用於系統上有正常的檔案系統異動後。
如下例即為使用名稱為「aide.conf」的組態檔,並建立初始化的基準資料庫:
aide -c aide.conf --init
常用組態設定介紹
接著,說明aide.conf常用的組態設定。
設定在檢查檔案系統異動情況時所使用的基準資料庫,使用者必須先產生原始的基準資料庫,而後當使用者欲進行檔案系統的異動檢查時,就會使用此資料庫與當下的檔案狀況進行比對,進而找出異動的相關資訊。如果未設定此選項,其預設為「/usr/etc/aide.db」。
設定使用者重新產生之基準資料庫的位置,若未設定,則預設為「/usr/etc/aide.db.new」。使用者以init或update所產生的基準資料庫,將會置於此組態所設定的位置上。
設定欲記錄的Log層級,常用的設定如下說明:
error:AIDE在執行時,若發生錯誤,則記錄該錯誤的資訊。
warning:若發生較不嚴重的事件,但尚未影響到執行的程度,便記錄此類告警訊息。
notice:記錄在AIDE執行時所發生的一些須注意的事件訊息。
info:記錄在AIDE執行時所產生的相關一般訊息。
debug:記錄最詳盡的資訊,通常用來偵錯用。
設定AIDE在執行過程中輸出資訊的檔案位置。預設為標準輸出(stdout,亦即直接顯示在螢幕上)。另一種則是輸出至檔案上,其格式為:
file:[檔名]
例如「report_url file:/var/log/aide.log」,表示要將輸出儲存在「/var/log/aide.log」檔案中。
設定是否要利用壓縮功能來壓縮資料庫,此選項須在編譯AIDE時一併加入zlib功能,方有作用。其選項如下:
yes:使用壓縮功能來壓縮資料庫
no:不使用壓縮功能來壓縮資料庫
設定是否要使用檢查符號連結(Symlink)檔案的ACL(Access Control List)功能,同樣地,此選項須在編譯AIDE時一併加入ACL功能,方有作用。其常用選項如下:
yes:啟用檢查ACL功能
no:不使用檢查ACL功能
此組態是用來設定是否要警示符號連結檔案失效的狀況,預設為no。
此組態用來設定是否要產生相關檔案更改(例如新增、更改或刪除)的總結資訊,預設為no。
監控特殊代碼說明
除了上述常用的組態外,AIDE另外定義了相關的監控特殊代碼,用來表示欲監控檔案或目錄的屬性項目,常用代碼說明如表1所示。
除此之外,AIDE也提供MACRO設定(以符號@@表示),能讓使用者能更方便地設定相關組態。常用的MACRO說明如表2所示。
實作示範
了解相關組態設定後,最後做一個簡單的實作來說明AIDE的應用。在此將監控一個目錄,並分別在此目錄中進行新增、刪除及修改檔案等動作,以測試AIDE是否能夠正確地找出檔案異動的情況。
首先,設定要監控的目錄(/usr/local/apache2/htdocs/,以下簡稱為監控目錄)。接著,設定相關組態(aide.conf),其內容如下所示,其中#為註解:
@@define DBDIR /usr/local/aide/db #設定 DBDIR為資料庫檔案的所在目錄位置 @@define LOGDIR /usr/local/aide/log database_in=file:@@{DBDIR}/aide.db.gz #設定基準資料庫的位置 database_out=file:@@{DBDIR}/aide. db.new.gz #設定新產生的基準資料庫位置 gzip_dbout=no #不使用壓縮功能 report_url=file:@@{LOGDIR}/aide.log report_url=stdout #設定將比對結果輸出 至螢幕上 CONTENT = sha512+ftype /usr/local/apache2/htdocs/ CONTENT #設 定利用SHA512演算法來比對位於htdocs目錄 下,符合ftype所#定義檔案類型的異動情況
然後執行如下指令,針對監控目錄來產生初始的基準資料庫:
aide -c aide.conf --init
將根據組態檔中的database_out設定,產生一個名稱為「aide.db.new.gz」的資料庫,執行結果如圖1所示。
由於在進行檢查時,使用的是database_in組態所設定的資料庫(即aide.db.gz),因此必須手動將aide.db.new.gz複製到aide.db.gz:
cp aide.db.new.gz aide.db.gz #檢查用的DB
接著,測試監控目錄下檔案的異動情形,首先執行如下指令來測試未更動的情況,輸出結果如圖2所示:
aide -c aide.conf --check
接下來,在監控目錄新增一個名稱為「add.tx」的檔案。同樣地,以「aide -c aide.conf --check」進行檢查,便會發現有新增的檔案。如圖3所示。
如果add.txt為正常的新增檔案,便可以下列的指令重新更新基準資料庫,將add.tx相關資料加進來:
aide -c aide.conf --update
更新完成後,同樣地也須手動將更新後的資料庫(aide.db.new.gz)複製到基準資料庫(aide.db.gz)。接著,再使用「aide -c aide.conf --check」進行檢查,此時應該會發現並無任何檔案異動的情況。緊接著,繼續測試檔案修改的狀況。在重新修改add.txt的內容後,重新執行上述的檢查。即會出現如圖4所示的訊息,表示該檔案已被修改。最後,手動刪除add.txt檔案後,重新執行上述的檢查應可顯示該檔案。如圖5所示的訊息,表示該檔案已被修改。
至此,已完成主機型入侵偵測系統的建置。使用者可利用偵測檔案系統的變動情況,來掌握系統是否有異常的狀況。
<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>