web-dev-qa-db-ja.com

NginXとLighttpdがSlowlorisの影響を受けないのはなぜですか?

私は Slowloris の脆弱性を調査しており、この種の攻撃がどのようにそしてなぜ機能するのかを理解していると思います。

私が理解していないのは、LighttpdとNginXが影響を受けない理由です(上記のリンクと同じ記事によると)。彼らは何がそんなに違うのですか?

23
The Shurrican

Apacheには「最大クライアント」の理論があります。

これは、処理できる同時接続の数です。 I.E. Apacheサーバーの「最大クライアント数」の制限が100で、各リクエストの完了に1秒かかる場合、1秒あたり最大100のリクエストを処理できます。

この例では、SlowLorisのようなアプリケーションはサーバーに接続をフラッディングします。この例では、SlowLorisが毎秒200接続を送信し、Apacheが毎秒100接続しか処理できない場合、接続キューは大きくなり続け、それをもたらすマシンのすべてのメモリを使い果たします。ハルト。これは、AnonymousのLOICの動作に似ています。

NGINXとLighttpd(特に)には最大接続数がありません。代わりにワーカースレッドを使用するため、理論的には、処理できる接続数に制限はありません。
Apache接続を監視すると、アクティブな接続の大部分がクライアントからの「送信」または「受信」データであることがわかります。 NGINX/Lighttpdでは、これらの要求を無視し、システムリソースを消費せずにバックグラウンドで実行できるようにします。進行中の何かとの接続を処理するだけです(応答の解析、バックエンドサーバーからのデータの読み取りなど)。

私は実際に今日の午後に同様の質問に答えたので、そこにある情報もあなたにとって興味深いかもしれません Apacheリクエストのキューイングを減らす

25
Smudge

Nginxは実際にはスローロリス攻撃に対して脆弱です。乏しいリソースは、同時ワーカー接続の最大数です。この数は worker_connections * worker_processes として計算でき、デフォルトのnginx構成では512に相当します。したがって、保護されていないnginxを goloris などのツールで削除するのは非常に簡単です。

13
valyala

valyalaのコメントを回答として受け入れる必要があります。

ほとんどのnginxサーバーはデフォルトの設定を使用しているため、slowloris攻撃に対して脆弱です。私はスローロリスを使用して、私のラップトップのみを使用して私の友人のnginx Webサイトのいくつかを削除しました。通常、5分もかかりませんでした(私の友人が私にそうするように要求しました)。

Valyalaが述べたように、技術的には、nginxはslowlorisに対して脆弱ではありませんが、デフォルトの構成では接続の最大数が制限されるため、接続がその数を超えると、nginxは新しいリクエストをドロップし、サービス拒否を引き起こします。

Nginxをslowlorisから保護する既知の方法には、同じIPからの接続数を制限することと、worker_connections構成を増やすことが含まれます。攻撃は引き続き機能しますが、さらに難しくなります(おそらく5分以上かかりますか?:D)

8
Nguyen Phan Tan