そんな異変に気づいても、コマンドのログやアクセスログには何も残っていないことがあります。不正アクセスを受けた攻撃者が真っ先に行う行動のひとつが、侵入の痕跡を消すためのシステムバイナリの書き換えや、バックドアの設置です。
ファイル整合性監視ツール AIDE(Advanced Intrusion Detection Environment)は、ファイルやディレクトリのハッシュ値・パーミッション・タイムスタンプをデータベースに記録し、その後の変化を検出します。CIS Benchmarks や PCI DSS でも導入が推奨される定番ツールです。
この記事では、RHEL 9.4 / Ubuntu 24.04 LTS で動作確認した手順をもとに、AIDE のインストールから
aide.conf の設定、aide --init によるデータベース初期化、aide --check による改ざん検知の実践、cron での定期チェック自動化まで解説します。この記事のポイント
・aide --init でファイルのハッシュ値をデータベースに記録する
・aide --check でDBと現在のファイルシステムを比較し、改ざんを検出できる
・aide.conf の除外設定で /proc・/var/log などの動的ファイルを外し誤検知を防ぐ
・cron で毎日自動チェックし、差分があればメール通知する運用に仕上げる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜファイル整合性監視が必要なのか
攻撃者がサーバーに侵入して root を取得した場合、真っ先に行う行動のひとつが「侵入の痕跡を消すこと」です。具体的には次のような改ざんが行われます。・
/bin/ps や /bin/netstat をトロイの木馬版に置き換える(バイナリ改ざん)・
/etc/crontab や /etc/cron.d/ にバックドアを仕込む・
/etc/ssh/sshd_config を変更して不正な SSH アクセスを許可する・
/etc/passwd や /etc/sudoers に不正なアカウントを追加するこれらの変更はコマンド実行ログ(history)には残りません。AIDE のようなファイル整合性監視(File Integrity Monitoring: FIM)ツールを使うことで、「ファイルが変更された」という事実をハッシュ値の比較で検出できます。
AIDE は 2 つのフェーズで動作します。
・初期化フェーズ:
aide --init で「正常な状態」のデータベースを作成する・チェックフェーズ:
aide --check で現在のファイルシステムとデータベースを比較する重要なのは初期化のタイミングです。初期サーバー構築が完了した直後、まだ安全であることが確認できている状態で
aide --init を実行します。侵入を受けた後に初期化しても意味がありません。AIDEのインストール(RHEL9・Ubuntu 24.04対応)
1. RHEL 9 / Rocky Linux 9 / AlmaLinux 9 へのインストール
# dnf install -y aide
# aide --version AIDE 0.18.6 Compiled with the following options: WITH_MMAP WITH_POSIX_ACL WITH_SELINUX WITH_XATTR WITH_ZLIB
2. Ubuntu 24.04 LTS へのインストール
# apt install -y aide
aide --init は別途実行が必要です。aide.confの設定(監視ディレクトリと除外ルールの書き方)
設定ファイルの場所はディストリビューションによって異なります。・RHEL 系:
/etc/aide.conf・Ubuntu 系:
/etc/aide/aide.conf(追加設定は /etc/aide/aide.conf.d/ 配下に置く)3. aide.confの基本構文
aide.conf は「ルール定義」「監視対象の指定」「除外の指定」の 3 種類の記述で構成されます。# --- ルール定義(sha256 ハッシュ + 属性を監視)--- CONTENT_EX = sha256+sha512+ftype+p+l+n+u+g+s+b+m+acl+selinux+xattrs # --- データベースのパス --- database_in=file:/var/lib/aide/aide.db.gz database_out=file:/var/lib/aide/aide.db.new.gz gzip_dbout=yes # --- 監視対象ディレクトリ --- /boot CONTENT_EX /bin CONTENT_EX /sbin CONTENT_EX /usr CONTENT_EX /etc CONTENT_EX # --- 除外(! を先頭に付ける)--- !/var/log !/var/run !/etc/mtab !/etc/random-seed !/etc/adjtime !/proc !/sys
! の行が除外ルールです。/proc や /sys は OS が動的に管理する仮想ファイルシステムのため、必ず除外します。除外しないと数千件の誤検知が発生し、実質的に使えない状態になります。4. 除外設定のチェックポイント
環境によって追加が必要な除外ルールの例です。・
!/var/lib/aide — AIDE 自身のデータベースディレクトリを監視対象にしない・
!/etc/hostname — クラウド環境では起動のたびに変わる場合がある・
!/root/.bash_history — 操作のたびに変化するファイル・
!/etc/lvm/cache/.cache — LVM の動的キャッシュ除外が不十分だと
aide --check のたびに大量の「変更あり」が出て、本当の改ざんを見逃します。初回チェック後の出力を確認し、ノイズになるパスを順次追加していくのが実践的な運用です。データベースの初期化(aide --init)と本番への切替
5. aide --init で正常状態を記録する
設定ファイルが完成したら、データベースを初期化します。# aide --init
Start timestamp: 2026-09-29 02:00:01 +0900 (AIDE 0.18.6) AIDE initialized database at /var/lib/aide/aide.db.new.gz Number of entries: 184320 --------------------------------------------------- The attributes of the (uncompressed) database(s): --------------------------------------------------- /var/lib/aide/aide.db.new.gz MD5 : mwAQflZnFhsJfDaVDHqP1g== SHA256 : h8FJ0+vSixW4Z3XkRpN1CL7Ydq... End timestamp: 2026-09-29 02:18:43 +0900 (run time: 18m 42s)
6. 生成されたデータベースを本番用に切り替える
aide --init は aide.db.new.gz(RHEL)または aide.db.new(Ubuntu)を生成します。aide --check が参照するファイル名は異なるため、mv で切り替えます。RHEL 系の場合:
# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
aide --check 実行時に「データベースが見つからない」エラーになります。aide --checkで変更を検知する実践手順
7. テスト用に意図的な変更を加えてみる
実際に動作を確認するため、監視対象のファイルを意図的に変更します。# echo "# test modification" >> /etc/crontab
8. aide --check で変更を検出する
# aide --check
Start timestamp: 2026-09-29 10:00:01 +0900 (AIDE 0.18.6) AIDE found differences between database and filesystem!! Summary: Total number of entries: 184320 Added entries: 0 Removed entries: 0 Changed entries: 1 --------------------------------------------------- Changed entries: --------------------------------------------------- f : /etc/crontab --------------------------------------------------- Detailed information about changes: --------------------------------------------------- File: /etc/crontab Mtime : 2026-09-01 08:00:00 , 2026-09-29 09:58:22 Sha256 : h8FJ0+vSixW4Z3AAAA== , X7kL9nMpQrSt2BBBB== Size : 451 , 473 End timestamp: 2026-09-29 10:12:07 +0900 (run time: 12m 6s)
Changed entries に /etc/crontab が表示され、タイムスタンプと SHA256 ハッシュの変化が確認できます。攻撃者がファイルを書き換えた場合も同様に検出できます。9. 正当な変更後にデータベースを更新する
OS のアップデートやアプリケーションの設定変更など、意図した変更の後はデータベースを更新します。# aide --update # RHEL の場合 # mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz # Ubuntu の場合 # mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
aide --update は既存のデータベースと現在のファイルシステムを比較しながら新しいデータベースを生成します。変更内容を意図したものとして受け入れ、次回チェック時の基準を更新します。cronで定期チェックを自動化する設定
10. /etc/cron.daily/aide を確認する
RHEL 系ではaide パッケージをインストールすると /etc/cron.daily/aide が自動で作成されます。# cat /etc/cron.daily/aide #!/bin/bash /usr/sbin/aide --check
11. メール通知付きのcron設定
# /etc/cron.d/aide-check 0 2 * * * root /usr/sbin/aide --check 2>&1 | /bin/mail -s "[AIDE Alert] $(hostname) $(date +%Y-%m-%d)" root@localhost
aide --check を実行し、結果を root 宛にメール送信します。このような Linux サーバーのセキュリティ設定を体系的に学びたい方は、Linux Master Pro Seminar でハンズオン形式の実践研修を受けることができます。
トラブルシュート・エラー対処
12. aide --init に時間がかかりすぎる
原因:/proc、/sys、/dev などの仮想ファイルシステムが監視対象に含まれている。対処:
aide.conf に以下の除外ルールを追加して再初期化する。!/proc !/sys !/dev !/run
13. aide --check で大量の変更が検出される
原因: ログファイルや一時ファイルが監視対象に含まれている。対処: 変更が多発するパスを確認し、
aide.conf の除外リストに追加する。# よく追加が必要な除外パスの例 !/var/log !/var/run !/var/lib/aide !/tmp !/root/.bash_history !/etc/lvm/cache
aide --init でデータベースを再初期化し、aide --check で誤検知が解消されたことを確認します。14. 「Couldn't open file /var/lib/aide/aide.db.gz」エラー
原因:aide --init の実行後にデータベースの切り替え(ファイル名の変更)を忘れている。対処: 以下のコマンドでファイルを確認し、切り替えを行う。
# ls /var/lib/aide/ aide.db.new.gz # aide.db.gz が存在しなければ切り替えを実行する # mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
本記事のまとめ
AIDE によるファイル整合性監視の構築手順をまとめます。| 操作 | コマンド | タイミング |
|---|---|---|
| バージョン確認 | aide --version |
インストール後 |
| データベースを初期化 | aide --init |
サーバー構築完了直後 |
| DBを本番用に切り替え(RHEL) | mv aide.db.new.gz aide.db.gz |
aide --init の直後 |
| ファイルの整合性を確認 | aide --check |
cronで毎日自動実行 |
| DBを正常変更後に更新 | aide --update |
OSアップデート・設定変更後 |
aide.conf の除外設定を適切に行い、cron による自動チェックとメール通知を組み合わせることで、実運用に耐えるファイル整合性監視が構築できます。
>> セミナー詳細・お申し込みはこちら
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:LinuxのSSHに二要素認証(TOTP)を設定する方法|Google AuthenticatorとPAMで不正ログインを防ぐ実践手順
- この記事の属するカテゴリ:セキュリティへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます