1

localhost で実行されている Apache サーバーに対して低速の http 読み取り攻撃をシミュレートしようとしています。しかし、サーバーは文句を言わず、クライアントが読み取るのを永遠に待つだけのようです。

これが私がすることです:

  1. http サーバーから巨大なファイル (たとえば ~1MB) をリクエストします
  2. 連続する読み取りの前に 100 秒待機するループ内のサーバーからの応答を読み取ります

ファイルが巨大で、クライアントの受信バッファーが小さいため、サーバーはファイルを複数のチャンクに分けて送信する必要があります。しかし、クライアント側では、連続する読み取りの間に 100 秒待機します。その結果、サーバーはしばしばクライアントをポーリングし、クライアントがまだ受信バッファを読み取っていないため、クライアントの受信ウィンドウ サイズがゼロであることを検出します。

しかし、サーバーはわざわざ接続を切断せず、静かにクライアントをポーリングし続けているようです。サーバーは、クライアント ウィンドウ サイズが > 0 の場合にデータを送信し、クライアントを待機するために再び戻ります。

クライアントがデータを読み取るのをしばらく待った後、サーバー側からの接続を切断するために設定できる Apache 構成パラメーターがあるかどうかを知りたいです。

4

2 に答える 2

1

おそらく、これはあなたにとってより便利でしょう (より簡単で時間を節約できます): http://ha.ckers.org/slowloris/これは、部分的な HTTP 要求を送信する Perl スクリプトであり、Apache サーバーは接続を開いたままにします (現在は使用できません)。 Linux 環境で実行すると (Linux はハードウェア機能を超えてスレッドを制限しません)、開いているすべてのソケットを効果的にブロックし、他のユーザーがサーバーにアクセスするのを防ぐことができます。サーバーをリクエストで「フラッディング」しないため、最小限の帯域幅を使用します。ソケットをゆっくりと人質に取るだけです。ファイルはこちらからダウンロードできます: http://ha.ckers.org/slowloris/slowloris.pl

このような攻撃を防ぐ (まあ、軽減する) には、こちらを参照してください: https://serverfault.com/questions/32361/how-to-best-defend-against-a-slowloris-dos-attack-against-an-apache-ウェブサーバー

ロード バランサまたはラウンド ロビン セットアップを使用することもできます。

于 2012-02-24T06:51:31.223 に答える
0

あなたが説明している低速読み取り攻撃をテストするには、slowhttptestを試してください。(ヘッダーの遅い送信をテストするためにも使用できます。)

于 2015-01-09T08:59:19.883 に答える