私はスローロリス攻撃を受けていたと確信しています。ウェブサーバーへの最大接続数を制限するようにiptablesルールを設定しましたが、それが本当にSlowloris攻撃であったかどうか、どうすれば攻撃者のIPアドレスを見つけることができるかを知りたいのですが。私は本当に彼のISPにログを渡したいのですが。
ありがとう
Slowloris攻撃は、要求データを可能な限り低速で送信することで機能します。したがって、IPアドレスごとの帯域幅の使用を測定できれば、それが(既知のスローロリス攻撃で帯域幅を測定することによって見つけられる)しきい値を下回っている場合は、攻撃を受けていることがわかります。
攻撃を防ぐために、ウェブサーバーソフトウェアを切り替えることをお勧めします。私はデフォルトの設定で耐性があるチェロキーを使用しています。 nginxが脆弱かどうかはわかりませんが、lighttpdは脆弱です。また、抵抗力のあるウェブサーバーをプロキシとして使用しても、違いが出るかどうか確信が持てません。
詳細は次のとおりです: http://ha.ckers.org/blog/20090617/slowloris-http-dos/
レベル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モジュールをインストールして設定します。例:
その後、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