AIDEで改竄検知
改竄検知は頻繁に偽陽性(false positive)に煩わされることになるイヤな管理タスクだが、セキュリティ上避けて通れない。
ファイルアクセスをフックしてリアルタイム保護してくれるようなサービスがあるともっといいのだが、Linuxではあまり発達していないようだ。SELinuxを使うとrootに対してでもファイルアクセスを制限できるのだが、現状では仮想PCと相性が悪い。
今回はGPLライセンスの改竄検知ソフトウェアAIDE (Advanced intrusion detection environment)を使って改竄検知を仕込んでみる。
- http://aide.sourceforge.net/
- http://aide.sourceforge.net/stable/manual.html
- http://packages.debian.org/search?keywords=aide&searchon=names&suite=stable§ion=all
- http://packages.ubuntu.com/search?keywords=aide&searchon=names&suite=oneiric§ion=all
Debian, Ubuntu のaideはかなりdebianizeされてて気持ち悪い。…というか読み切れないので既存のパターン設定は全て捨ててしまった。
/etc/aide.conf
設定例を公開するのもアレなのでポイントだけ。
- パスのパターンは全部/で始まっていないと怒られるようだ
- 行頭の=で「枝刈りはしないけど特定のフォルダだけチェック種別を変える」ことができる。ただしパターン末尾に$をつけないと枝も同じ正規表現にマッチしてしまう
aideinit
/etc/aide.conf を書いたら aideinit でデータベースを初期化する。
/etc/default/aide
レポートの送信先メールアドレスなどを設定する。
MAILTO=tateisu@gmail.com
/etc/cron.daily/aide
このスクリプトが定期的に呼ばれる。手動で起動してもよい。
動作確認
実際に動かしてみると、ディレクトリのctime,mtimeが変化しただけなどの偽陽性(false positive)で数回は設定を見直すことになる。
あと困ったのが、手動でaideinitを起動した場合と /etc/cron.daily/aide とで結果が違う。仕方なくaideinitでスキャンした結果は使わないことにした。
DBリセットは次の手順で行う
- 設定ファイルを変更していたら事前にaideinitを呼ぶ
- /etc/cron.daily/aide ; mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db ; /etc/cron.daily/aide