Program
hashdos対策にModSecurity2いれてみた
新年あけましておめでとうございます。
今年もよろしくお願いします(・ω・)
さて、2011年の暮れに気になる記事を発見。
徳丸浩の日記: Webアプリケーションに対する広範なDoS攻撃手法(hashdos)の影響と対策
お手軽にDoS攻撃できちゃう方法が見つかった&発表された。対策しましょう!
というお話。
またやっかいなモンが…とりあえずどんなもんか試してみよう。
攻撃のデモができるサイト(PHP向け)が公開されていたので、それを使って試してみる。
パラメーター数:65536
データ量:約1.4MB
攻撃対象:テスト用に立ち上げたEC2マイクロインスタンス。Apache2 + PHP5.3.5のみ搭載。
PHP:白紙phpファイル (<?phpだけ書いたファイル)
攻撃内容:POST処理1発のみ
んでは…攻撃!!
結果(各画像クリックで拡大):
POSTが完了するまでの時間:4.7分
CPU:4.7分の間、CPUはずっと99%
Σ( ゚Д゚ ) …うーわー…
ちょっとシャレにならないので、上記記事で紹介されていたmod_securityをいれてみました。
結果、
POST完了までの時間:6秒ちょい
CPU:使用率上がる気配なし (瞬間的には上がってる?)
で済むように。
HashDos対策済の言語&バージョンを使えるなら問題はありませんが、それができない場合はmod_security導入が役に立つのではないでしょうか。
んでは、以下導入した記録:
必要なツールを入れておく
1 2 3 4 5 |
yum install pcre-devel yum install libxml2 yum install libxml2-devel yum install curl yum install curl-devel |
ModSecurityインストール。…の前に、Apacheは止めておく。
ModSecurity公式サイトから最新版を取ってきてビルド。
1 2 3 4 5 6 7 8 9 |
wget http://sourceforge.net/projects/mod-security/files/modsecurity-apache/2.6.3/modsecurity-apache_2.6.3.tar.gz/download tar xzvf modsecurity-apache_2.6.3.tar.gz cd modsecurity-apache_2.6.3 # オプション無しの ./configure したらmake時にcurl関連ツールが無いよ、と怒られた。 # 下記ならOKだった。 ./configure - -with-curl=/usr/bin/curl-config make make install |
Apacheのmoduleディレクトリにmod_security2.soができているのを確認。
次に、ModSecurity用ルールファイルを作成。(空でOK)
ルールはこのファイルに追加していく。
1 |
touch conf/modsec/modsecurity_basic.conf |
httpd.confに設定を直接追加…してもいいけど、 conf.d/modsecurity.conf に設定を追加。
1 2 3 4 5 6 7 8 9 |
LoadModule unique_id_module modules/mod_unique_id.so LoadModule security2_module modules/mod_security2.so <IfModule mod_security2.c> SecRuleEngine On SecAuditEngine On SecAuditLog logs/modsec_audit_log SecRequestBodyAccess On Include conf/modsec/modsecurity_basic.conf </IfModule> |
※<IfModule mod_security2.c> ←「2」がついているので注意。
Apacheをスタート。
SecAuditLogで指定した場所にログファイルができていればひとまず動作確認OK。
Webページを読みこむと、このログファイルに色々記録されるはず。
ログの動作確認ができたら
SecAuditEngine ON から SecAuditEngine RelevantOnly にするのがオススメ。
(ONは全ての通信を記録。RelevantOnlyはエラー時のみログ記録)
ModSecurityはデフォルトで色々な設定がなされている様子。
空のルールファイルでもHashDos攻撃を防いでくれた!
これで導入はOK。
あとは自分のルールを追加していけばいいかと。
あ、ModSecurityをいきなり本番へ導入するとPOST処理など様々な通信に影響を及ぼす可能性アリ。
テストサイトでじっくり動作検証してから本番導入するべし(。・ω・)ノ
ModSecurityはフィルタリングやログ記録など色々できるっぽいので、色々勉強してみよう。
参考:ModSecurity公式マニュアル
コメントを残す