blog2007-02-04サーバにDoS耐性を付けるウェブサービスでは、アクセスが集中して、サイトが落ちる、というのは、よくある話です。純粋に人気が出てアクセス集中するなら、サーバ管理側の責任と言われても、しかたないと思います。botやF5アタックによる突発的な集中アクセスで、落ちてしまう、というのは、運営側としても、あまり納得がいくものではありません。そのような突発的なアクセスに対応するために、大量のアクセスをしてくるクライアントを検出し、優先度を落すか、アクセス禁止にする方法などがあります。いうわけで、Apacheモジュールでそれを検出するためのmod_dosdetectorを開発しました。(ちなみにコア部分の開発期間は、Apacheモジュールって、どう書くんだっけ、という状態から、3日でした。)mod_dosdetectorは、Apacheモジュールとして動作し、クライアントのIPアドレスごとにアクセス頻度を測定し、設定した閾値を越えると、DoS攻撃と判定します。詳細には、以下の機能を持っています。判定結果は、環境変数の設定によって通知データを共有メモリに配置し、サーバ単位で計測することにより、preforkモデルのApacheで多数のプロセスを立ち上げている場合でも、正確に計測できます。環境変数に結果を設定するため、mod_rewriteにより、煮るなる焼くなり、自由にリクエストを処理できます。リクエストを処理するサーバを隔離し、他のユーザへの影響を抑えたり、特定のページを表示させたり、そもそもアクセスを禁止したりなどなど。特定のIPアドレスからのアクセスや、特定のURLへのアクセスを特別扱いしたりすることも柔軟にできます。Apache過去に類似のモジュールは複数あるのですが、Apache2.0に対応していなかったり、細かい制御ができなかったり、などと使い勝手が悪いものでした。その点、mod_dosdetectorは、柔軟に設定できるところが売りです。はてなのサーバ群へ順次適用しており、稼働実績も今後積まれる予定です。mod_dosdetectorは、オープンソースで公開していますので、是非ご利用ください。http://sourceforge.net/projects/moddosdetector/ドキュメントは、まだありませんが、随時追加していきたいと思います。追記ブクマコメントへの反応です。「ずっとそのまま」ということはなくて、指定時間経ったら解除されます。現状では、1分程度に設定されています。DoS攻撃と判定しても、アクセス拒否するのではなく、優先度を下げる、という設定になっています。追記2Sourceforgeにアップしたファイルがビルドできないという「これはひどい」状態だったものを、修正しました。v0.2そういえば、先日、mod_dosdetectorのv0.2をリリースしました。「僕たちは「新しい技術」で生き残る」に採録されましたArchiveはてなブログをはじめよう!stanakaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。