«

»

10月 20

mod_security2 による slow DoS 攻撃対策 (2) mod_security2 に最新の Core Rule Set を使えるように設定する (使えるようにするだけで、ルールはひとつも入れないからっぽの状態をつくる)

いよいよ mod_security2 の設定をつくり、攻撃から身を守れるようにしていきます。

ただ、難問が待っています。

この mod_security2 って奴、設定項目が膨大で、理解するのに(たぶん)大変苦労する点です。

まあ、マニュアルをみてみればわかるのですが…
http://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Reference_Manual

項目が多すぎてさっぱりわかりません。
Configuration Directives の項目を今見たら、76項目ですか?
使いこなせるようになるには、ちょっとお時間がかかっちゃいそうです。

しかし心配は無用。
cookpadのようなカンジの、mod_security2レシピ集があるんです。

それが modsecurity_crs http://sourceforge.net/projects/mod-security/files/modsecurity-crs/0-CURRENT/
です。(crs = Core Rule Set の略)
本稿執筆段階では 2.2.5 が最新版です。

 

ただ、この crs に書いてあるsecurityレシピ、全部いっきに使おうとすると、
イロイロ問題が出ます。
そこで本稿第2稿では、拾ってきたレシピを設置してすぐ使えるよう準備する だけ の方法を紹介するにとどめます(本稿では設置のみで使いません)。

まずはダウンロードしてきます。
CLIWebwブラウザ w3m を使用してページを開き、エンターキーで modsecurity-crs_2.2.5.tar.gz を選択してダウンロードしました。

 

[code.zobe.jp]# w3m http://sourceforge.net/projects/mod-security/files/modsecurity-crs/0-CURRENT/
[code.zobe.jp]# gzip -cd modsecurity-crs_2.2.5.tar.gz | tar xvf -

 

これを当方の環境では、CentOS5の httpd 用etcファイルの配置を鑑みて、
/etc/httpd の下に移動し、名前を crs にすることにしました。

 

[code.zobe.jp]# mv ./modsecurity-crs_2.2.5 crs
[code.zobe.jp]# mv ./crs /etc/httpd/

 

いろいろと思い悩んだ結果、うちの環境では、運用ルールを以下のように定めました。

  • /etc/httpd/conf/httpd.conf が /etc/httpd/conf.d/mod_security.conf を呼び出す(元々ある設定)
  • /etc/httpd/conf.d/mod_security.conf が /etc/httpd/crs/modsecurity_crs_10_config.conf を呼び出す。
  • /etc/httpd/conf.d/mod_security.conf が /etc/httpd/crs/activated_rules/*.conf を呼び出す。
  • ルールの追加は /etc/httpd/crs/activated_rules/ に conf ファイルを置いて httpd を再起動。
  • ルールの削除は /etc/httpd/crs/activated_rules/ から conf ファイルを消して httpd を再起動。

 

そしてこのような配置に向けて、次の作業にかかります。

まずは空っぽだった conf.d/mod_security.conf に設定を作成します。

crs/modsecurity_crs_10_setup.conf.example
の最初のセクション
「 Recommended Base Configuration 」
を読むと、
「mod_security.conf-recommended」というおすすめ mod_security.conf の設定サンプルがあるから
それを使ってね、と言われます。

拾ってきて配置します。からっぽだったファイルは名前を変えて避けておきましょう。

[code.zobe.jp]# cd /etc/httpd/conf.d/
[code.zobe.jp]# wget http://mod-security.svn.sourceforge.net/viewvc/mod-security/m2/trunk/modsecurity.conf-recommended
[code.zobe.jp]# mv mod_security.conf mod_security.conf.old
[code.zobe.jp]# mv modsecurity.conf-recommended mod_security.conf

 

さらに当方では次のようにこの mod_security.conf を一部書き換えました。

○動作モードを「検出するだけ」から「オン(ルールセットによる通信遮断を許可する)」に設定を変更する

SecRuleEngine DetectionOnly

SecRuleEngine On

○デバッグ出力を、CentOSのhttpdの出力先ルールに準じて出力するように設定を有効にする
#SecDebugLog /opt/modsecurity/var/log/debug.log
#SecDebugLogLevel 3

SecDebugLog /var/log/httpd/modsec_debug.log
SecDebugLogLevel 3

○ログ出力を、CentOSのhttpdの出力先ルールに準じて出力するように設定を変更する
SecAuditLog /var/log/modsec_audit.log

SecAuditLog /var/log/httpd/modsec_audit.log

○crsのルールセットを、上で取り決めた運用方針通りに読み込むように追加指定する。
※ </IfModule> の直前に追記します
Include crs/modsecurity_crs_10_config.conf
Include crs/activated_rules/*.conf

そして最後に
/etc/httpd/crs/modsecurity_crs_10_config.conf
を準備します。

[code.zobe.jp]# cp /etc/httpd/crs/modsecurity_crs_10_setup.conf.example /etc/httpd/crs/modsecurity_crs_10_config.conf

 

ここまでで
「mod_security2がcrsのなんのルールセットも使用しないが、あとでいつでもルールを追加可能」
な状態をつくることができました。

今までの作業にミスがないか、確認できたら完了です。

[code.zobe.jp]# service httpd restart

 

 

次稿でようやく、slowhttptest による攻撃を防ぐ crs ルールセットの設定およびチューニング方法を紹介します。

1 ping

  1. mod_security2 で Core Rule Set に入っている base_rules ディレクトリにあるすべての設定を使ってみると、結構問題がある » code.zobe.jp

    […] これらをコピーして使用できるようにします(ディレクトリ配置が前に書いた記事の通りになっていることが前提)。 […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>