Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら RSSフィードのご登録はこちらから
公開日:2013年11月9日
最終更新日:2020年8月8日

オープンソースの IDS である AIDE を CentOS にインストールする

AIDE(Advanced Intrusion Detection Environment) とは

AIDE は、オープンソースの侵入検知システム(IDS:Intrusion Detection System)で、CentOS などの主要なディストリビューションで無償で利用することができます。

IDS にはネットワーク型とホスト型の2種類があり、ネットワーク型はネットワーク上に設置し複数台のサーバーを監視することができます。ホスト型はサーバーに IDS をインストールして監視します。AIDE はホスト型の IDS になります。

AIDE のインストール

AIDE を CentOS 6.x にインストールするには、以下のコマンドを実行します。

# yum install aide

設定ファイルの編集

AIDE の動作設定は、/etc/aide.conf で行います。デフォルト設定でも問題ないですが、変更する場合は aide.conf を編集します。例えば、/usr/log を監視対象から外すには、以下のように記述します。

!/usr/log

データベースの初期化

AIDE は、ファイル状態を格納するデータベースをあらかじめ持っておいて、データベースの内容とファイルの状態が異なっているかをチェックします。ですので、まず、このデーターベースを初期化します。

# aide --init

生成された aide.db.new.gz はスナップショットなので、これをマスターのデータベースにするために以下のコマンドを実行します。
# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

改ざんのチェック

改ざんのチェックをするために、ファイルを作成します。

# echo "TEST" >> dummy.txt

改ざんをチェックします。
# aide --check

実行結果は以下のようになり、ファイルの追加が検出されたことが分かります。
AIDE found differences between database and filesystem!!
Start timestamp: 2013-11-09 03:02:43

Summary:
  Total number of files:        119773
  Added files:                  1
  Removed files:                0
  Changed files:                1

---------------------------------------------------
Added files:
---------------------------------------------------

added: /root/dummy.txt

---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /root

--------------------------------------------------
Detailed information about changes:
---------------------------------------------------

Directory: /root
  Mtime    : 2013-11-09 03:00:03              , 2013-11-09 03:02:38
  Ctime    : 2013-11-09 03:00:03              , 2013-11-09 03:02:38

データベースの更新

改ざんのチェックをしただけでは、データベースは更新されないので、以下のコマンドでデータベースを更新します。

# aide --init
# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

上記コマンドはデータベースを更新するだけですが、下記のコマンドを実行すると、ファイルの改ざんチェックとデータベースの更新の両方を行ってくれます。

# aide --update
# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

スクリプトによる定期チェック

AIDE は手動でコマンドを実行できますが、定期実行するには独自にスクリプトを作成する必要があります。 ここでは、/etc/cron.daily/aide というファイルでスクリプトを作成します。このスクリプトはデイリー処理されます。MAILTO にはメールの送信先を指定します。

#!/bin/bash

MAILTO=root
LOGFILE=/var/log/aide/aide.log
AIDEDIR=/var/lib/aide
/usr/sbin/aide  -u > $LOGFILE
cp $AIDEDIR/aide.db.new.gz $AIDEDIR/aide.db.gz
x=$(grep "Looks okay" $LOGFILE | wc -l)
if [ $x -eq 1 ]
then
  echo "All Systems Look OK" | /bin/mail -s "AIDE OK" $MAILTO
else
  echo "$(egrep "added|changed|removed" $LOGFILE)" | /bin/mail -s "AIDE DETECTED CHANGES" $MAILTO
fi
exit

忘れずに、実行権限もつけておきます。

# chmod +x /etc/cron.daily/aide

後はデイリーでスクリプトが実行され、実行結果がメールで通知されるようになります。ログは /etc/log/aide/aide.log に出力されます。

メールで通知される内容は以下のようになります。

Subject: AIDE DETECTED CHANGES

changed: /usr/sbin
changed: /usr/bin
changed: /usr/lib/rpm
changed: /usr/libexec
changed: /usr/libexec/getconf
changed: /usr/libexec/git-core
changed: /usr/libexec/gcc/x86_64-redhat-linux/4.4.4
changed: /usr/libexec/polkit-1
changed: /usr/libexec/awk
changed: /usr/libexec/utempter
changed: /usr/lib64
changed: /usr/lib64/sa
changed: /usr/lib64/perl5/CORE
changed: /usr/lib64/gettext
changed: /usr/lib64/nss/unsupported-tools
changed: /usr/lib64/pm-utils/bin
changed: /usr/lib64/mysql
changed: /sbin
changed: /bin
changed: /lib/udev
changed: /lib64
changed: /lib64/dbus-1

なお、このスクリプトは1日ごとのファイルの差分をとっていることに注意してください。具体的には、スクリプトの実行時にデータベースの更新をしているということです。システムリリース時点などのデータベースとの差分を比較する厳密な運用をする場合は、データベースの更新部分(cp...の行)を削除してください。

ログのローテーション

AIDE をインストールすると、/etc/logrotate.d/aide にログのローテションの設定ファイルが作成されますが、デフォルトの設定だとほぼ役に立たないので注意が必要です。

具体的には、ウィークリーでファイルサイズが 100KB 以上ないとログのローテーションを行いません。なお、AIDE のログは追記ではなく上書きなので、なぜこのような設定になっているのか不思議です。

これでは使えないので、以下のようにデイリーで7世代管理するように変更します。世代は1ヶ月位あってもいいかもしれませんね。

/var/log/aide/*.log {
        daily
        missingok
        rotate 7
        compress
        delaycompress
}

まとめ

最近は、Web サイトが改ざんされ、その Web サイトを閲覧したユーザーがウィルスに感染してしまう事例が増えているといいます。Web サイトの改ざんは他人事だとは思わず、自分の身にも起こりうると思い、セキュリティパッチの適用など基本的な対策に加えて、AIDE などの IDS を活用していくことがサーバー管理者として必要だと思います。

まあ、AIDE を導入してもログをチェックしなければ意味をなさないのではありますが...。

最低限必要な CentOS セキュリティ設定

最低限必要な CentOS セキュリティ設定を以下の記事にまとめていますので、こちらもどうぞ。


スポンサーリンク





カテゴリー:ツール

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA