web-dev-qa-db-ja.com

Slowlorisを検出するにはどうすればよいですか?

私はスローロリス攻撃を受けていたと確信しています。ウェブサーバーへの最大接続数を制限するようにiptablesルールを設定しましたが、それが本当にSlowloris攻撃であったかどうか、どうすれば攻撃者のIPアドレスを見つけることができるかを知りたいのですが。私は本当に彼のISPにログを渡したいのですが。

ありがとう

14
Rob

Slowloris攻撃は、要求データを可能な限り低速で送信することで機能します。したがって、IPアドレスごとの帯域幅の使用を測定できれば、それが(既知のスローロリス攻撃で帯域幅を測定することによって見つけられる)しきい値を下回っている場合は、攻撃を受けていることがわかります。

攻撃を防ぐために、ウェブサーバーソフトウェアを切り替えることをお勧めします。私はデフォルトの設定で耐性があるチェロキーを使用しています。 nginxが脆弱かどうかはわかりませんが、lighttpdは脆弱です。また、抵抗力のあるウェブサーバーをプロキシとして使用しても、違いが出るかどうか確信が持てません。

詳細は次のとおりです: http://ha.ckers.org/blog/20090617/slowloris-http-dos/

5
dan_waterworth

レベル1:シンプルなスローロリスDOS


Slowloris攻撃者のIPアドレスを見つけるには、次のコマンドラインを使用します。

netstat -ntu -4 -6 |  awk '/^tcp/{ print $5 }' | sed -r 's/:[0-9]+$//' |  sort | uniq -c | sort -n

これにより、接続されている各IPのアクティブな接続の数がわかります

単純なDOS攻撃、1つまたはいくつかのIPを持つ子供、50〜100接続(またはそれ以上)を持つ子供が、おそらくスローロリス攻撃者である可能性があります。

これは、攻撃中にサーバーに接続している場合、それらを「リアルタイム」で検出して削除するためです(iptablesまたは優先hlfwを使用)。

Apacheログに処理時間(%Dまたは%T引数)を追加すると、ログを分析してスローロリス攻撃の「事後分析」を検出するのに役立つ場合があります。ログにこの情報がない場合、興味深いものを見つけることができません。 。ログの設定については http://httpd.Apache.org/docs/current/mod/mod_log_config.html を参照してください。

レベル2:本当に大きなスローロリスDDOS


netstat(refreshにwatch netstatを使用)は、一部のIPが常に接続されていることを確認するのに役立ちます

スローロリスと戦うには、Apacheにreqtimeoutモジュールをインストールして設定します。例:

http://Pastebin.com/3BNNwfyb

その後、access_logに表示される408は99.999%であり、slowloris攻撃者のIPであることが確実です。

Reqtimeout Apacheモジュールを使用すると、まともな専用サーバーで数千のIPと毎秒数千のパケットに簡単に対抗できます。

Iptablesは、次のようなものでも少し役立ちます。

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j DROP
10
neofutur