テクニカルノーツ

AIDEによる改ざんチェックをCentOS7で定期実行させる方法

みなさんこんにちは、初心者プログラマのユウです。

今回は前回の続きで、AIDEによる改ざんチェックをCentOS7で定期実行させる方法について書きます。

定期実行させるにはcronを利用します。(cronの読み方はクローン、クロン、クーロンです。これに関しては戦争が起こるのでここではcron表記しています。みなさんお好きなように読んでください。)

cronは、ざっくり言うとLinuxで動いている常駐プログラム(デーモン)の1つです。

たとえば、深夜にファイルのバックアップをしたいとか、毎月1回アップデートの処理をしたいとか、今回のように毎日ファイルが改ざんされていないかどうかチェックしたいときなどに、ジョブを登録しておけば自動実行してくれる便利な機能です。ありがたい!

さて、改ざんチェックを定期実行させるための大まかな流れとしては、

1.チェックコマンドを実行するシェルファイルを作る

2.そのシェルをcronで実行させる

です。

早速やってみましょう。

1.チェックコマンドを実行するシェルファイルを作る

任意の場所にシェルファイルを作ります。

今回は/root/aideというディレクトリの中にaide_check.shというファイルを作ります。

# vi /root/aide/aide_check.sh

中身はこんなかんじ↓ 
#!/bin/sh LOGFILE=/var/log/aide/aide.log /usr/sbin/aide -C > $LOGFILE

チェックコマンドはaide -Cですが、シェルに書くときはプログラムの場所も指定してやらないと動かないことがあります。

プログラムの場所は環境によって異なりますので、ルートユーザーでwhichコマンドを使って調べてみましょう。

# which aide

/usr/sbin/aide

locateでも探せます。

# locate aide
/etc/aide.conf (略) /root/aide /root/aide/aide_check.sh /usr/sbin/aide ←これ /usr/share/doc/aide-0.15.1 (略)

さて、先ほどのシェルでは、改ざんチェックしたら/var/log/aide/aide.logというログファイルに出力するように指定しました。

シェルファイルを保存した後、実行してみます。

# sh /root/aide/aide_check.sh

AIDE, version 0.15.1
### All files match AIDE database. Looks okay!

チェックコマンドが正常に動作すれば大丈夫です。

2.シェルをcronで実行させる

作成したシェルを定期実行させます。

まず、crontabファイルに設定を記述します。このファイルに書いたことをcronが実行してくれます。

#crontab -e

#AIDE
47 10 * * * sh /root/aide/aide_check.sh > /var/log/aide.testcheck.log 2>&1;

シェルが実行されたことを確認するために、/var/log/aide.testcheck.logにログを残す設定をしました。

crontabでの実行日時の書き方は、

分 時 日 月 曜日 コマンド

です。

上記の書き方だと、毎日10時47分にsh /root/aide/aide_check.sh > /var/log/aide.testcheck.log 2>&1;が実行されます。

まず動作確認のため、現在の時間の2分後くらいの時間(ここでは10時47分)に設定してあります。

時間が過ぎるのを待ってから、自分で設定したログ(/var/log/aide.testcheck.log)を確認します。

# less /var/log/aide.testcheck.log

AIDE, version 0.15.1
### All files match AIDE database. Looks okay!

ログが書き込まれているのが確認できれば正常です。

動作確認ができたら再びcrontabを編集します。

改ざんチェックを1時間おきに行う設定にします。

#crontab -e

#AIDE
00 * * * * sh /root/aide/aide_check.sh > /var/log/aide.testcheck.log 2>&1;

これで、毎日1時間おきにチェックコマンドが実行されます。

さてさて、これでチェックコマンドが自動実行されるようにはなりましたが、このままだと改ざんが検知されてもサーバに入ってログを確認しないと知ることができません。

これでは本末転倒ですので、改ざんが検知されたらメールでお知らせしてくれるようにシェルを書き換えましょう!

メール通知設定をする

ログに「Looks okay!」が出力されていないか、added、changed、removedのどれかが出力されていたら「改ざんされました」というメール通知をするようにシェルを書き換えます。

# vi /root/aide/aide_check.sh

#!/bin/sh
MAILTO=example@mail.co.jp,example.2@mail.co.jp ←宛先にするメールアドレスを記入します。コンマで区切れば複数指定できます。
LOGFILE=/var/log/aide/aide.log
/usr/sbin/aide -C > $LOGFILE
if[ $(grep "Looks okay!" $LOGFILE | wc -l) -eq 0 -o $(egrep "added|changed|removed" $LOGFILE | wc -l) -eq 1 ]; then
echo "ファイルの改ざんが検出されました:$(egrep "added|changed|removed" $LOGFILE)" | /bin/mail -s "AIDE DETECTED CHANGES"  -r "example-server(送信者名を指定できます。わかりやすいようにサーバ名を指定しました。)" $MAILTO fi exit

上書き保存した後、実際に監視対象フォルダに空のディレクトリを追加して、シェルを実行してみます。

#mkdir /監視対象ディレクトリ/aidetestdir

シェルで指定したメールアドレスに改ざん通知が届けばOKです!

※先ほどテストのために作った空のディレクトリは忘れずに削除しておきましょう。

まとめ

今回はWebサイト改ざんの被害に遭ってもいち早く気付けるような仕組みを紹介しました。

改ざんされると、意図しない詐欺ページに誘導されたり、悪意のあるファイルが勝手にダウンロードされたりする危険性があります。

改ざんに気が付かず長期間放置することで被害は拡大します。

攻撃される前にブロックすることはもちろん大事ですが、攻撃されたときのことを考えて対策をしておくことも大切です。

セキュリティ対策をしていない、アップデートもしていないWebサイトを放置することは、家中の窓を開けて鍵をかけずに長期旅行に出かけているようなものです。もし、そういったサイトをお持ちの方は、被害が出る前にアップデートしたり、今回紹介したAIDEを入れたり、セキュリティソフトを入れたりしてはいかがでしょうか?

最後までご覧いただきありがとうございました。