Tripwire:Unix/Linux 檔案完整性檢查的經典利器
駭客入侵後常替換關鍵二進制檔(ls、ps、su、sshd)植入後門,並修改時間戳記掩飾蹤跡。Tripwire 透過離線資料庫儲存檔案數位指紋,精準偵測任何未授權變更。
核心原理
- 建立基準資料庫: 乾淨系統上,依策略檔掃描指定檔案,計算多重雜湊值(預設 MD5 + Snefru),儲存至加密資料庫。
- 定期/事後比對: 重新掃描計算雜湊值,與資料庫比對。任何差異(內容、權限、inode、連結數、擁有者、大小、時間戳)即回報異動。
- 資料庫保護: 資料庫、Tripwire 二進制、設定檔必須離線備份(寫保護磁碟、CD-R、PGP 簽名),否則駭客可同時修改資料庫掩飾入侵。
監控屬性範圍
- 存取權限與檔案模式(含 SUID/SGID/Sticky bit)
- inode 編號、連結數
- 擁有者 UID/GID
- 檔案大小
- atime/mtime/ctime(存取/修改/狀態變更時間)
四種運作模式
- Database Generation:
tripwire --init 建立初始資料庫。
- Integrity Checking:
tripwire --check 例行比對,產生違規報表。
- Database Update:
tripwire --update 針對已知異動(如套件更新)更新資料庫條目。
- Interactive Update: 互動模式逐一確認異動並更新資料庫。
安裝與部署關鍵步驟
- 確認編譯環境(gcc/cc、make、gzip)。
- 官網下載
tripwire-1.3.1.tar.gz(開源版)或商用版。
- 依
Ported 文件對應 OS 選擇 conf.h 與 tw.config 模板(如 Solaris 2.6 用 conf-svr4.h + tw.config.sunos5)。
- 編譯安裝,初始化站點/本地金鑰,編寫策略檔
tw.pol 定義監控路徑/屬性/嚴重等級。
- 執行
tripwire --init 建立資料庫,將 $(DBDIR)、二進制、設定檔、金鑰離線封存。
- 加入
cron 每日自動 --check 並郵寄報表給管理員。
實務建議
- 核心系統檔(
/bin, /sbin, /lib, /etc)設最高嚴重等級。
- 日誌/資料目錄設較低等級或排除,避免雜訊。
- 重大系統變更(套件更新、核心升級)後,務必在受控環境下執行
--update 同步資料庫。
- 現代替代方案:AIDE(開源)、OSSEC/HIDS、systemd-integrity、IMA/EVM(核心級完整性量測)。