AuditConsoleのトラブルシューティング

昨日インストールしたAuditConsoleですが、まぁそりゃ最初からはちゃんと動作しないわけで。
ひと通り設定してからちゃんと動作させるまでのトラブルシューティングをメモっておきます。

既存設定とのバッティング

mod_securityが吐き出す監査ログをmlogcというブログラムにパイプで送り、それをAuditConsoleのセンサーがHTTPで受け取るという仕組みです。ApacheのCustomLogでログをパイプするのと同じ仕組みですね。
mod_securityの監査ログの場所はSecAuditLogディレクティブで指定されていますが、デフォルトではこれがファイルに指定されています。

SecAuditLog /var/log/modsec_audit.log

これが残っていると当然mlogcにはログが送り込まれません(記述場所の順番にもよると思うけど)。
なのでこの行は消すか、コメントアウトしてmlogcへのパイプを書きます。

#SecAuditLog /var/log/modsec_audit.log
SecAuditLog "|/usr/local/bin/mlogc /etc/mlogc.conf"

監査ログが書かれる場所のパーミッション

監査ログは一旦 SecAuditLogStorageDirディレクティブで指定されたところへ記述されます。また、上記のSecAuditLogから監査ログを受け取ったmlogcは/etc/mlogc.conf中のCollectorRoot以下へエラーログとか、転送バッファ、ロックファイルを作ります。
mlogcそのものはroot:rootで動作するので問題ありませんが、mod_securityはapachehttpdとして動作するのでそのプロセスのowner,groupでSecAuditLogStorageDirにread,writeできないといけません。
例えばこんな設定だとすると、

SecAuditLogStorageDir /var/log/mlogc/data

このディレクトリ以下がhttpdでかける必要があります。

# chown nobody:nobody /var/log/mlogc/data

mod_securityのSecAuditLogStorageDirとmlogcのLogStorageDirを一致させる

SecAuditLogディレクティブではmlogcへパイプで書いているくせに、どうもmlogcはmod_securityがSecAuditLogStorageDir以下に吐き出したログファイルを定期的に読み込んでAuditConsoleへデータを送っているみたい。そのファイルを読めばいいかっていう情報をパイプで受け取っているのかもしれない。

mlogcが監査ログを探すところがmlogc.conf中でしていされているLogStorageDirディレクティブ。
このLogStorageDirとSecAuditLogStrorageDirが一致してないとこんなエラーログがmlogc-error.logにでます。

[Thu Aug 22 09:09:53 2013] [2] [25567/14489a0] Invalid entry (file not found 2): /var/log/mlogc/20130822/20130822-0909/20130822-090953-UhVW0awQGToAAGPr3j0AAACO
[Thu Aug 22 09:09:53 2013] [2] [25567/14489a0] Invalid entry (file not found 2): /var/log/mlogc/20130822/20130822-0909/20130822-090953-UhVW0awQGToAAGPr3j8AAACO
mlogc.conf:LogStorageDir       "/var/log/mlogc/data"
modsecurity.conf(apacheの設定ファイル): SecAuditLogStorageDir /var/log/mlogc/data