ApacheKiller のアドバイザイリをちゃんと解釈してみる。
ApacheKiller 対策をしていて、公式のセキュリティアドバイザリをそのまま貼付けるのもコピペプログラマみたいで芸がないので、ちゃんと解釈してみる。
# Drop the Range header when more than 5 ranges. # CVE-2011-3192 SetEnvIf Range (?:,.*?){5,5} bad-range=1
HTTPリクエストヘッダフィールド(Range) が正規表現にマッチした場合に環境変数 bad-range=1 をセット。
http://httpd.apache.org/docs/2.0/ja/mod/mod_setenvif.html#setenvif
※ 正規表現
『(?: ... )』 拡張正規表現 後方参照しない
『,.*?』の5回(以上)の繰り返しにマッチ
RequestHeader unset Range env=bad-range
RequestHeader リクエストヘッダディレクティブ
bad-range 環境変数がセットされている時に、RequestHeader から Range 属性を削除
http://httpd.apache.org/docs/2.2/ja/mod/mod_headers.html#requestheader
# We always drop Request-Range; as this is a legacy # dating back to MSIE3 and Netscape 2 and 3. RequestHeader unset Request-Range
Request-Range を削除。こちらは無条件に削除している。
# optional logging.
CustomLog logs/range-CVE-2011-3192.log common env=bad-range
CustomLog logs/range-CVE-2011-3192.log common env=bad-req-range
環境変数 bad-range、bad-req-range が指定されている時に、カスタムログ出力
ファイル指定(ServerRootからの相対パス)、ログのフォーマットは common(通常)
http://httpd.apache.org/docs/current/ja/mod/mod_log_config.html#customlog
まとめ。
- 「1. 攻撃っぽかったら 2. ヘッダーだけ捨てて 3. ログを取る」の流れ。
- 拡張正規表現とか、急に出てくると思い出せない。
- 「{5,5}」が地味に冗長
- ログの出力先を変更しているサーバーは、ちゃんと設定しよう。
- 最後の「env=bad-req-range」って不要なんじゃ ...
- アドバイザリにも書いてあるけれど、 Apache2.2 以上の設定です。