Linuxファイル整合性監視(AIDE)入門|サーバー改ざんを即検知する実践設定ガイド

Linux Security

サーバーに侵入されたとして、攻撃者はまず何をするか。バックドアを仕掛け、設定ファイルを書き換え、自分の痕跡を消す。この作業の大半は「ファイルの改ざん」です。ログを見ても、プロセスを眺めても、侵入された事実に気づけないことは珍しくありません。ファイルの変化を検知する仕組みがなければ、攻撃者は静かに居続けます。

この記事では、Linuxサーバーの標準的なファイル整合性監視ツール「AIDE(Advanced Intrusion Detection Environment)」の仕組みと実践的な設定方法を解説します。インストールから初期データベースの作成、cronによる自動監視まで、情シス1人の環境でも今日から導入できる内容です。

Linuxファイル整合性監視(AIDE)入門|サーバー改ざんを即検知する実践設定ガイド

AIDEとは?ファイル整合性監視が必要な理由

AIDE(エイド)は、Linuxサーバー上の重要なファイルやディレクトリの「状態」をデータベースに記録し、後から差分を検出するツールです。オープンソースで無料、RHEL系・Debian系の両方で利用できます。

仕組みはシンプルです。

初期スナップショットの作成: 正常な状態のサーバーでデータベース(ファイルのハッシュ値・パーミッション・オーナー・タイムスタンプ等)を作成
定期的なチェック: cronで定期実行し、現在の状態と初期スナップショットを比較
差分レポート: 変化があったファイルを一覧で報告

なぜ必要かというと、従来のログ監視だけでは「何が変わったか」を把握するのが難しいからです。攻撃者は/var/log/auth.logを改ざんして不正ログインの痕跡を消したり、/etc/passwdに新しいユーザーを追加したりすることがあります。AIDEがあれば、こうした変化を確実に検知できます。

攻撃者がファイルを改ざんする手口(防御のために知る)

AIDEの設定を正しく行うには、攻撃者がどこを狙うかを知っておく必要があります。

1. 設定ファイルの書き換え

/etc/ssh/sshd_config を変更してパスワード認証を有効化したり、/etc/sudoers に自分のアカウントを追加したりする手口があります。システム管理者が気づかない間に、次のアクセス手段を確保するのが目的です。

2. バックドアの仕掛け

/etc/cron.d/ や /etc/cron.daily/ に悪意のあるスクリプトを配置するケースがあります。再起動後も定期実行される形で、攻撃者は継続的なアクセスを維持しようとします。

3. バイナリの差し替え

ls や ps などのシステムコマンドを改ざんして、特定のプロセスやファイルを隠す「rootkit」的な手口もあります。Linuxのrootkit検知についてはこちらの記事でも詳しく解説しています。

AIDEはこれらすべての変化を「ハッシュ値の差異」として検出します。ハッシュ値は1バイトでも内容が変われば全く異なる値になるため、わずかな改ざんも見逃しません。

AIDEの導入手順

1. インストール

RHEL / AlmaLinux / Rocky Linux の場合:

# EPEL不要、標準リポジトリでインストール可能 sudo dnf install aide -y

Ubuntu / Debian の場合:

sudo apt update sudo apt install aide -y

2. 設定ファイルの確認・編集

AIDEの設定ファイルは /etc/aide.conf(Ubuntuでは /etc/aide/aide.conf)です。デフォルト設定でも多くのシステムディレクトリをカバーしていますが、監視対象を確認しておきましょう。

# コメントと空行を除いて設定内容を確認する grep -v "^#" /etc/aide.conf | grep -v "^$"

デフォルトで監視される主なディレクトリの例です。

# デフォルト設定の抜粋(ハッシュ値・権限・オーナー等をチェック) /etc/ CONTENT_EX /boot/ CONTENT_EX /sbin/ CONTENT_EX /usr/sbin/ CONTENT_EX /bin/ CONTENT_EX /usr/bin/ CONTENT_EX

CONTENT_EX はファイルのSHA256ハッシュ値・パーミッション・オーナー・グループ・タイムスタンプ等をチェックするルールです。監視から除外したいディレクトリがある場合は、感嘆符(!)で除外指定します。

# 変化が頻繁で誤検知の原因になるディレクトリを除外 !/var/log/ !/var/run/ !/var/spool/ !/tmp/ !/proc/

3. 初期データベースの作成(最重要ステップ)

AIDEの最も重要な作業が初期データベースの作成です。必ずクリーンな状態(侵害されていない状態)で実行してください。 侵害後に作成しても、改ざんされた状態を「正常」として記録してしまいます。

# 初期データベースを作成する(数分かかる場合がある) sudo aide --init # RHEL系: 作成されたデータベースを有効化する sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz # Ubuntu/Debian系: 作成されたデータベースを有効化する sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

4. 整合性チェックを手動で実行する

# 整合性チェックを実行する sudo aide --check # 正常な状態のサーバーであれば変更なしと表示される # パッケージ更新後などは多くのファイルが「Changed」として表示される

チェック結果の見方です。

Added: 初期DB作成後に新しく追加されたファイル
Removed: 初期DB作成後に削除されたファイル
Changed: 内容・属性が変わったファイル(ハッシュ値・権限・オーナーいずれかが異なる)

5. cronで自動化して定期チェックする

毎日深夜にチェックを実行し、結果をメールで受け取る設定です。

# rootのcrontabを編集する sudo crontab -e # 毎日02:00にAIDEチェックを実行し、root宛にメールで送る 0 2 * * * /usr/sbin/aide --check 2>&1 | mail -s "[AIDE] $(hostname) integrity check - $(date '+%Y-%m-%d')" root

mailコマンドが使えない環境では、出力をファイルに保存してからログ監視ツールに連携する方法もあります。

# ログファイルに保存する場合 0 2 * * * /usr/sbin/aide --check > /var/log/aide-check-$(date '+%Y%m%d').log 2>&1

6. パッケージ更新後にデータベースを更新する

OSのパッケージを更新した後は、バイナリが正当に変わっています。そのままでは毎回大量の「Changed」が報告されてしまうため、データベースも更新する必要があります。

# 手順1: パッケージ更新後にチェックを実行し、変更内容が正当かどうかを確認する sudo aide --check # 手順2: 変更内容が正当と確認できたらデータベースを更新する sudo aide --update # 手順3: 更新されたデータベースを有効化する(RHEL系) sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

中小企業でも今日からできること

AIDEはエンタープライズ向けに聞こえますが、1台のサーバーから始めることができます。最小限の運用を設計するなら次の3ステップで十分です。

Step 1: OSインストール直後にAIDEをインストールし、初期データベースを作成する(サーバーが確実にクリーンな状態のうちに実施)
Step 2: cronで週1回チェックを実行し、rootに結果をメールするよう設定する(日次では負荷が気になるサーバーには週次でも十分)
Step 3: パッケージ更新や設定変更の都度、必ずデータベースを更新する運用ルールを設ける

追加コストは一切かかりません。予算ゼロで、ファイルシステムレベルの改ざん検知が実現します。

Linuxのファイル権限管理や権限昇格の防止については、姉妹サイトLinuxMaster.JPでも詳しく解説しています。

よくある誤解と注意点

【注意1】AIDEはリアルタイム監視ではない

AIDEはスナップショット比較型のツールです。cronで1日1回実行している場合、攻撃後から最大24時間は改ざんに気づけません。リアルタイムのファイル変更監視が必要な場合は、Linux Audit Framework(auditd)や inotifywait と組み合わせることを検討してください。AIDEはあくまでも「定期的な健康診断」と考えるのが正確です。

【注意2】初期データベースの保護が命

AIDEのデータベースファイル(aide.db.gz)が攻撃者によって書き換えられたら、改ざん検知は無意味になります。データベースファイルはオフラインメディアや別サーバーにバックアップし、本番サーバーからは読み取り専用でアクセスする構成が理想的です。少なくとも、データベースファイル自体をAIDEの監視対象外にして攻撃者に上書きされにくくする設定を検討してください。

【注意3】誤検知が多すぎる場合の対処

/tmp/ や /var/run/ など動的に変わるディレクトリを監視対象に含めると、毎回大量の差分が報告されます。設定ファイルで適切に除外し、「本当に重要なファイルだけを監視する」設計が大切です。ノイズだらけのレポートは担当者が読まなくなり、本物の異常を見落とす原因になります。

本記事のまとめ

作業 コマンド タイミング
インストール dnf install aide / apt install aide OS構築直後(一度のみ)
初期DB作成 aide –init → DBファイルを有効化 クリーンな状態で一度のみ
整合性チェック aide –check cronで日次〜週次に自動実行
DB更新 aide –update → DBファイルを有効化 パッケージ更新・設定変更のたびに
DBのバックアップ aide.db.gz を別場所にコピー DB作成・更新のたびに

ファイル整合性監視は、侵入されたことを「早期に知る」ための仕組みです。100%の侵入防御は存在しませんが、変化を素早く検知できれば被害の拡大を最小限に抑えられます。まずは1台のサーバーから、AIDEを動かしてみてください。

サーバーの「変化」に気づける仕組みがありますか?

ファイル整合性監視は、侵害後の早期発見に欠かせない基本対策です。AIDEの設定だけでなく、運用全体をどう設計するかが重要になります。
正しいセキュリティ知識を体系的に身につけたい方へ、メルマガで実践的なセキュリティ対策ノウハウをお届けしています。

コメント

タイトルとURLをコピーしました