2

関連する質問を読みました:

TIME_WAITサーバー側の多くのコストはいくらですか?

しかし、私はまだ迷っています。2 つのアプリケーション サーバーと 1 つのデータベース サーバーがあります (すべてクラウド サービスによって提供される仮想マシンです)。今日、データベース サーバーは何の警告もなしに完全にシャットダウンしました。クラウド サービス ベンダーにオンラインで復旧してもらうことができ、アプリケーションを再び動作状態に復元しました。

この理由について質問したところ、クラウド サービス ベンダーは次のような一連の TCP 統計情報 (約 1500 行) を返しました (プライバシーのためにマスクされています)。

ipv4     2 tcp      6 98 TIME_WAIT src=x.x.x.x dst=y.y.y.y sport=z dport=5432 packets=p bytes=b src=y.y.y.y dst=x.x.x.x sport=5432 dport=z packets=p bytes=b [ASSURED] mark=0 secmark=0 use=2

ベンダーは、多数の接続によって証明されるように、サーバーに問題があり、着信接続が多すぎるためにシャットダウンしたと主張していますTIME_WAIT

ただし、統計が収集された時間枠の表示はありませんでした。それらが長い時間範囲で収集された場合、統計を使用して、そのような接続が多数あったと主張することはできません。

このような主張は、特定の時点(時間範囲ではなく) で行われたスナップショット統計に対してのみ有効であり、その時点で多数の接続がそのTIME_WAIT状態にあることが明らかです。私は正しいですか?

TIME_WAITスナップショットの時点で実際に多数の接続があった可能性を認めたとしても、これはサーバーに損害を与えたり、サーバーを停止させたりしますか? これがサービス拒否攻撃の仕組みですか?

4

1 に答える 1

2

各 TIME_WAIT 状態は、追跡され、単純かつ単純でなければなりません。パケットが TIME_WAIT 接続で戻ってくると、この状態の維持 (考えてみてください: 各接続で使用される物理メモリ) により、TCP スタックは着信パケットを閉じられた接続に関連付けることができます。SYN でない場合、パケットは無視されます。SYN の場合、一部の (ほとんどの?) 実装では TIME_WAIT 暗殺が許可されます。

簡単に言えば、TIME_WAITが数分続くため、同時に閉じられた接続が多すぎるとシステムが過負荷になる可能性があります。

そのような攻撃の可能性に関しては、確かに可能です。ただし、通常の DOS ではなく、分散型サービス拒否 (DDOS) でなければならない可能性があります。これは、接続を TIME_WAIT に入れるには、接続を完全に開いて (SYN + SYN/ACK + ACK)、次に閉じる (FIN + FIN/ACK + ACK) 必要があるためです。そのような方法でサーバーをあふれさせることができます。しかし、TCP 接続を開くのに数ミリ秒かかり、TIME_WAIT が通常数分間続くことを考えると、潜在的な問題があります。

ただし、これの多くは、ベンダーの TCP 実装にまでさかのぼります。1500 は豊富な TIME_WAIT 状態のようには聞こえず、これは無関係のようです。同時接続が多すぎるためにサーバーが接続をドロップしている場合は、TIME_WAIT ではなく、その時点でアクティブな負荷を把握する必要があります。最新の TCP 実装 (サーバー側) は、SYN/ACK が表示されるまで TCP 接続を作成しません (DOS を防ぐために TCP SYN Cookie を使用します)。というわけで、ここで不足している情報があります。

編集:

これについてもっと考えてみると、TCP レベルの問題がないからといって、ベンダーが責任を転嫁しているとは限りません。1500 の TCP 接続は非常に少ないですが、この特定のデータベースではおそらくそうではありません。一部の RDMS は、(TCP スタックがサポートできる数に比べて) 比較的少数の接続しか許可しません。この値は完全に RDMS に依存し、通常は構成できます。

たとえば、MySQL サーバーへの同時接続の許容数を超えたことがあり、MySQL への接続を適切に閉じていなかったため、サーバーはそれ以上のデータの処理を拒否しました (これは粉砕停止と呼ぶことができます)。あなたのデータベースは、あなたが投げかけている以上のものを十分にサポートできるかもしれませんが、接続を非効率的に使用しています.

于 2014-03-12T13:02:00.567 に答える