搜尋此網誌

2012年3月26日 星期一

[工具介紹] Linux 下的檔案完整性偵測工具 - afick

check_file-300x227俗話說,再密的鴨蛋也會有縫。同樣的,再厲害的駭客,也會在被侵入的系統中留下一定的”痕跡”。這些痕跡可能是有意的 (例如植入後門程式),也有可能是無意的 (例如被系統日誌所記錄)。而這些痕跡可能存在於檔案、機碼、各種形式的設定值、記憶體、甚至是低階的磁區中。在這些可能存在的地方中,檔案(或者說檔案系統,File System)算是最容易被利用的一種方式。檔案完整性監測 (File Integrity Monitoring, FIM) 主要就是用來找出這類的問題,而 FIM 基本上屬於偵測性的安全工具,也就是事後追查問題用的。也許是因為這樣,所以這類工具較不受到重視,通常是為了遵守法規的要求而建置,而建置後也可能只是閒置在一旁。不過以多層次防禦的觀念來看,FIM 不但有其必要性,甚至是不可或缺的安全機制。
概略來看,FIM 可以分成兩種運作模式,一種是即時監控,另外一種則是定期掃描。即時監控,顧名思義可以提供最即時的偵測能力,只要檔案一有變動,FIM 可以馬上得知並做出反應 (例如產生警示或是將有問題的檔案回復至”安全”的狀態)。但是即時監控通常需要作業系統或是檔案系統的支援,而且可能礙於作業系統/檔案系統的限制而無法同時監測”大量”的檔案。此外即時監控對於系統的效能,或多或少都會有一些不良的影響。相較於即時監控,定期掃描就簡單多了,不但不需要作業系統/檔案系統的額外支援能力,而且理論上也可以監測系統內所有的檔案。對於一個比較完整的 FIM 而言,可以同時提供即時監控與定期掃描。定期掃描可以用來執行較複雜的檢查,或者是作為即時監測漏失時的補救之方。除了監測檔案之外,這類工具通常也可以用來監測目錄,用以檢測目錄中是否有未經授權而新增/刪除的檔案。
FIM 所監測的屬性,至少包含檔案/目錄的日期 (建立日期、修改日期、讀取日期)、大小、內容 (雜湊值)、擁有者、權限等。其中針對檔案的內容,比較好的 FIM 還會區分出一般文字檔 (例如設定檔) 與二進位檔,對於一般文字檔的變動,可以明白的指出其差異處在哪,以供管理者做出正確的判斷。
FIM 通常會將檔案/目錄的基準值存放在一個(或多個)資料庫檔案中,而這個檔案正是整個機制是否有效的主要關鍵。一旦這個檔案可以讓人任意修改,整個 FIM 將形同廢物一般。一般的建議是將這個檔案寫入一次性的儲存設備,或者是存放在唯讀的磁區中。我的作法是將這個檔案傳到別的系統中,然後再利用程式自動加以比對。當然,這個額外的系統一定是需要特別的”關照”。
早期在 Linux 下,要達到 FIM 主要使用 Tripwire 這個工具。Tripwire 近幾年已經從單純的 FIM 變成了一系列的產品,功能相當強大,唯一的問題是 Tripwire 不再免費提供使用。所以,今天我要介紹另外一套工具 – afick (Another File Integrity ChecKer),採用 GNU GPLv2 的授權方式。afick 的安裝與設定都相當簡單,相關步驟如下:
  1. 從 rpmforge 安裝 afick 的 rpm 檔案。你可以選擇自行下載,也可以將 rpmforge 這個 repository 加入系統後使用套件管理工具 (如 yum) 加以安裝。
  2. afick 的設定檔是 /etc/afick.conf,你可以根據實際的狀況將需要監測的檔案加入設定檔之中,或是將不需要監測的檔案加以排除。
  3. 設定完畢後,執行 afick –i 以建立相關檔案的基準值。
  4. 我們可以透過 afick –k 來啟動掃描的動作,或是在必要時使用 afick –u 來更新基準值。
  5. 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
  6. afick 的基準值相關檔案存放在 /var/lib/afick 目錄下 (此目錄的位置可透過設定檔加以設定),請妥善加以保護。除了基準值之外,設定檔同樣需要妥善的保護。
afick 是一套相當簡單易用的 FIM 工具,可以透過設定檔指定需要監測或是不需要監測的檔案/目錄。不過 afick 對於一般文字檔並沒有辦法明白地指出變異的地方,因此增加了判斷的困難,算是其美中不足之處。afick 除了命令列模式外,也提供 gui 與 webmin 的管理方式。此外,afick 也開始提供即時監控的套件 (需另行安裝),不過因為還在早期開發階段,所以我在此就先不介紹了。

About