負荷テストとかDOS攻撃
受付中
回答 2
投稿
- 評価
- クリップ 1
- VIEW 3,861

退会済みユーザー
負荷テストをする為、Apache BenchというApache既存のツールを使って自分で作ったサイトに負荷をかけました。 サイトとは言っても、apache起動させてhelloと表示するだけのhtmlファイルなのですが。 自分のパソコン上で行っています。
abはDOS攻撃にもすごく使えそうだと思いました。実際に対策をする為の手法などがありました。以下のURL
http://dev.classmethod.jp/cloud/aws/mod_evasive20/
疑問に思ったのですが、上記の方法でabのDOS攻撃は回避できますが、また別のツールでのDOS攻撃などもあり得ますよね? サービスを運営していくには、これら全てにおいて対策をするのでしょうか?
また、負荷テストをする上で、自分はまだ毎秒何人のユーザから何個のリクエストがくるのかというテストしかしていません。今後サービスを作る上で有用な負荷テストの方法など、アドバイスが欲しいです!宜しくお願い致します。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+6
DoS対策ということで、同じIPアドレスから一定数のアクセスがあった場合にそのIPアドレスからのアクセスを遮断するというものなので ab 以外にも効果があると思います。ただ、DDoS対策には万全ではありません。その場合は下位側(サーバ側)では対策のしようもありません。
まず、需要想定から、最大接続数を算出します。
サーバの同時リクエスト数(フォークするならフォーク数など)と、KeepAliveTimeから、同時セッション数を割り出ししておくなどし、事前に設計します。 同時リクエストの最大数は、あらかじめ1コネクションあたりの応答時間の限界値を決めておき、それを超えるような状況にならない値を負荷試験で事前に把握しておきます。
後は、運用見合いで、セッションがあふれそうなら、随時追加していくという感じでしょうか。
コスト的な問題もあり、サチらせる(サチュレーション=飽和)のをやむなしとする運用もあり、さじ加減は大変難しい所です。。。 AWSで無限にリソースを増やす運用をしてしまうと、大変な請求が来てしまいますし・・・
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
mod_evasive は apache のプロセス毎での制限なので apache の MaxServers 値を意識して設定する必要があります。(=設定値×プロセス数を超えたらブロックします)
他に mod_dosdetector があります。
こちらは共有メモリで全プロセスのアクセスを一括管理しているので、サーバ単体で閾値のセットが可能です。
ただ、どちらも分散配置された複数のウェブサーバ環境では、サーバの増減で閾値変更とapacheの再起動が必要だったので運用が大変でした。
またURL単位で設定はできなかったので、一番重い機能に閾値をあわせる必要がありました。
(=本来なら捌ける機能なのにブロックしてしまうケースあり)
なので自作しました。(ソース公開しています) doshelper
サイト全体でも、URL単位でも閾値を設定できるようにしています。
また、一度設定したらサーバ増減は気にしなくても良いよう、アクセス情報の管理に redis と言うKVSを利用して一元管理させてます。
お暇でしたら、ご覧いただければ幸いです。
(初心者なのでご指摘はほどほどでお願いします)
なおIP単位で防御するので、こちらも DDoS攻撃 には対処できません。あしからずw
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる