TripwireやAIDE (Advanced Intrusion Detection Environment)を使ったインテグリティチェックの方法について他の記事で紹介しましたが、RPMパッケージのインテグリティチェックについては、RPMコマンドでも簡単に実施できます。
RPMパッケージ管理システムでは、RPMメタデータベース内に保存されているメタデータとインストールされたファイルのハッシュを比較してインテグリティチェックする機能があります。
システム上のどのファイルがRPMデータベースによって期待されているものと異なっているかチェックするには下記コマンドを実行します。
# rpm -qVa
例)設定ファイルを除外して表示する例
# rpm -qVa | awk '$2!="c" {print $0}' .......T. /usr/share/pear/.depdb .......T. /usr/share/pear/.depdblock S.5....T. /usr/share/pear/.filemap .......T. /usr/share/pear/.lock .M....... /usr/local .M....... /usr/local/bin .M....G.. /usr/sbin ....L.... /usr/sbin/sendmail.postfix S.5....T. /etc/cron.daily/0logwatch .M....G.. /var/log/gdm .M....... /var/run/gdm .M....... /var/run/gdm/greeter
(表示結果の記号の意味)
. テストを追加
? テストが実施されなかった(許可が無く読み込めなかった)
S ファイルのサイズ (Size) が異なる
M モード (Mode; 許可属性とファイルの種類) が異なる
5 MD5 チェックサムが異なる
D デバイス (Device) のメジャー/マイナー番号が一致しない
L readLink(2) したパスが一致しない
U 所有者 (User) が異なる
G グループ (Group) が異なる
T 修正時刻 (mTime) が異なる
※参考資料
NSA(National Security Agency)の『Guide to the Secure Configuration of Red Hat Enterprise Linux 5』