Link to Apacheに対するサービス拒否攻撃を回避する方法:ITpro
ITproで紹介されていたDOS攻撃に対して、一時的に攻撃先のIPアドレスを遮断して回避する「mod_evasive」をFedora Core 6のApacheに組み込んでみました。
apxsが必要なので、httpd-develをインストールしていなかったら、先にyumでインストールしておいてください。
また、mod_so.cが必要ですので確認してください。
確認方法
# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c <-これ
インストール
- mod_evasive_1.10.1.tar.gzをダウンロードします。
Download先 http://www.zdziarski.com/projects/mod_evasive/
- Apache2なので適当なディレクトリで解凍します。
# tar zxfv mod_evasive_1.10.1.tar.gz
- apxsを使ってコンパイルします。
# cd ./mod_evasive
# apxs -i -a -c mod_evasive20.c
これで、modules(リンク先 64bit版の場合/usr/lib64/httpd/modules/がリンク元)にmod_evasive20.soができます。
- httpd.confを修正します。
# vi /etc/httpd/conf/httpd.conf
「LoadModule evasive20_module /usr/lib64/httpd/modules/mod_evasive20.so」がhttpd.confに追加されているのを確認します。
次にhttpd.confの適当な所に、次のように記述します。 - httpdを再起動します。
# /etc/rc.d/init.d/httpd restart
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 50
DOSPageInterval 2
DOSSiteInterval 1
DOSBlockingPeriod 60
DOSWhitelist 127.0.0.1 192.168.1.*
DOSEmailNotify yourmail@yourdomain.com
</IfModule>
動作説明
あるIPアドレスが50以上の異なるページを一秒以内ごとにリクエスト(DOSSiteCount 50)
あるいは同じページを2秒間に3回以上リロード(DOSPageInterval 2) (DOSPageCount 3)
上記の場合、60秒間、そのIPアドレスを遮断する。(DOSBlockingPeriod 60)
なお、DOSWhitelistのアドレスは対象外とする。
コメント (2)
お世話になっております。
mod_evasive の安定性については如何でしょう?
もし情報をお持ちでしたらお書きくわえ頂ければ幸いです。
投稿者: nbirth | 2008年07月01日 14:28
日時: 2008年07月01日 14:28
シビアな状態はあまり経験したことがないので、安定性とかは言える立場にありません。
一度だけ、DOS攻撃を受けたことがあるのですが、サーバがやや重くなったものの、サーバは該当するIPアドレスを遮断していました。
なお、現在は設定を下記のようにしてあります。また、evasive.confとして、conf.dディレクトリの下においてあります。
LoadModule evasive20_module /usr/lib64/httpd/modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 50
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 120
DOSWhitelist 127.0.0.1 192.168.1.*
DOSEmailNotify *****@example.com
DOSSystemCommand "su - apache -c '/sbin/... %s ...'"
DOSLogDir "/var/log/mod_evasive"
</IfModule>
投稿者: Yuusaku | 2008年07月02日 09:41
日時: 2008年07月02日 09:41