web-dev-qa-db-ja.com

(D)DoS攻撃でCPUの速度が低下し、サーバーがクラッシュするのはなぜですか?

(D)DoSがフラッディングに使用されるという基本的な考え方は理解できましたが、CPUの過剰使用が原因でサーバーがクラッシュしたり、サーバーの速度が低下したりする原因がよくわかりません。

私の知る限り、サーバーの速度を低下させるために使用されるのはTCP SYNハンドシェイクですが、CPUの使用量はわずかです。

(D)DoSを使用してサーバーをクラッシュさせる方法は?

22
DrDoom

(D)DoSを使用してサーバーをクラッシュさせる方法は?

具体的に質問に答えるために、DDoSのみを使用してサーバーをクラッシュさせるには、アプリケーションレイヤーをターゲットにする必要があります(以下の詳細な説明)。これらのタイプの攻撃は、ネットワークトラフィックで攻撃するのではなく、可能な限り多くのターゲットサーバーリソースを使い切り、ダウンさせようとします。

ただし、これを他のタイプのDDoS攻撃と一緒に状況に当てはめるために、それらの主要なカテゴリとその使用法を調べてみましょう。

この記事 は、DDoSの3つの主要な攻撃タイプをカバーしています。記事から:

DDoS攻撃は、大きく3つのタイプに分類できます。

ボリュームベースの攻撃

UDPフラッド、ICMPフラッド、およびその他のスプーフィングパケットフラッドが含まれます。攻撃の目的は、攻撃されたサイトの帯域幅を飽和させることであり、大きさはビット/秒で測定されます[sic] "(Bps)" [sic]。

プロトコル攻撃

SYNフラッド、断片化パケット攻撃、Ping of Death、Smurf DDoSなどが含まれます。このタイプの攻撃は、実際のサーバーリソース、またはファイアウォールやロードバランサーなどの中間通信機器のリソースを消費し、1秒あたりのパケット数で測定されます。

アプリケーション層攻撃

低速および低速の攻撃、GET/POSTフラッド、Apache、Windows、またはOpenBSDの脆弱性を標的とした攻撃などが含まれます。一見正当で無害なリクエストで構成されているこれらの攻撃の目的は、Webサーバーをクラッシュさせることであり、その規模は1秒あたりのリクエスト数で測定されます。

TL; DR-攻撃者が何を達成したいかに応じて、DDoS攻撃には複数のタイプがあります。攻撃者は、利用可能な帯域幅をすべて使いたい場合もあれば、CPUを圧倒しようとする場合もあります。

DDoSは一般的な「Denial of Service」の単なる分散型であることは注目に値します-これはサーバーのクラッシュをまったく意味せず、サーバーが意図したことを実行するのを防ぐだけですなぜなら、それがすべての帯域幅を使用することによる実際のビジネスの発生を妨げているかどうかにかかわらず。

40
R. Murray

A SYNフラッド はCPUを使い果たすのではなく、メモリを使い果たすのです。

A TCP接続は、「スリーウェイハンドシェイク」と呼ばれるものを介して確立されます。伝統的に、次のように機能します:

  1. クライアントはSYNパケットを送信します。サーバーはパケットを受信し、接続を追跡するためのリソースを割り当てます。
  2. サーバーはSYN/ACKパケットで応答します。
  3. クライアントはACKパケットで応答し、接続を確立します。

SYNフラッドでは、攻撃者はSYN/ACK応答を無視しながら、SYNパケットの連続ストリームを送信します。これにより、途中で開いた多数の接続がサーバーに残り、しばらく接続され続けます。攻撃者が十分に速くパケットを送信できる場合、サーバーは真の要求に応答できなくなります。適切に作成されていないサーバーでは、メモリが不足してクラッシュする可能性さえあります。

SYNフラッディングに対する標準的な防御は SYN cookie

  1. クライアントはSYNパケットを送信します。
  2. サーバーは、一部のTCPパラメータの値を慎重に選択して、SYN/ACKパケットで応答します。これにより、応答するACKを識別できます。
  3. クライアントは、これらのパラメーターに基づいてACKパケットで応答し、接続を確立します。サーバーは、接続を追跡するためにリソースを割り当てます。

接続が完全に確立されるまでリソースの割り当てを遅らせることにより、フラッディング攻撃を実用的にするような非対称な作業はなくなります。

18
Mark

DDoSは通常、サーバーをクラッシュさせません。オーバーロードして、通常の使用では使用できなくなります。これを実現する「最良の」方法は、サーバーの機能とサーバーの構成方法によって異なります。これを行うには、いくつか例を挙げれば、たくさんの方法があります。

  • トラフィックでネットワークインターフェイスに過負荷をかけ、ゴミでいっぱいになり、正当なトラフィックがサーバーに到達しないようにする
  • 多数のセッションを作成してファイアウォールを使い果たすと、多くのセッションがセッション状態を追跡できなくなり、新しいセッションを受け入れなくなります。
  • 生成するのに多くのリソースを必要とするリクエスト(ウェブサーバーでウェブページを開くなど)を迅速に起動します(複雑な計算やデータベースのルックアップなど)。これにより、サーバープロセスの可用性が低下し、CPUの負荷が増加します。
  • たとえば、大量のログエントリを作成したり、データをアップロードしたりして、ディスクをいっぱいにする
10
Teun Vink

通常、DDoS攻撃はいわゆるレイヤー4攻撃です。これらはしばしばSYNフラッドを使用し、利用可能なすべての帯域幅を使い果たすことを目的としています。自宅のコンピューターから無制限の速度で映画をダウンロードできないのと同じように、サーバーは無制限の速度で着信要求を受け入れ、発信応答を送信できません。確かに、サーバーはあなたよりも多くの帯域幅を持っているかもしれませんが、最大のDDoS攻撃は毎秒数百ギガビットを消費しています!

次に、いわゆるレイヤー7攻撃があります。これらは多くの場合、CPUやディスク容量などのリソースを狙った分散されていない攻撃です。レイヤー4の攻撃は万能のものですが、レイヤー7の攻撃は被害者の特定の弱点を狙う必要があります。通常、全文検索のようなリソースを多く消費する(キャッシュされない)ものをターゲットとして使用します。あなたが言うように、SYN-ACKハンドシェイクはリソース集約型ではないため、レベル7の攻撃には適していません。

したがって、結論として:

  • レイヤー4攻撃はSYNパケットを使用する可能性がありますが、CPUの使用ではなく帯域幅を目的としています。
  • レイヤー7攻撃はCPUの使用を目的としている可能性がありますが、SYNパケットは使用しません。
10
Anders