ModSecurityのスペシャルアクションを読み解く

7月 3, 2010

前回に引き続き、ModSecurityの各種アクションについてまとめてみる。
やはりオフィシャルハンドブックとリファレンスマニュアルより引用した。
書き出したところで全て理解できているわけではないが、いつか役に立つかもしれないので。

Logging Actions
ログ関連のアクション。
以前の記事ModSecurityのAuditLog覚え書きにも書いたが、センシティブなデータを
ログから取り除くためのsanitiseArgなど、利用することがあるかもしれない。
こういう方法があるということは覚えておいてよさそうだ。

auditlog 現在のトランザクションをaudit logに記録する
log エラーメッセージを記録する。”auditlog”を含む。
logdata アラートメッセージの一部としてデータフラグメントも記録する。
noauditlog audit logに現在のトランザクションを記録しない。
nolog エラーメッセージを記録しない。”noauditlog”を含む。
sanitiseArg リクエストパラメータをaudit logから削除する。
sanitiseMatched マッチした全てのパラメータをaudit logから削除する。
sanitiseRequestHeader リクエストヘッダーをaudit logから削除する。
sanitiseResponseHeader レスポンスヘッダーをaudit logから削除する。


Special Actions
このアクションは、他の機能クラスへのアクセスを提供する一種のゲートウェイとなるもの、らしい。

ctl 現在のトランザクションの設定を変更する。
multiMatch マルチマッチングを有効化する。
t マッチングの前に、変数に適用するtransformation functionsを指定する。


“t”の意味がよく分かりません(汗)。
リファレンスマニュアルによると、例えば”t:none”を使用すると、指定したルールに
おいて全てのtransformation functionsを削除する、ということだそうだ。
リファレンスマニュアルを見ると何となく分かるような気もするが、日本語に
するのが難しい・・・

ctlは一時的に何らかの設定の値を変更することを可能にするものと思われる。
以下の設定オプションが適用範囲となる。
(リファレンスマニュアルより抜粋)

auditEngine
auditLogParts
debugLogLevel
ruleRemoveById (single rule ID, or a single rule ID range accepted as parameter)
requestBodyAccess
forceRequestBodyVariable
requestBodyLimit
requestBodyProcessor
responseBodyAccess
responseBodyLimit
ruleEngine


例えば、以下の例はrequestBodyProcessorがXMLの場合に解析の対象とする。

# Parse requests with Content-Type “text/xml” as XML
SecRule REQUEST_CONTENT_TYPE ^text/xml nolog,pass,ctl:requestBodyProcessor=XML


Miscellaneous Actions
他のアクショングループに属さない、その他のアクション。

append レスポンスボディにコンテンツを付け足す。
exec スクリプトを実行する。
pause トランザクションを一時停止する。
prepend レスポンスボディの先頭にコンテンツを追加する。
status 拒否/リダイレクトに使用するステータスコードを指定する。
xmlns XPath expressionsを使用するためのネームスペースを指定。


うーむ・・・”transformation functions”はModSecurity2.5から追加されたもの
らしいが、これを理解していないと、他のところも理解できない。
どこかで、これについてはしっかり覚えておこうと書いてあったような気もする。
次回はこのtransformation functionsについてまとめてみよう。

Categories: ModSecurity

No Responses so far | Have Your Say!

Comments are closed.