AuditConsoleを設定

先日mod_securityをウェブサイトへ仕込みました。mod_securityはいわゆるWAF(Web Application Firewall)で、HTTPで通信される内容を全部チェックして、ルールに従ってブロックするモジュール。

こいつのチェックに引っかかるとログを吐いてくれるのですが、まぁこれが読みにくい。なんとかならんかと探るとmod_security用の監査ログビュアがあるようです。

今回はこのうちAuditConsoleというものを入れて見ました。

インストール

ブツはhttp://download.jwall.org/AuditConsole/current/にあります。
今回はRedHatにインストールしましたが、AuditConsole-0.4.6-8-standalone.zipをダウンロード。
これを適当なところへ展開。これ、tomcatですね。

# cd /opt
# unzip AuditConsole-0.4.6-8-standalone.zip
# cd AuditConsole
# chmod 755 bin/*.sh

起動

例によってcatalina.shで起動。

# bin/catalina.sh start

これで起動したサーバの8080と8443でListenします。ポート番号を変更したい場合はcatalina.sh中にポート指定があるのでこれを編集。
これでhttps://server-name:8443/をブラウズするとログイン画面が現れるはず。
ここでデフォルトユーザのパスワードを変更したり、メール設定を適当に編集。

センサー作成

次にmod_securityのmlogcから監査ログを受け取る設定。
https://server-name:8443/Dashbord のメニューからSystem/Sensorsを選択。"Add Sensor"をクリックして適当に値を設定。

Sensor Type ModSecurity
Sensor Name 適当に
Sensor Password 適当に
Address アクセス制限したいとき(よくわかりません)

mlogcの設定

mlogcはmod_securityの監査ログをAuditConsoleへHTTPで送り込むラッパーみたいなプログラム。
mod_securityをコンパイル、リンクするとデフォルトでmlogcも出来上がります。
modsecurity-apache_2.7.5/mlogc 以下ですね。ここのINSTALLファイルの記述内容に従ってインストール。
まず mlogc を適当なところへコピーします。

# cp mlogc /usr/local/bin
# chown root:root /usr/local/bin/mlogc

mlogcの設定ファイルを/etcかどこか適当なところへコピーして、必要事項を編集。

# cp mlogc/mlogc-default.conf /etc/mlogc.conf

編集が必要なのは

ConsolURI AuditConsoleのセンサーURI
SensorUsername 上記URIへアクセスするときのユーザ名
SensorPassword 同、パスワード

くらい。

ユーザ名、パスワードは上記のセンサーを作成したときのものを指定。

mod_securityを設定

mod_securityで監査ログをmlogcへ送信する設定を入れます。apacheの設定ファイルですね。
これもINSTALLファイル中にあるので、だいたいそのまま。mlogcをおいた場所やmlogc.confファイルをおいた場所は適当に読み替えてください。

     # Use ReleventOnly auditing
     SecAuditEngine RelevantOnly

     # Must use concurrent logging
     SecAuditLogType Concurrent

     # Send all audit log parts
     SecAuditLogParts ABIDEFGHZ

     # Use the same /CollectorRoot/LogStorageDir as in mlogc.conf
     SecAuditLogStorageDir /var/log/mlogc/data

     # Pipe audit log to mlogc with your configuration
     SecAuditLog "|/usr/local/bin/mlogc /etc/mlogc.conf"

SecAuditLogStorageDirのところ、ディレクトリがなかったら作っておくこと。"apachectl -t" でチェックしたら怒られます。
またmlogcそのものはrootで動作しますが、httpdがnobodyで動作しているので実際に /var/log/mlogc 以下は nobody:nobodyでwritableである必要があります。

# chown nobody:nobody /var/log/mlogc

それと、SecAuditLogディレクティブはデフォルトではどこかファイルになっているので、既存のディレクティブ値とかぶらないようにする必要があります。
さて、ここまでやったらapacheとAuditConsoleを再起動。これで監査ログをウェブでチェックできる。。はずなんだけどなんだかデータがこないな。
今日はここまで。なんか設定が足りんのかな。