HTTP スロー攻撃 (Slow HTTP Attack)

1. 低速接続攻撃とは何ですか

低速 HTTP サービス拒否攻撃は、特に Web を対象としたアプリケーション層のサービス拒否攻撃です。攻撃者はネットワーク上のボットを操作し、サーバーの帯域幅がなくなるまで大量の HTTP リクエストでターゲットの Web サーバーを攻撃します。完全に利用され、サービス拒否が発生します。(ターゲットサーバーが麻痺している)

2. 低速接続攻撃の種類

低速接続攻撃には主に次の種類があります。

1.遅いヘディングアタック

攻撃者はサーバーへの HTTP リクエストを開始し、HTTP ヘッダーを継続的に送信します。サーバーはリクエストを処理する前にすべての HTTP ヘッダーを受信する必要があります。HTTP ヘッダーは攻撃者によって絶えず送信されるため、サーバーはそれらの受信を完了することができません。サーバーの Web コンテナはすぐに攻撃者による TCP 接続でいっぱいになり、新しいリクエストを受信できなくなり、最終的にはサービスの提供を拒否します。 。

2.スローボディアタック

攻撃者はターゲット サーバーに POST リクエストを送信します。サーバーは大量のデータを受信すると考えて接続を維持しますが、攻撃者は 1 バイトあたり 10 秒から 100 秒の速度でデータを送信します。同様の接続が継続的に増加した後、サーバーはリソースが大量に消費され、最終的にはサービス拒否の限界に達します。

3.スローリードアタック

攻撃者は、サーバーとの接続を確立した後、サーバーに完全なリクエストを送信し、接続を維持した後、非常に低速で応答を読み取るか、サーバーにクライアントがビジーであると思わせ、接続を消費し、サーバーのメモリリソース。

解決

サーバーごとに、低速 http サービス拒否攻撃に対する防御方法が異なります。低速 http サービス拒否攻撃を防ぐには、次の手段を使用することをお勧めします。

ライトTPD

lighttpd.conf設定に設定を追加

server.modules= ( "mod_evasive", //开启防御模块 
) 
evasive.max-conns-per-ip = 30//限制单独IP能连接到服务器的并发连接数量 
server.max-keep-alive-idle = 60 //一个常连接的最大持续时间(秒)。同样对于非并发可以设置小些根据实际情况越小越好
server.max-read-idle = 60// 一个等待的,并非常连接的read调用超时并关闭连接前的最大时间(秒)根据实际情况越小越好 

ウェブスフィア

1. HTTP データのサイズを制限するには、WebSphere Application Server で次の設定を行います。

単一の HTTP ヘッダーのデフォルトの最大サイズは 32768 バイトです。別の値に設定することもできます。

HTTP ヘッダーのデフォルトの最大数は 50 です。別の制限値に設定できます。

もう 1 つの一般的な DOS 攻撃は、長時間実行される GET リクエストを引き起こすリクエストを送信することです。WebSphere Application Server プラグインの ServerIOTimeoutRetry プロパティは、リクエストの再試行回数を制限します。これにより、このような長時間実行リクエストの影響が軽減されます。

Set は、リクエスト本文の最大サイズを制限します。

2. キープアライブパラメータを設定する

ibm http サーバーのインストール・ディレクトリーを開き、フォルダー conf を開き、ファイル httpd.conf を開き、KeepAlive 値を見つけて、ON を OFF に変更します。デフォルトは ON です。

この値は、クライアントと HTTP SERVER 間の接続を維持するかどうかを示します。ON に設定すると、リクエスト数が MaxKeepAliveRequests 設定値に達するとリクエストがキューに入れられ、応答が遅くなります。

詳細については、参照リンクを参照してください: www.ibm.com/developerwo…

ウェブロジック

1. 構成管理インターフェイスの [プロトコル] -> [一般情報] で、完了メッセージのタイムアウトを 2002 未満に設定します。構成管理インターフェイスの [プロトコル] -> [HTTP] で、POST タイムアウト、期間、および最大 POST サイズを 2002 未満に設定します。安全な値の範囲。

docs.oracle.com/cd/E12890_0…

Nginx

1. $Request_Method を調整することで、http パッケージの動作制限を受け入れるようにサーバーを設定します; 2. ビジネスのビジネスを保証することを前提として、client_max_body_size、client_body_size、client_header_buffer_size、lar GE_Client_Header_BuffersClient_body_timeout、Client_Header_timeout を調整して、増加させることができます適切なセッションまたは同じ IP アドレスの場合、HttpLimitReqModule および HttpLimitZoneModule パラメータを使用して、リクエストの量または同時接続の数を制限できます; 4. CPU と負荷のサイズに応じて、worker_processes と worker_processes の値を設定し、 work_connections の場合、式は max_clients = work_processes * worker_connections です。

アパッチ

mod_reqtimeout と mod_qos を使用して相互に連携して保護することをお勧めします。1. mod_reqtimeout は、各接続でリクエストが送信される速度を制御するために使用されます。構成例:

请求头部分,设置超时时间初始为10秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。可以防护slowloris型的慢速攻击。 
RequestReadTimeout header=10-40,minrate=500 

リクエストボディ部分のタイムアウト時間を最初は10秒に設定し、クライアントから送信されたデータを受信した後は、500バイトのデータを受信するごとにタイムアウト時間を1秒ずつ延長しますが、最長タイムアウトは40秒を超えません。低速メッセージ本文攻撃から保護できます。RequestReadTimeout body=10-40、minrate=500 HTTPS サイトの場合、初期タイムアウト期間を増やす必要があることに注意してください (たとえば、20 秒に調整します)。

例:

LoadModule reqtimeout_module modules/mod_reqtimeout.so
<IfModule reqtimeout_module>RequestReadTimeout header=10-40,minrate=500 body=10-40,minrate=500
</IfModule> 

2. mod_qos は、同時接続数を制御するために使用されます。構成例:

#当服务器并发连接数超过600时,关闭keepalive
QS_SrvMaxConnClose 600 

ソース IP ごとの同時接続の最大数を 50 に制限する

QS_SrvMaxConnPerIP 50
这两个数值可以根据服务器的性能调整。 

qos_module 設定リファレンスの詳細: mod-qos.sourceforge.net/dos.html

例:

LoadModule qos_module modules/mod_qos.so
<IfModule qos_module>
QS_SrvMaxConnClose 600
QS_SrvMaxConnPerIP 50
</IfModule> 

IHSサーバー

まず最新のパッチをインストールしてから、mod_reqtimeout モジュールを有効にして、それを構成ファイルに追加してください: LoadModule reqtimeout_module modules/mod_reqtimeout.so mod_reqtimeout モジュールの構成を追加します:

<IfModule mod_reqtimeout.c>
RequestReadTimeout header=10-40,MinRate=500 body=10-40,MinRate=500
</IfModule> 

HTTPS サイトの場合、header=20-40、MinRate=500 が推奨されます。参照: www-01.ibm.com/support/doc…

F5 ロード バランシングの修復提案

F5 ロード バランシング デバイスには対応する保護モジュールがありますが、それを購入しない場合は、添付ファイルの詳細な構成プロセスを参照してください。F5 の低速攻撃保護設定については、次のリンクを参照してください: support.f5.com/kb/en-us/so… devcentral.f5.com/articles/mi…

IISサーバー

IIS は、関連する Web サイトの Web.config を次のように構成できます。 1. WebLimits 設定:

<configuration><system.applicationHost><webLimits connectionTimeout="00:00:30"headerWaitTimeout="00:00:10"dynamicIdleThreshold="150"minBytesPerSecond="512"/></system.applicationHost>
</configuration> 

次のリンクを参照してください: docs.microsoft.com/en-us/iis/c… 2. headerLimits 設定:

<configuration>
 <system.webServer><security> <requestFiltering><requestLimits> <headerLimits> <add header="Content-type" sizeLimit="100" /> </headerLimits></requestLimits> </requestFiltering></security>
 </system.webServer>
</configuration> 

次のリンクを参照してください: docs.microsoft.com/enus/iis/co…

おすすめ

転載: blog.csdn.net/qq_44005305/article/details/128631206