読者です 読者をやめる 読者になる 読者になる

mod_dosdetectorの反応への反応

先日(id:stanaka:20070204)、公開したmod_dosdetectorですが、ブクマ数が300users越えと予想以上の反響でした。その中で、いくつかFAQ的な反応があったので、それらに対する回答です。

  • mod_limitipconnでもできるんじゃないの?
    • mod_limitipconnは、同時接続数を制限して、越えた場合は、接続拒否をするというモジュールです。mod_dosdetectorは、DoS判定したクライアントのみを対象とした制御が可能です。この手の定量的なアクセス制御モジュールは、これまでにいくつか開発されているのですが、ほとんどのモジュールが単純にアクセス拒否するだけ、というのも、mod_dosdetectorの開発動機の一つです。
  • パフォーマンスは?
    • 確かに余分な処理が必要となっているため、CPU負荷は増えています。しかし、はてなのサーバ構成では、リバースプロキシのCPUはボトルネックとなっていないため、事実上、ほとんど影響ありません。また、共有メモリへのロック処理も、百単位のプロセスからアクセスされているのですが、問題となっていません。
  • iptablesとかで実装したほうがいいのでは?
    • OSレベルで制御すると、より少ないオーバーヘッドで制御できるのですが、 反面、HTTPヘッダといったアプリケーションレイヤの情報を利用したり、判定結果をロードバランシングのロジックに反映させたり、ということが困難です。そのため、モジュールとして実装することで、OSレベルの制御に比べて、比較できないほどの柔軟性が得られます。
  • 多数のクライアントがいるサブネットから、NAT越えのアクセスがあると、すぐDoSと判定してしまうのでは?
    • これはNATというプロトコルの性質上、ほとんど回避不能な問題です。そのため、DoS判定しても、アクセス拒否をするのではなく、処理の優先度を下げるのみする運用で対処しています。

そもそも、ドキュメントが存在しないのが、最大の問題だと思いますので、週末までには書きあげてしまいたいと思います。