ModSecurityのSecRuleディレクティブ
ようやく核心へ近づきつつある?…かもしれない、ModSecurityのルール基本構造について。
過去のバージョンで”SecFilter”となっていたディレクティブは、現在”SecRule”に変わっている。
SecRule基本構文は以下となる。
SecRule VARIABLES OPERATOR [ACTION/TRANSFORMATION_FUNCTION]
VARIABLES
トランザクションにおいてチェックを実行する変数を指定。
ModSecurityはこの変数を通してトランザクションから情報を抽出する。
OPERATOR
フィルタリングルールを記述。通常は正規表現が用いられるが、ModSecurityは
他の様々なオペレータをサポートしている、そうだ。
ひとつのルールに1つのオペレータだけが許可される。
ACTION
ルールにマッチした場合のアクションを指示。何も指定しなかった場合、SecDefaultAction
で定義したアクションが用いられる。
TRANSFORMATION_FUNCTIONは、すいません、よくわかりません。
以下はリファレンスマニュアルからの引用例。
SecRule REQUEST_URI “attack” \
“phase:1,t:none,t:urlDecode,t:lowercase,t:normalisePath”
“REQUEST_URI”はVARIABLESのひとつとなる。
“attack”がOPERATOR。最後にAction。
VARIABLESは77種類用意されている。オフィシャルハンドブックをざっと見てみたが、
見ただけではさっぱりわからない。。。別途、まとめてみよう。
ModSecurity、哲学の領域だ。
参考
http://journal.mycom.co.jp/articles/2009/09/29/modsecurity/001.html