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導入が役に立つのではないでしょうか。

んでは、以下導入した記録:

必要なツールを入れておく

ModSecurityインストール。…の前に、Apacheは止めておく。
ModSecurity公式サイトから最新版を取ってきてビルド。

Apacheのmoduleディレクトリにmod_security2.soができているのを確認。
次に、ModSecurity用ルールファイルを作成。(空でOK)
ルールはこのファイルに追加していく。

httpd.confに設定を直接追加…してもいいけど、 conf.d/modsecurity.conf に設定を追加。

※<IfModule mod_security2.c> ←「2」がついているので注意。

Apacheをスタート。
SecAuditLogで指定した場所にログファイルができていればひとまず動作確認OK。
Webページを読みこむと、このログファイルに色々記録されるはず。

ログの動作確認ができたら
SecAuditEngine ON から SecAuditEngine RelevantOnly にするのがオススメ。
(ONは全ての通信を記録。RelevantOnlyはエラー時のみログ記録)

ModSecurityはデフォルトで色々な設定がなされている様子。
空のルールファイルでもHashDos攻撃を防いでくれた!

これで導入はOK。
あとは自分のルールを追加していけばいいかと。

あ、ModSecurityをいきなり本番へ導入するとPOST処理など様々な通信に影響を及ぼす可能性アリ。
テストサイトでじっくり動作検証してから本番導入するべし(。・ω・)ノ

ModSecurityはフィルタリングやログ記録など色々できるっぽいので、色々勉強してみよう。
参考:ModSecurity公式マニュアル

Facebook / 広告
2012年01月04日 | Posted in ProgramNo Comments » 

関連記事

コメントを残す

メールアドレスが公開されることはありません。

スパム対策のため、コメントする際は下記の計算式を埋めてください。 計算式の有効期限が切れました。計算式の隣にある再読み込みボタンを押してください。