AIDE検証

目次

1.改ざんチェック

2.検出後のアップデート

3.定期実行のスクリプトを作成し、cronへ登録

まとめ

 

1.改ざんチェック

改ざんチェックを行うには、以下のコマンドを実行します。
AIDEはTripwireのような常駐型タイプではないため、定期的にこのコマンドを実行する必要があります。
そのため、crondへ登録、定期実行が必要となります。
# aide -C
~~~
AIDE, version 0.15.1

### All files match AIDE database. Looks okay!

実際にWebサイトのページを変更し、改ざん検知するか、動作チェックを行います。

<変更前のテストページ>
aide_sozai1

それでは、ページを入れ替えます。

# mv index.html /var/www/html/index.html

<変更後のテストページ>

aide_sozai3

変更したところで、動作チェックを行います。

# aide -C
~~省略~~
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2016-11-25 15:19:31

Summary:
Total number of files: 1169
Added files: 0
Removed files: 0
Changed files: 2

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

changed: /var/www/html
changed: /var/www/html/index.html

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

Directory: /var/www/html
Mtime : 2016-11-25 22:15:53 , 2016-11-25 15:17:49
Ctime : 2016-11-25 22:15:53 , 2016-11-25 15:17:49

File: /var/www/html/index.html
Size : 149 , 129
Mtime : 2016-11-25 22:15:53 , 2016-11-25 15:16:47
Ctime : 2016-11-25 22:15:53 , 2016-11-25 15:17:49
Inode : 67898619 , 101288104
SHA256 : Upt927CtkkPw0fzDOhk+JgJZfvhFKB80 , MluGObYVfb1kH/D+0HPBPg0YOj7k21FU
SHA512 : Hk5b0Guu2QMC3taHh6Iw8ZrQUj9Q2mOM , 81NNUI3ppr0/nUF8SEanJ5Y0vOFBkclS
#

検出されました。

ログファイルにも同じ内容が出力されたことを確認しました。
# tail -f /var/log/aide/aide.log
Mtime : 2016-11-25 22:15:53 , 2016-11-25 15:17:49
Ctime : 2016-11-25 22:15:53 , 2016-11-25 15:17:49

File: /var/www/html/index.html
Size : 149 , 129
Mtime : 2016-11-25 22:15:53 , 2016-11-25 15:16:47
Ctime : 2016-11-25 22:15:53 , 2016-11-25 15:17:49
Inode : 67898619 , 101288104
SHA256 : Upt927CtkkPw0fzDOhk+JgJZfvhFKB80 , MluGObYVfb1kH/D+0HPBPg0YOj7k21FU
SHA512 : Hk5b0Guu2QMC3taHh6Iw8ZrQUj9Q2mOM , 81NNUI3ppr0/nUF8SEanJ5Y0vOFBkclS

 

2.検出後のアップデート

検出後、問題がなければ、データベースをアップデートして、リフレッシュします。
アップデートには以下のいずれかのコマンドを実施します。
aide -i
aide -u →このコマンドは、改ざんチェックとアップデートを行うことができますので、こちらを使用します。

# aide -u
~~~
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2016-11-25 15:26:21

Summary:
Total number of files: 1169
Added files: 0
Removed files: 0
Changed files: 2

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

changed: /var/www/html
changed: /var/www/html/index.html

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

Directory: /var/www/html
Mtime : 2016-11-25 22:15:53 , 2016-11-25 15:17:49
Ctime : 2016-11-25 22:15:53 , 2016-11-25 15:17:49

File: /var/www/html/index.html
Size : 149 , 129
Mtime : 2016-11-25 22:15:53 , 2016-11-25 15:16:47
Ctime : 2016-11-25 22:15:53 , 2016-11-25 15:17:49
Inode : 67898619 , 101288104
SHA256 : Upt927CtkkPw0fzDOhk+JgJZfvhFKB80 , MluGObYVfb1kH/D+0HPBPg0YOj7k21FU
SHA512 : Hk5b0Guu2QMC3taHh6Iw8ZrQUj9Q2mOM , 81NNUI3ppr0/nUF8SEanJ5Y0vOFBkclS

先ほどと同じようにマスターのデータベースにするためにコピーします。
# cp -p /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

リフレッシュされているか、確認します。
# aide -C
~~~
AIDE, version 0.15.1

### All files match AIDE database. Looks okay!
~~~
リフレッシュされていることが確認できました。

 

3.定期実行のスクリプトを作成し、cronへ登録

定期的にチェックを行うため、スクリプトファイルを作成し、crond(デフォルトインストール済み)へ登録して実行し、結果をメールで転送します。

それでは、スクリプトを作成します。

aide --updateを実行して、問題ない場合、以下のログが出力されます。
"### All files match AIDE database. Looks okay!"
「okay」を判定基準にして、スクリプトを作成します。
aide --updateの結果がログに出力されるか、確認すると、出力されていませんでした。
# grep okay /var/log/aide/aide.log

中身を確認すると以下の通りとなっており、チェックしたディレクトリ情報のみ出力されています。
# tail -n 3 /var/log/aide/aide.log
/var/run/utmp ctime in future
/var/www/html/index.html atime in future
/var/www/html/index.html mtime in future

「okay」を判定基準にするには、ログをリダイレクトさせる必要がありますので、その処理を追加します。
ここで、処理の流れをまとめます。
①aide -updateの結果をログファイルに出力させる
②作成されたデータベースファイルをマスターのデータベースファイルにコピーする
③ログファイルに「okay」が出力されているか、wcコマンドで判定する。
④if文で条件分岐させ、ログ結果をメールで通知するようにする。

 

以下の通りにスクリプトを準備しました。

#!/bin/bash
MAILTO=example@example.com
LOGFILE=/var/log/aide/aide.log
DIR=/var/lib/aide

aide –u > $LOGFILE
cp -pf $DIR/aide.db.new.gz $DIR/aide.db.gz
if [ $(grep "okay" $LOGFILE | wc -l) -eq 1 ]; then
echo "All Systems Look OK" | mail -s "AIDE CHECK OK" $MAILTO
else
echo "$(egrep "added|changed|removed" $LOGFILE)" | mail -s "AIDE DETECTED CHANGES" $MAILTO
fi
exit

上記スクリプトをaide_check.shとして、/usr/local/sbin/配下に作成します。
# vi /usr/local/sbin/aide_check.sh

cronで5分ごとに定期チェックするよう下記の通り登録します。
# crontab -e
下記を追記してください。
*/5 * * * * /usr/local/sbin/aide_check.sh
確認します。
# crontab -l
*/5 * * * * /usr/local/sbin/aide_check.sh
サービス再起動はせず、そのまま反映されます。

実行権を付与する。
# ls -l /usr/local/sbin
合計 4
-rw-r--r-- 1 root root 380 11月 25 17:18 aide_check.sh
# chmod +x aide_check.sh
#
# ls -l .
合計 4
-rwxr-xr-x 1 root root 380 11月 25 17:18 aide_check.sh

テストで実行します。
# /usr/local/sbin/aide_check.sh
# tail -n 3 /var/log/maillog
Nov 25 17:25:31 aide-server postfix/qmgr[9964]: AF4B89B73C: removed
Nov 25 17:25:38 aide-server postfix/smtp[10452]: 648AD9B733: to=<example@example.com>, relay=prosol.jp[119.245.216.85]:25, delay=15, delays=0/0/15/0.09, dsn=2.0.0, status=sent (250 ok 1480062338 qp 12175)
Nov 25 17:25:38 aide-server postfix/qmgr[9964]: 648AD9B733: removed

問題なく送信されていることがログ上で確認できました。

メーラでも無事に受信できていることが確認できました。

改ざん検知した際のメール

aide_sozai4

問題なかった際のメール

aide_sozai5

今回は、AIDEのインストール~導入~動作の検証を行いました。

 

まとめ

AIDE導入の注意点と動作についてをまとめます。
・監視対象のサーバに直接インストールする
・常駐型ではないため、定期的に実行する必要がある
・定期的に実行する必要があるため、ファイル改ざんされた場合、次の実行までは検知できない
・AIDEのインストール自体に依存関係はない
・ただし、定期実行のためのcron、シェルスクリプト、メール通知のためのpostfixなどが必要となる
・設定ファイル上でルールを細かく設定することができる
・GUIでの管理は今のところ確認できていない
・ログ管理について、チェック実行時、毎回上書きする動作のため、ログを残す必要がある場合は、シェルスクリプトなどで工夫する必要がある