web-dev-qa-db-ja.com

安全かつ制御された方法で適切なDDoSテストを実行する方法

インフラストラクチャ全体をクラッシュさせることなくDDoSテストを実行する適切で安全な方法は何ですか?

どのような種類のDDoS攻撃があり、そのようなテストの実行を検討する必要があるものは何ですか?

また、「ボットネット」または同様の(クラウド)サービスをどこでレンタルして、現実的なテストを実行できますか?

13
Bob Ortiz

高いパケットレートで負荷テストを実行している場合、最も安全な方法は、それをネットワークの他の部分から完全に分離することです。たとえば、2つのサーバーをスイッチなしの直接10GBpsリンクで接続し、ベンチマークサーバーで別のLAN接続を使用して1つのサーバーにsshを接続し、テストを実行できます。

別の方法は、AWSのようなパブリッククラウドでサーバーを短期間プロビジョニングし、そこで実行することです。インフラストラクチャに影響を与えるリスクはありません。それを行うのは問題ありません。クラウドインフラストラクチャは弾力性があるため、サーバーをパケットでフラッディングした場合、それはより多くのトラフィックのほんの少しです。もちろん、ソフトウェアがどれだけの負荷をかけているかを実際に確認できるように、大きくて高速なマシン、または専用のマシンをプロビジョニングするのに適している場合。

ソフトウェアに関しては、「Apache Bench」であり、Apacheパッケージの一部である一般的なabを使用できます。 Webサーバー(httpdの静的ファイル)とアプリケーションサーバー(PHP、Ruby、Javaの動的ファイル)の復元力をテストできます。 APIやビデオストリーミングテストなど、特定のプロトコル用の専門的な負荷テストソフトウェアを探すこともできます。それらの多くは、使用しているプロトコル(RESTなど))に応じて異なります。

次に、通常のネットワークスタックのチューニングとアプリケーションのチューニングを進めて、パフォーマンスを向上させます(ulimitのようにクライアント側でも同じです)。結果の実績を保管してください。また、AWStatsなどの無料ソフトウェアまたは市販のSawmillを使用して、ログを適切に分析してみてください。 grepの使用は避けてください;-) Analyticsは実際の結果を表示します。また、abhttpdに適していますが、他のWebサーバーで問題が発生することもあります。 AWSでは、リアルタイムの統計情報も表示するLoad Balancerを使用できます。 Nagios、Zabbixなどを使用してネットワーク統計を記録し、ネットワークスタックのパフォーマンスを確認します(接続の切断、パケットレート、CPU使用率など)。

DDoS攻撃は絶対に採用しないでくださいこれらは犯罪集団であり、自分自身だけでなく、ISP、ビジネス、および顧客にとっても法的に大きなリスクがあるためです。

12
Aria

単一の最良の計画は、これを行わないことです。 DDoSがあなたに対して働くので、それはめったに目的を果たしません。それは当然です。大量の攻撃を作成するのは簡単なので、通常の負荷テスト以上のことを試みる価値はありません。

DDoS緩和策を実装することで、より良いサービスを提供できます。

ただし、テストする必要がある場合は、次のことを試してください。

  • 本番以外のコピーをテストする
  • 稼働前にOAT/UATを実行する際の負荷テストに乗数を組み込む
5
Rory Alsop

基本的に、分散型サービス拒否の仕組みは、企業の帯域幅を大量のトラフィックでいっぱいにすることです。実際の攻撃はソースとスタイルが異なる場合がありますが、同じ目標を共有しています。 DDoS攻撃をテストしても意味がありません。帯域幅がいくらあっても、常に圧倒される可能性があるからです。それはハードウェアの物理的能力に完全に依存します。

だからといって、DDoSを軽減する方法がないということではありません。 DDoSを検出し、トラフィックをスクラブセンターに送信して正当なトラフィックのみを通過させることができるさまざまな企業からサービスを購入できます。ただし、これらのサービスは、機器に流入する帯域幅の量によって制限されます。他のサービス拒否攻撃とは異なり、DDoSに対するソフトウェア修正はありません。

ネットワークをDDoSするサービスを雇おうとしないでください。これらのサービスは、せいぜい法的に疑わしく、最悪の場合は組織犯罪です。ネットワークのテストを主張する場合は、他の回答で完全に合理的な方法でネットワークに取り組むことができます。

2
TheGiantPossum

howを尋ねる以外に、whyを尋ねることを検討する必要があります。

ケース1:サービスがDDoSによってどのように影響を受けるかを確認したい-これはおそらく妥当なことです。これらは極端に行われた負荷テストだと思います。

その場合、インフラストラクチャを含むサービス全体のクローンをテストする必要があります。 DMZのサービスフロントエンドとLANのバックエンドデータベースの間で何が失敗するかわかりません。アプリケーション、途中のファイアウォール、データベースなどの場合があります。あなたが想像できるように、それは簡単な仕事ではなく、結果は興味深いかもしれませんし、そうでないかもしれません。

[〜#〜] d [〜#〜]DoSは必要ありません-複数のDoSで十分です(積み荷)

ケース2:DDoSを再試行する能力を評価したい-その場合、テストは役に立たない。

攻撃がボリュームベースである場合( [〜#〜] slowloris [〜#〜] のようなものとは対照的)、パケットの着信を検出した瞬間は遅すぎます。問題を魔法のように修正するいくつかの蒸気器具を販売する会社がありますが、彼らは機能しません*

この攻撃を上流でブロックする必要があるため、

  • アップストリームトラフィックのブラックホール化については、ISPに問い合わせる必要があります(おそらく、アプリケーションのクラッシュを回避するために便利です)。
  • または、機能するかどうかに関係なく、クラウドベースのソリューションを探します。これらは実際には、唯一のソリューションです(ISPもそのようなソリューションを提供している場合があります)。

*つまり、パケットが「十分に良好」であるか、受け入れられないかを判断するのに十分高速(=サービス処理能力よりもはるかに高速)になるということです。正しく決定する能力の他に、ネットワークパイプがいっぱいになると前提が破られます。

1
WoJ