ModSecurityのベーシックルール

6月 27, 2010

ModSecurityのフィルタルールはかなり細かい話になるので、後回し。
まずは基本中の基本部分の設定から見て行ってみようと思う。
ModSecurityのバージョンは2.5.〜である。また名数値はほぼデフォルト値。
ModSecurityオフィシャルハンドブックと以下リファレンスマニュアルを参考にした。
↓ ↓ ↓
ModSecurity® Reference Manual
※現時点での最新版である。

SecRequestBodyAccess On/Off ←リクエストボディのバッファリング指示
SecRequestBodyLimit 1310720 ←最大リクエストボディサイズを指定
SecRequestBodyNoFilesLimit 131072 ←アップロードファイルサイズを除いた最大リクエストボディサイズ
SecRequestBodyInMemoryLimit 131072 ←最大メモリバッファサイズ

SecResponseBodyBodyAccess On/Off ←レスポンスボディのバッファリング指示
SecResponseBodyLimit 524228 ←最大レスポンスボディサイズを指定
SecResponseBodyLimitAction Reject/ProcessPartial

SecResponseBodyMimeType text/plain text/html ←デフォルト。
SecResponseBodyMimeTypesClear
SecTmpDir /path/to/dir ←テンポラリファイル格納先
SecDataDir /path/to/dir ←永続的データの格納先
SecCookieFormat 0/1 ←Cookieフォーマットを指定。デフォルト0
SecArgumentSeparator & ←デフォルト


SecRequestBodyAccessはOnでいいだろう。
SecResponseBodyBodyAccessはリソースの無駄になるのでOffでよい。
(マニュアル推奨)
SecResponseBodyLimitActionは最大レスポンスボディサイズをオーバーした時の
アクションを指示。Rejectで拒否、ProcessPartialだと2段階に分けてプロセスを続行。

SecTmpDirで指定するディレクトリは SecRequestBodyInMemoryLimitの値が
オーバーした場合にApacheがディスクにスワップする場所となるため、Apache
ユーザが書き込みできる必要がある。設定しなかった場合は多分/tmpになる。

SecDataDirは”persistent data”を格納する。
ここで言うpersistent dataというのは、トランザクションが終了した後も保持される
データのことらしい(IPアドレスやセッションデータ等)。
これを設定していないとaudit_logにWarningが出るので、一応専用のディレクトリ
を作成して設定しておく。

SecCookieFormatはcookieフォーマットを指定。
殆どのWebアプリケーションはNetscapeスタイルである0を使用している。
SecArgumentSeparatorはapplication/x-www-form-urlencodedにおけるセパレータが
&でない場合のみ利用する。これら2つは通常は設定しなくてよいだろう。

SecArgumentSeparator ;


以上の項目はModSecurityのメイン設定ファイルに直接書き込んでもよいが、
専用のファイルに記述してIncludeする方がすっきりしていいと思う。

読み違えもあるかもしれないし、実際まだよく分かっていない部分も多々ある。都度修正/追加。


Categories: ModSecurity