mod_securityでURI単位のホワイトリストを作成する

mod_securityでURI単位のホワイトリストを作成する

たびたび本ブログにもでてくるmod_security。これまではルール単位でURIの除外設定を行っていたんですが、ちょっと面倒になってきました。
そこでURI単位でもうmod_securityに対象外にするホワイトリストを設定。

mod_security設定でホワイトリストのファイルを指定する。

どこでもOKですが、以下のディレクティブを設定。

SecRule REQUEST_URI "@pmFromFile /usr/local/apache2/conf/extra/base_rules/whitelist_uri.txt" \
    "id:'900022', \
     phase:1, \
     nolog, \
     allow, \
     ctl:ruleEngine=Off, \
     ctl:auditEngine=Off"

REQUEST_URIで除外。@pmFromFileでファイルからパターンを読み込み。
idはユニークであればなんでもOK。logは残さない、allowする、Engine,AuditoをOffにってこと。

上記で指定したホワイトリストファイルを作成する

@pmFromFileって、マニュアルをみるとpatterm match from fileの略みたいなんですが、どうもRegular Expressionは使用不可。
なので除外したいURIを全部列挙する。

/hoge/fuga
/fuga/hoge
/foo/baa

とかこんな感じ。

最初正規表現でかいていたら全然除外してくれなくてなんでだ、と。