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


23

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

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

回答:


25

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

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

この例では、SlowLorisのようなアプリケーションは接続でサーバーをあふれさせます。SlowLorisが1秒あたり200接続を送信し、Apacheが1秒あたり100接続しか処理できない場合、接続キューはますます大きくなり、マシン上のすべてのメモリを使い果たしますハウル。これは、匿名のLOICの動作に似ています。

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

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


非常に詳細な回答。+1
オールドスクール

6
軽微な修正:nginxはワーカースレッドを使用して多数の接続を実現しません。nginx.org:「nginxのは、ハンドル要求へのスレッドに依存しない代わりに、それははるかにスケーラブルなイベント駆動型(非同期)アーキテクチャを採用しています。」

2
副作用の可能性はありますが、Slowlorisの意図は「マシン上のすべてのメモリを使い果たす」ことではなく、後続の接続が成功しないように最大接続容量を使い果たすことです。
-wulfgarpro

@Day Nginxはワーカースレッドを使用して、非同期操作をサポートします。有用なアプリケーションアーキテクチャの概略図を以下に示します。aosabook.org
テリーバートン

13

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


goloris実装/セットアップが期待どおりに機能することを確認するために必要なツールのように見えます!
アレクシスウィルケ

8

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.