ATOM鯖-13:mod_cbandで帯域&同時接続制限の設定

mod_limitipconn.cでそれなりに同時接続はできているんですが、
問題になるようなアクセスとは接続数だけで済むようなかわいい相手ばかりではないので・・・w
接続数/帯域制限で無法なダウンローダを撃退
「mod_limitipconnによる接続数制限」
http://www.atmarkit.co.jp/flinux/rensai/apache2_08/apache08d.html
などを参考にさくっと設定。下手な制限よりは安全確実(^^)
で、ちょっとこったことをしようとマニアックな設定を求めると
Apache2向けにはmod_limitipconnや帯域制限などの機能を含んだmod_cbandば提供されています。
インストールは
#yum -y install mod_cband
mod_cband-0.9.7.5-1.fc7.i386 日付を見ると2006/11/26とか^^;
最新版っぽいので納得はいかないものの作業を進める(^◇^;
conf.d/mod_cband.confが作成されているので環境にあった修正を。
コメントアウトされてるものの書き方があるので一度目を通しておく。
外からアクセスすると「mod_cband status page」が表示されます。
とりあえずhttpdの再起動。人目にさらしてあるサーバーなので一応restartは避ける。
#apachectl -k gracefulでは詳細設定を。
CBandSpeed(サーバ全体の接続に対して制限)
# One Host Server
CBandSpeed 1024 10 30
#VirtualHost
# Maximal 1024kbps speed for this VirtualHost
# Maximal 10 requests per second for this VirtualHost
# Maximal 30 open connections for this VirtualHost
# ホスト:最大転送速度50Mbps,一秒間に10リクエスト,同時接続数を30に制限
<VirtualHost *:80>
CBandSpeed 50Mbps 10 30
</VirtualHost>

CBandRemoteSpeed(IP毎の接続に対して制限)
# 1IP
# 最大の転送速度が 2048kb/s、一秒間に5リクエスト、同時接続数を2に制限
<VirtualHost>
CBandRemoteSpeed 2048kb/s 5 2
</VirtualHost>
この設定で制限に引っかかるとエラーコード503を返します。
設定次第でエラーコードを返さずに設定条件で接続許可やほかのページを表示することもできる感じ?(まだ試してない)。
CBandClassRemoteSpeed(GoogleBot)
# googlebot_class
<VirtualHost>
CBandClassRemoteSpeed googlebot_class 10kb/s 2 3
</VirtualHost>

ほかにもこんな設定があります
CBandDefaultExceededURL(制限時に飛ばすデフォルトURL:Vartual外)
CBandDefaultExceededURL http://~
CBandLimit(100MByte 転送量制限)
CBandExceededURL(制限時表示サイト)
CBandScoreBoard(フルパス)
CBandPeriod(転送量の累積期間:スコアボードのクリア間隔)
CBandExceededSpeed(転送量制限後の許可速度)
<VartualHost *:80>
CBandLimit 100000
CBandExceededURL http://~
CBandScoreBoard /var/run/apache2/vhost.scoreboard
CBandPeriod 30M
CBandExceededSpeed 10 5 5
# CBandScoreFlushPeriod 1
# CBandRandomPulse On
</VartualHost>

※単位
速度
kbps, Mbps, Gbps – “ビット”毎秒
kb/s, Mb/s, Gb/s – “バイト”毎秒
指定しない場合:kbps
転送量
K, M, G – 1000/1000*1000/1000*1000*1000 バイト
Ki, Mi, Gi – 1024/1024*1024/1024*1024*1024 バイト
指定しない場合:K
期間
S, M, H, D, W – 秒/分/時間/日/週
指定しない場合:S