8

セキュリティ/パフォーマンスの観点から、php で共有サーバーをセットアップする際に推奨するものは何ですか?

  • Apache mod_php (PHP6 には含まれないため、safe_mode 以外はどのように保護しますか?)
  • アパッチ CGI + suexec
  • Lighttpd とユーザーごとの FastCGI の生成

LE: 私は自分で作成しようとしているので、既に作成されたコントロール パネルを使用することに興味がないので、これを自分でセットアップする最良の方法を知りたいです。私は Lighttpd を使用して、ホストされているすべてのユーザーに対して fastcgi を生成し、fcgi プロセスを彼の資格情報で実行することを考えていました (lighttpd wiki にこれに関するチュートリアルがあります)。これはある程度安全ですが、これは実行可能な解決策ではないほどパフォーマンス (多くのユーザー/すべての fcgi に必要なメモリ) に影響しますか?

4

4 に答える 4

11

個人的には、Lighttpdは問題ありませんが、軽量のWebサーバー+ FastCGIソリューションを使用することになった場合は、Nginx+FastCGIを使用します。私はベンチマークを実行し、すべてのコードを読みました。Nginxは、負荷がかかった状態で1桁高速で安定しています。これは、非常に優れています。

しかし、それはあなたが尋ねたものではありません。基本的に、リストする3つのオプションには、セキュリティ/拡張性と速度のトレードオフの範囲があり、どこに行きたいかを決める必要があります。信頼できないユーザーがgod-knows-what-knowsをインストールしている共有ホスティングプロバイダーの場合、セキュリティに傾倒します。これを信頼できるユーザー間で共有すると、パフォーマンスに傾倒する可能性があります。これが私の考えです:

CGI + suexec:これは、共有ホスティング環境のユーザー/サイトの数に関して、これまでで最も安全で、最も効率的でスケーラブルです。プロセスが生成され、メモリは要求が着信したときにのみ使用されます。もちろん、CGIの生成により、個々のスクリプトの実行時間が最も遅くなります。どれくらい遅いですか?ベンチマークを行う必要がありますが、一般的に、実行時間の長いアプリ(つまり、ライブラリをロードしてリクエストごとに初期化するだけで0.25〜0.5秒かかるWordPressのようなもの)を実行している場合、CGIの生成ペナルティはかなり見られ始めますコンテキストでは無視できます。

FastCGI:ここでの問題(WebサーバーがApache、Lighttpd、Nginxのいずれであるかは関係ありません)は、各プロセスがPHPインタープリターのサイズに等しいメモリを消費するため、各ユーザーに実行を許可するFCGI子プロセスの数を把握することです。 (Linuxでは、もちろんすべてが配線されているわけではありませんが、私は逸脱します)。また、mod_phpとは異なり、これらのプロセスはユーザー間で共有されないため、ユーザーごとに制限する必要があります。たとえば、Dreamhostは、顧客に対してこれを3に制限しています。現在、1秒間に2〜5ページビューを超えるバーストを取得するWebサイトを実行している顧客にとって、これらの要求が積み重なってサイトがハングするため、これは実際にはかなり悪いことです。今、専用のアプリを実行しているときは、軽量のWebサーバーを備えたFastCGIが好きですサーバー/クラスター、アプリに数百のFCGIの子を与えることができる場合(もちろん、すべてWebサーバーの特権を使用します。Apache/ prefork + mod_php)。ただし、ユーザーごとにFCGIの子を割り当て/キャップする必要がある共有ホスティングには意味がないと思います。

Apache + mod_php:すべてがwebserver privで実行されているため、安全性は低くなりますが、ライブPHPプロセスのプールは共有されるため、パフォーマンスの面で最高です。開発者の観点からは、php_safeモードを許容できません。また、sysadminの観点からは、これは実際にはセキュリティの幻想にすぎません(愚かなユーザーを軽減しますが、実際の攻撃からは保護しません)。他のオプションにはsafe_modeを含める必要があります。

Dreamhostは一種のハイブリッドであり、デフォルトでApache CGI + suexecを実行しますが、必要に応じて、上限とメモリ使用量の独自の監視を条件として、洗練されたより多くのユーザーの(わずかな)割合にFCGIを選択させます。 。これにより、デフォルトですべての人がFCGIを有効にするのに比べて、大量のメモリリソースを節約できます。

標準の商用共有ホスティングについて話している場合のもう1つの問題は、Apacheがフル機能であり、ほぼすべてのモジュール(mod_securityなどが必要なものを含む)があり、すべての.htaccess構成が機能するため、ユーザーはそれを気に入るはずです。など-DrupalやWordPressなどをインストールしようとすると、他の何かでサポートの頭痛の種に遭遇します(内部ユーザーと話している場合は問題ははるかに少なくなります)。

個人的には、最高のセキュリティと拡張性を実現するために、CGI+suexecを使い始めるのを簡単にすることをお勧めします。ユーザーがFCGIまたはmod_phpを望んでいて、提案やコミュニケーションのための優れたチャネルがある場合、ユーザーはそれを求めますが、どちらもパフォーマンスがわずかに向上するだけで、はるかに大きな頭痛の種になるので、私の提案です。最初はどちらも実行しませんが、要求があれば応答します。

標準のApache+CGI+suexecの代わりにLighttpd+FCGIのような「面白い」何かをしたいという願望に共感しますが、私は本当にそれをお勧めできません。

複数のサーバーを実行している場合は、一部のサーバーにCGIを配置し、他のサーバーのパワーユーザーのために別のサーバーを配置することになります。そして、phpBBの古いお尻バージョンのようなもののためにすべてのwwwdirsをcrongrepするようにしてください!

于 2008-10-08T11:11:16.067 に答える
2

スホシンがおすすめ

于 2008-10-07T12:08:34.160 に答える
1

PHP + FastCGI とセキュリティについては、このブログ投稿を確認してください。

共有ホスティング サーバーを保護する際の課題は、外部と内部の両方からの攻撃から Web サイトを保護する方法です。PHP には役立つ機能が組み込まれていますが、最終的には、問題に対処するのに適切な場所ではありません。

私はすでに多くの解決策について書いてきましたが、私が何度も検討するように求められたオプションの 1 つは、PHP + FastCGI を使用することです。FastCGI プロセスはページ ビュー間で存続するため、FastCGI を使用すると Apache の suexec または mod_suphp のパフォーマンスの問題が解決されると考えられています。

しかし、パフォーマンスを確認する前に、最初の質問は、PHP と FastCGI を 1 つの Web サーバー上で異なるユーザーとして正確に実行するにはどうすればよいかということです。

于 2008-10-07T14:58:54.643 に答える
0

私はInterWorxを約 1 年間使用しており、非常に感銘を受けています。セキュリティのためにスクリプトをchrootするLAMPサーバーを維持します。

Ensimも使用しましたが、使いやすく、高速で、機能が多くありません。さらに、それははるかに多くの費用がかかります。

于 2008-10-06T20:56:07.667 に答える