Linuxファイル改ざん検知の実践:AIDEとTripwireの比較と設定ガイド
Linuxサーバー向けファイル改ざん検知ツールAIDEとTripwireを比較。導入方法、設定例、監視のポイントを解説。侵入検知(IDS)としての実践的な活用法。
はじめに
Linuxサーバーを運用する上で、ファイルの改ざん検知はセキュリティの基本です。侵入検知システム(IDS)の一環として、ファイル整合性チェックツールは重要な役割を果たします。本記事では、代表的なツールであるAIDEとTripwireを比較し、それぞれの特徴、導入方法、運用のポイントを解説します。
ファイル改ざん検知とは
ファイル改ざん検知は、システム上の重要なファイルが不正に変更されたかどうかを監視する手法です。初期状態のハッシュ値や属性をデータベースに保存し、定期的に現在の状態と比較することで、改ざんを検出します。
主な機能
AIDE(Advanced Intrusion Detection Environment)
AIDEは無料で利用できるオープンソースのファイル整合性チェックツールです。設定が比較的シンプルで、軽量に動作します。
インストール
<h1>Debian/Ubuntu</h1>
sudo apt update
sudo apt install aide
<h1>RHEL/CentOS/Fedora</h1>
sudo yum install aide
<h1>または</h1>
sudo dnf install aide
初期設定
インストール後、設定ファイル /etc/aide/aide.conf を編集します。デフォルト設定でも動作しますが、監視対象をカスタマイズすることを推奨します。
<h1>設定ファイルのバックアップ</h1>
sudo cp /etc/aide/aide.conf /etc/aide/aide.conf.bak
<h1>設定ファイルを編集</h1>
sudo vi /etc/aide/aide.conf
設定例:
<h1>監視するディレクトリとルール</h1>
/etc p+i+u+g+n+md5+sha1
/bin p+i+u+g+n+md5+sha1
/sbin p+i+u+g+n+md5+sha1
/var/log p+i+u+g+n+md5
<h1>除外するパターン</h1>
!/var/log/.*
!/var/spool/.*
各フラグの意味:
p: パーミッションi: inodeu: ユーザーg: グループn: ファイル数md5: MD5ハッシュsha1: SHA1ハッシュデータベースの初期化と検査
<h1>データベースの初期化</h1>
sudo aideinit
<h1>初期データベースを所定の位置にコピー</h1>
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
<h1>検査の実行</h1>
sudo aide --check
定期実行(cron)
<h1>crontabを編集</h1>
sudo crontab -e
<h1>毎日午前3時に実行(例)</h1>
0 3 * * * /usr/bin/aide --check | mail -s "AIDE Report" admin@example.com
特徴
Tripwire
Tripwireは商用版とオープンソース版(Tripwire Open Source)があります。ここではオープンソース版を扱います。AIDEに比べて設定がやや複雑ですが、詳細なポリシー設定が可能です。
インストール
<h1>Debian/Ubuntu</h1>
sudo apt update
sudo apt install tripwire
<h1>RHEL/CentOS/Fedora</h1>
sudo yum install tripwire
<h1>または</h1>
sudo dnf install tripwire
初期設定
インストール時にサイトキーとローカルキーの作成を求められます。これらはデータベースの署名に使用されます。
<h1>パスワードの設定(プロンプトに従う)</h1>
sudo tripwire-setup-keyfiles
設定ファイルは /etc/tripwire/twpol.txt です。ポリシーファイルを編集し、監視ルールを定義します。
<h1>ポリシーファイルの編集</h1>
sudo vi /etc/tripwire/twpol.txt
ポリシーの例:
(
rulename = "Critical System Files",
severity = 100,
)
{
/etc -> $(SEC_CRIT);
/bin -> $(SEC_BIN);
/sbin -> $(SEC_BIN);
/usr/bin -> $(SEC_BIN);
/usr/sbin -> $(SEC_BIN);
}
ポリシーファイルを編集したら、バイナリ形式に変換します。
sudo twadmin --create-polfile /etc/tripwire/twpol.txt
データベースの初期化と検査
<h1>データベースの初期化</h1>
sudo tripwire --init
<h1>検査の実行</h1>
sudo tripwire --check
<h1>レポートを表示</h1>
sudo twprint --print-report --twrfile /var/lib/tripwire/report/$(ls -t /var/lib/tripwire/report | head -1)
定期実行(cron)
<h1>スクリプトを作成</h1>
sudo vi /etc/cron.daily/tripwire-check
<h1>内容</h1>
#!/bin/bash
/usr/sbin/tripwire --check | mail -s "Tripwire Report" admin@example.com
<h1>実行権限を付与</h1>
sudo chmod +x /etc/cron.daily/tripwire-check
特徴
AIDE vs Tripwire 比較表
| 項目 | AIDE | Tripwire |
|---|---|---|
| インストールの容易さ | 簡単 | やや複雑 |
| 設定の柔軟性 | 高い | 非常に高い |
| デフォルト設定 | すぐ使える | カスタマイズが必要 |
| データベースの保護 | ファイル権限のみ | 暗号キーによる署名 |
| リソース消費 | 軽量 | やや重い |
| レポートの詳細度 | 標準 | 詳細 |
| コミュニティサポート | 活発 | 安定 |
| ライセンス | GPL | GPL(オープンソース版) |
実践的な導入のポイント
1. 監視対象の選定
以下のファイル・ディレクトリは必ず監視対象に含めましょう。
/etc/passwd, /etc/shadow, /etc/group(ユーザー管理)/etc/ssh/sshd_config(SSH設定)/etc/sudoers(権限昇格)/bin, /sbin, /usr/bin, /usr/sbin(実行ファイル)/etc/cron*(ジョブ定義)/etc/init.d/, /etc/systemd/(サービス設定)/var/log/(ログファイルは変更が多いので注意)2. データベースの保護
データベースファイルは改ざんされると検知不能になります。読み取り専用メディア(CD-ROMなど)に保存するか、リモートの安全な場所にコピーすることを推奨します。
3. アラートの通知
検査結果はメールやSlack、監視ツール(Zabbix、Prometheusなど)に通知する仕組みを構築しましょう。
4. 定期的な更新
システム更新時には、データベースも更新する必要があります。更新手順をドキュメント化し、チームで共有しましょう。
AIDEのデータベース更新例
sudo aide --update
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Tripwireのデータベース更新例
sudo tripwire --update --twrfile /var/lib/tripwire/report/レポートファイル名
侵入検知(IDS)全体への組み込み
ファイル改ざん検知はホスト型IDS(HIDS)の一部です。以下のような他のセキュリティ対策と組み合わせることで、より強固な防御が可能です。
*この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*
まとめ
AIDEとTripwireはどちらも強力なファイル改ざん検知ツールです。小規模環境や導入が簡単なものを求めるならAIDE、大規模環境や詳細なポリシー制御が必要ならTripwireが適しています。まずはどちらかを導入し、定期的なチェックと通知を設定することで、セキュリティレベルを大きく向上させることができます。
ファイル改ざん検知は「備えあれば憂いなし」の典型です。今すぐ導入を検討しましょう。