アカウント名:
パスワード:
> 今回の問題は、クライアントごとにプロセスをforkする、というunixの流儀が問題なので、
たぶん、違うと思います。Apache MPM って御存じないですか? worker MPM とか、prefork MPM とか。
http://httpd.apache.org/docs/2.2/ja/mod/worker.html [apache.org] http://httpd.apache.org/docs/2.2/ja/mod/repfork.html [apache.org]
「クラ
元々、apache は prefork しかなかったはず。記憶に間違いが無ければ、Apache 2.0 から、MPM を選択できるようになったが、*nix 系では、prefork がデフォルトになる。configure 時に --with-mpm={beos|event|worker|prefork|mpmt_os2} が選べる(実際に自分の OS で使えるかどうかは不明)ので、試しに worker で作って slowloris.pl で遊んでみたが、少なくとも prefork よりは強そうだった。
ただ、MPMの説明 [apache.org]にもあるように、安定性や古いソフトウェアとの互換性を 必要とするサイトでは prefork でないとまずい場合もあるかもしれない。
同じようにこの攻撃で陥落するという squid は大昔から prefork ではないですよ。
squid bug 2694 [squid-cache.org]へのコメントを読むと、Squid 開発グループの見解は、「脆弱ではない」のようです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
開いた括弧は必ず閉じる -- あるプログラマー
防御方法は? (スコア:3, 参考になる)
http://synflood.at/tmp/anti-slowloris.diff
負荷に応じてタイムアウト時間を自動調整、みたいな感じでしょうか。IISとかはどういう防御しているんですかね?
Re: (スコア:3, 参考になる)
今回の問題は、クライアントごとにプロセスをforkする、というunixの流儀が問題なので、
Windowsの流儀、すなわち、1プロセスで多数のクライアントの相手をし、I/O完了ポートとワーカースレッドのプーリングのしくみを使ってスレッド数をCPUコア数に沿った数に抑えるという流儀では、
今回のような悪意あるクライアントによって消費させられるリソースは、問題になりにくいのだと思う。
Re: (スコア:1)
> 今回の問題は、クライアントごとにプロセスをforkする、というunixの流儀が問題なので、
たぶん、違うと思います。
Apache MPM って御存じないですか? worker MPM とか、prefork MPM とか。
http://httpd.apache.org/docs/2.2/ja/mod/worker.html [apache.org]
http://httpd.apache.org/docs/2.2/ja/mod/repfork.html [apache.org]
「クラ
Re:防御方法は? (スコア:1)
元々、apache は prefork しかなかったはず。記憶に間違いが無ければ、Apache 2.0 から、MPM を選択できるようになったが、*nix 系では、prefork がデフォルトになる。configure 時に --with-mpm={beos|event|worker|prefork|mpmt_os2} が選べる(実際に自分の OS で使えるかどうかは不明)ので、試しに worker で作って slowloris.pl で遊んでみたが、少なくとも prefork よりは強そうだった。
ただ、MPMの説明 [apache.org]にもあるように、安定性や古いソフトウェアとの互換性を 必要とするサイトでは prefork でないとまずい場合もあるかもしれない。
Re:防御方法は? (スコア:1, 興味深い)
同じようにこの攻撃で陥落するという squid は大昔から prefork ではないですよ。
Re:防御方法は? (スコア:1)
squid bug 2694 [squid-cache.org]へのコメントを読むと、Squid 開発グループの見解は、「脆弱ではない」のようです。