質問: 負荷テストをする為、Apache BenchというApache既存のツールを使って自分で作ったサイトに負荷をかけました。 サイトとは言っても、apache起動させてhelloと表示するだけのhtmlファイルなのですが。 自分のパソコン上で行っています。 abはDOS攻撃にもすごく使えそうだと思いました。実際に対策をする為の手法などがありました。以下のURL http://dev.classmethod.jp/cloud/aws/mod_evasive20/ 疑問に思ったのですが、上記の方法でabのDOS攻撃は回避できますが、また別のツールでのDOS攻撃などもあり得ますよね? サービスを運営していくには、これら全てにおいて対策をするのでしょうか? また、負荷テストをする上で、自分はまだ毎秒何人のユーザから何個のリクエストがくるのかというテストしかしていません。今後サービスを作る上で有用な負荷テストの方法など、アドバイスが欲しいです!宜しくお願い致します。
回答: mod_evasive は apache のプロセス毎での制限なので apache の MaxServers 値を意識して設定する必要があります。(=設定値×プロセス数を超えたらブロックします) 他に mod_dosdetector があります。 こちらは共有メモリで全プロセスのアクセスを一括管理しているので、サーバ単体で閾値のセットが可能です。 ただ、どちらも分散配置された複数のウェブサーバ環境では、サーバの増減で閾値変更とapacheの再起動が必要だったので運用が大変でした。 またURL単位で設定はできなかったので、一番重い機能に閾値をあわせる必要がありました。 (=本来なら捌ける機能なのにブロックしてしまうケースあり) なので自作しました。(ソース公開しています) doshelper サイト全体でも、URL単位でも閾値を設定できるようにしています。 また、一度設定したらサーバ増減は気にしなくても良いよう、アクセス情報の管理に redis と言うKVSを利用して一元管理させてます。 お暇でしたら、ご覧いただければ幸いです。 (初心者なのでご指摘はほどほどでお願いします) なおIP単位で防御するので、こちらも DDoS攻撃 には対処できません。あしからずw