今回はCentOS 7にファイルの改ざん検知を行う『AIDE』を導入する。 改ざん検知というと、『Tripwire』あたりが一番よく使われている(かなり頑張ってやればInotifyも使えなくはないのだが…応用効くし)のだが、yumでインストールする場合はEPELリポジトリが必要になる。 AIDEの方はデフォルトのリポジトリでそのままインストールできて、かつ設定も簡単に行えるようだ。

1. インストール

先ほど記述したように、インストールはデフォルトのリポジトリからそのままインストールできる。

yum install -y aide

これでOK。

2. 設定

次に、AIDEの設定を行う。 設定ファイルは「/etc/aide.conf」というファイルになり、デフォルトのままでも一般的なファイル・ディレクトリについて設定されているので、そのままでも問題なく利用可能になっている。 設定を追加する場合は、このファイルに以下のように監視対象とするファイルやディレクトリのPATHを追記してやればよい。

/etc/aide.conf
/PATH CONTENT_EX # 監視対象とする !/PATH # 監視対象から除外する

細かい設定方法については、こちらのマニュアルを参照。 「/var/log」のように頻繁に追記がされるディレクトリや、「/proc」とかのシステムで動的に変化するディレクトリについては除外してやるといいだろう(いちいちログの変更までは見てられないので)。 設定ファイルの編集が完了したら、以下のコマンドで現在のディレクトリやファイルの状態を保持するDBファイルを生成、参照先のPATHに移動させる。

aide -i
mv  /var/lib/aide/aide.db{.new,}.gz
[root@BS-PUB-CENT7-01 ~]# aide -i

AIDE, version 0.15.1

### AIDE database at /var/lib/aide/aide.db.new.gz initialized.

[root@BS-PUB-CENT7-01 ~]# mv /var/lib/aide/aide.db{.new,}.gz

これで、改ざん検知が行えるようになった。

3. 改ざん検知をする

AIDEでは、都度コマンドを実行して改ざん検知を行う。 以下のコマンドで、DBの内容に変更を加えずにファイル内容の変更確認をする。

aide -C
[root@BS-PUB-CENT7-01 ~]# # 何も変更がない場合
[root@BS-PUB-CENT7-01 ~]# aide -C
/root/Book2.xlsx mtime in future

AIDE, version 0.15.1

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

[root@BS-PUB-CENT7-01 ~]# # ちょっと変更した場合
[root@BS-PUB-CENT7-01 ~]# rm /root/Book2.xlsx
rm: 通常ファイル `/root/Book2.xlsx' を削除しますか? y
[root@BS-PUB-CENT7-01 ~]# touch /root/test{1..20}
[root@BS-PUB-CENT7-01 ~]# aide -C
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2016-12-08 08:07:22

Summary:
  Total number of files:        89477
  Added files:                  20
  Removed files:                1
  Changed files:                0

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

added: /root/test1
added: /root/test10
added: /root/test11
added: /root/test12
added: /root/test13
added: /root/test14
added: /root/test15
added: /root/test16
added: /root/test17
added: /root/test18
added: /root/test19
added: /root/test2
added: /root/test20
added: /root/test3
added: /root/test4
added: /root/test5
added: /root/test6
added: /root/test7
added: /root/test8
added: /root/test9

---------------------------------------------------
Removed files:
---------------------------------------------------

removed: /root/Book2.xlsx

改ざんを検知しつつ、DBの更新も行う場合は以下のコマンドになる。

更新DBのPATHと参照DBのPATHは別々に記述する必要がある(参照先は「database」、更新・作成先は「database_out」で定義されている)。 このため、更新後にファイルを移動する処理が必要になる。

aide -u;mv -f /var/lib/aide/aide.db{.new,}.gz
[root@BS-PUB-CENT7-01 ~]# aide -u ; mv -f /var/lib/aide/aide.db{.new,}.gz
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2016-12-08 08:44:27

Summary:
  Total number of files:        89496
  Added files:                  20
  Removed files:                0
  Changed files:                0

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

added: /root/test101
added: /root/test102
added: /root/test103
added: /root/test104
added: /root/test105
added: /root/test106
added: /root/test107
added: /root/test108
added: /root/test109
added: /root/test110
added: /root/test111
added: /root/test112
added: /root/test113
added: /root/test114
added: /root/test115
added: /root/test116
added: /root/test117
added: /root/test118
added: /root/test119
added: /root/test120
[root@BS-PUB-CENT7-01 ~]# aide -u ; mv -f /var/lib/aide/aide.db{.new,}.gz

AIDE, version 0.15.1

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

### New AIDE database written to /var/lib/aide/aide.db.new.gz

チェック結果は「/var/log/aide/aide.log」というファイルに記述されるのだが、都度上書きされる。 cronなどで定期実行させてその都度の結果を残したい場合は、実行の都度どこかに退避させるか、メールなどで通知させるといいだろう。

aide -u | mailx -s 'AIDE Check' root;mv -f /var/lib/aide/aide.db{.new,}.gz

参考