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 セキュリティ設定を以下の記事にまとめていますので、こちらもどうぞ。
コメント