2012年4月18日水曜日

DoS対策で使えるiptablesのhitcountは最大値=20だった!

iptablesでDoS対策する方法に、hitcountを使って接続回数を制限するものがあります。
sshだったりhttpだったり、ポート別・IPアドレス別に制限がかかるのです。

sshの場合は60秒間で5回など、hitcountが少なくて良いのですが、
httpの場合は画像のロードなどもあるので、10回より多めにしておきたいところです。

さぁ試してみよう!


--seconds 30 --hitcount 50 に設定して、100回接続してみました。
しかしどうでしょう。全てOKになってしまいました。
数値を小さくすると効果が出ているのですが、数値を変えて試すと20以上は全てOKでした。
どうやらhitcountの最大値は20だったようです。
※ここまで検証で試しました。
※この事は普通に英語サイトで記述されています。orz


じゃ、対応してみようか


hitcountの最大値はデフォルトで20です。
設定ファイルを確認してみましょう。

# cat /sys/module/ipt_recent/parameters/ip_pkt_list_tot 
20



このままでは --hitcount 50 としても全く効きません。
なので、基本的な設定を変更します。


# vi /etc/modprode.conf
以下を追加します。

options ipt_recent ip_pkt_list_tot=50


設定を反映しましょう。

/-- CentOS5の場合 [ここから] --/

# service iptables stop
# rmmod ipt_recent
# modprode ipt_recent

/-- CentOS5の場合 [ここまで] --/


# service iptables restart




設定の反映が完了しました。
設定ファイルを確認してみましょう。

# cat /sys/module/ipt_recent/parameters/ip_pkt_list_tot 
50 <- 変わった!?



この設定が有効かどうかは、50回以上自動アクセスするテストプログラムを稼働させて、パケットがrejectされているか見てみましょう。
今回はmod_evasiveに付いてきたtest.plを書き換えて実行してみました。
便利ですね、このテストプログラム。



【参考URL】
hitcountの最大値について:

ip_pkt_list_totについて:

modprode.confの設定が反映されない時はmodplodeをreloadしてみよう:

0 件のコメント:

コメントを投稿