概略來看,FIM 可以分成兩種運作模式,一種是即時監控,另外一種則是定期掃描。即時監控,顧名思義可以提供最即時的偵測能力,只要檔案一有變動,FIM 可以馬上得知並做出反應 (例如產生警示或是將有問題的檔案回復至”安全”的狀態)。但是即時監控通常需要作業系統或是檔案系統的支援,而且可能礙於作業系統/檔案系統的限制而無法同時監測”大量”的檔案。此外即時監控對於系統的效能,或多或少都會有一些不良的影響。相較於即時監控,定期掃描就簡單多了,不但不需要作業系統/檔案系統的額外支援能力,而且理論上也可以監測系統內所有的檔案。對於一個比較完整的 FIM 而言,可以同時提供即時監控與定期掃描。定期掃描可以用來執行較複雜的檢查,或者是作為即時監測漏失時的補救之方。除了監測檔案之外,這類工具通常也可以用來監測目錄,用以檢測目錄中是否有未經授權而新增/刪除的檔案。
FIM 所監測的屬性,至少包含檔案/目錄的日期 (建立日期、修改日期、讀取日期)、大小、內容 (雜湊值)、擁有者、權限等。其中針對檔案的內容,比較好的 FIM 還會區分出一般文字檔 (例如設定檔) 與二進位檔,對於一般文字檔的變動,可以明白的指出其差異處在哪,以供管理者做出正確的判斷。
FIM 通常會將檔案/目錄的基準值存放在一個(或多個)資料庫檔案中,而這個檔案正是整個機制是否有效的主要關鍵。一旦這個檔案可以讓人任意修改,整個 FIM 將形同廢物一般。一般的建議是將這個檔案寫入一次性的儲存設備,或者是存放在唯讀的磁區中。我的作法是將這個檔案傳到別的系統中,然後再利用程式自動加以比對。當然,這個額外的系統一定是需要特別的”關照”。
早期在 Linux 下,要達到 FIM 主要使用 Tripwire 這個工具。Tripwire 近幾年已經從單純的 FIM 變成了一系列的產品,功能相當強大,唯一的問題是 Tripwire 不再免費提供使用。所以,今天我要介紹另外一套工具 – afick (Another File Integrity ChecKer),採用 GNU GPLv2 的授權方式。afick 的安裝與設定都相當簡單,相關步驟如下:
- 從 rpmforge 安裝 afick 的 rpm 檔案。你可以選擇自行下載,也可以將 rpmforge 這個 repository 加入系統後使用套件管理工具 (如 yum) 加以安裝。
- afick 的設定檔是 /etc/afick.conf,你可以根據實際的狀況將需要監測的檔案加入設定檔之中,或是將不需要監測的檔案加以排除。
- 設定完畢後,執行 afick –i 以建立相關檔案的基準值。
- 我們可以透過 afick –k 來啟動掃描的動作,或是在必要時使用 afick –u 來更新基準值。
- rpm 安裝時會自動安裝每日的排程 (/etc/cron.daily/afick),但是預設卻是每天更新基準值,而這通常並非我們想要的行為。我們有兩個選擇,一個是直接停用自動安裝的排程,另外一個選擇則是修改排程的腳本 (/etc/cron.daily/afick),將
改為# launch command nice -n $NICE $AFICK -c $CONFFILE -u >$LOGFILE 2>$ERRORLOG
# launch command
nice -n $NICE $AFICK -c $CONFFILE -k >$LOGFILE 2>$ERRORLOG - afick 的基準值相關檔案存放在 /var/lib/afick 目錄下 (此目錄的位置可透過設定檔加以設定),請妥善加以保護。除了基準值之外,設定檔同樣需要妥善的保護。
沒有留言:
張貼留言