對系統管理員而言,最令人不安的莫過於懷疑系統已被入侵、關鍵檔案被竄改。確認系統完整性的有效方法之一,就是檢查檔案是否遭到未授權修改。雖然有 Tripwire 等專業稽核工具,但 Red Hat 系統內建的 RPM (Red Hat Package Manager) 其實就擁有強大的檔案驗證功能,無需額外安裝即可投入使用。
RPM 資料庫詳細記錄了每個套件中檔案的中繼資料:檔案大小、時間戳記、權限、擁有者/群組,以及最關鍵的 MD5 簽名。根據 RFC 1321,MD5 演算法根據檔案內容產生唯一的 128 位元雜湊值。任何內容變動都會導致簽名改變。雖然理論上存在碰撞可能性,但迄今仍無實際破解案例。因此,對比安裝前後的 MD5 值,即能以極高信心判斷檔案是否被竄改。
使用 -V (verify) 選項可檢查指定套件的所有檔案:
rpm -V 套件名稱
例如檢查 sendmail:
rpm -V sendmail
輸出範例:
S.5....T c /etc/aliases
missing /etc/mail/ip_allow
S.5....T c /etc/mail/relay_allow
S.5....T c /etc/sendmail.cf
S.5....T c /etc/sendmail.cw
S.5....T /usr/sbin/sendmail
S.5....T /var/log/sendmail.st
只有驗證失敗的檔案會被列出;未出現者視為正常。左欄代碼含義如下:
| 代碼 | 含義 |
|---|---|
| S | 檔案大小異動 |
| M | 權限/模式異動 |
| 5 | MD5 簽名異動(核心指標) |
| L | 符號連結異動 |
| D | 裝置檔異動 |
| U | 擁有者異動 |
| G | 群組異動 |
| T | 時間戳記異動 |
| missing | 檔案遺失 |
輸出中 c 標記表示設定檔。aliases、relay_allow、sendmail.cf 等設定檔變動屬正常管理行為。但 /usr/sbin/sendmail 這個監聽 25 埠的執行檔若驗證失敗,極度可疑——除非剛升級套件,否則極可能被植入後門或木馬。同理,ip_allow 遺失可能意味著反垃圾郵件機制被繞過。重點:務必關注 MD5 簽名(代碼 5)是否變動,因為入侵者常修改檔案後調整時間戳掩飾蹤跡,但 MD5 難以偽造。
逐一檢查太耗時,使用 -a 選項一次驗證所有已安裝套件,並建議導向檔案於背景執行:
rpm -Va > /root/rpm_chk.txt &
結果存於 /root/rpm_chk.txt,& 讓指令在背景執行,不佔用終端機。
若發現可疑檔案但不知屬哪個套件,用 -qf 查詢:
rpm -qf /usr/sbin/sendmail
# 輸出:sendmail-8.8.7-20
若輸出 file ... is not owned by any package,表示該檔案非 RPM 管理,必須提高警覺,可能是入侵者植入的檔案。
/bin/rpm,資料庫在 /var/lib/rpm。/bin/rpm 及 /var/lib/rpm 整備份至離線儲存體(光碟/USB),確保驗證工具本身乾淨。/var/lib/rpm 目錄下檔案的時間戳,應與系統安裝時間一致;異常則警示資料庫可能被動手腳。rpm -V rpm。無輸出表示 RPM 本體未被修改(但若二進制檔已被替換,結果不可全信,故離線備份至關重要)。rpm -Va > /root/rpm_chk.txt &。rpm_chk.txt,以偵測異常檔案變更。RPM 雖非專為稽核設計,但其內建的 MD5 驗證機制為日常安全檢查提供了極佳便利。Red Hat 系列預設安裝 RPM,開箱即用。關鍵在於建立信任鏈:務必確保 RPM 執行檔與資料庫自身完整性,防止工具被入侵者利用隱藏攻擊痕跡。配合離線備份與定期比對,RPM 即成為輕量級且有效的主機入侵偵測基石。