萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

使用 RPM 驗證系統檔案完整性:管理員的安全利器

對系統管理員而言,最令人不安的莫過於懷疑系統已被入侵、關鍵檔案被竄改。確認系統完整性的有效方法之一,就是檢查檔案是否遭到未授權修改。雖然有 Tripwire 等專業稽核工具,但 Red Hat 系統內建的 RPM (Red Hat Package Manager) 其實就擁有強大的檔案驗證功能,無需額外安裝即可投入使用。

RPM 驗證的核心原理:MD5 簽名

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權限/模式異動
5MD5 簽名異動(核心指標)
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 管理,必須提高警覺,可能是入侵者植入的檔案。

安全操作黃金法則:確保 RPM 自身未被竄改

  1. 必須以 root 執行,否則因權限不足導致驗證結果不準確。
  2. RPM 二進制檔位於 /bin/rpm,資料庫在 /var/lib/rpm。
  3. 最佳實務:在伺服器聯網前,將 /bin/rpm 及 /var/lib/rpm 整備份至離線儲存體(光碟/USB),確保驗證工具本身乾淨。
  4. 檢查 /var/lib/rpm 目錄下檔案的時間戳,應與系統安裝時間一致;異常則警示資料庫可能被動手腳。
  5. 先驗證 RPM 自身:rpm -V rpm。無輸出表示 RPM 本體未被修改(但若二進制檔已被替換,結果不可全信,故離線備份至關重要)。
  6. 確認 RPM 可信後,再執行全系統掃描:rpm -Va > /root/rpm_chk.txt &。
  7. 持續監控:定期執行掃描並比對不同時期的 rpm_chk.txt,以偵測異常檔案變更。

總結

RPM 雖非專為稽核設計,但其內建的 MD5 驗證機制為日常安全檢查提供了極佳便利。Red Hat 系列預設安裝 RPM,開箱即用。關鍵在於建立信任鏈:務必確保 RPM 執行檔與資料庫自身完整性,防止工具被入侵者利用隱藏攻擊痕跡。配合離線備份與定期比對,RPM 即成為輕量級且有效的主機入侵偵測基石。

copyright © 萬盛學電腦網 all rights reserved