スローロリスはどうやって検出できるのでしょうか?

スローロリスはどうやって検出できるのでしょうか?

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

ありがとう

答え1

Slowloris 攻撃は、リクエスト データをできるだけ低速で送信することで機能します。したがって、IP アドレスごとの帯域幅の使用量を測定でき、それが特定のしきい値 (既知の slowloris 攻撃の帯域幅を測定することで判明) を下回っている場合は、攻撃を受けていることがわかります。

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

さらに詳しい情報は次のとおりです:http://ha.ckers.org/blog/20090617/slowloris-http-dos/

答え2

レベル 1: シンプルな slowloris 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 の接続 (またはそれ以上) を持つ子供は、おそらく排除できる slowloris 攻撃者です。

これは、攻撃中にサーバーに接続している場合に、攻撃を「リアルタイム」で検出してドロップする (iptables または好みの hlfw を使用) ためです。

Apache ログに処理時間 (%D または %T 引数) を追加すると、ログを分析することで slowloris 攻撃を「事後」で検出するのに役立つ可能性があります。ログにこの情報が含まれていない場合、興味深いものを見つけることはできません。Apache の現在のバージョンでは、mod_log_config はサポートされていません。ログ設定用。

レベル 2: 本物のビッグ スローロリス DDOS


netstat(更新にはwatch netstatを使用)を使用すると、一部のIPが常に接続されていることがわかります。

slowloris と戦うには、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

関連情報