PHPを使用して共有サーバーをセットアップする場合の推奨事項[非公開]

StackOverflow https://stackoverflow.com/questions/176013

質問

セキュリティ/パフォーマンスの観点から、phpを使用して共有サーバーをセットアップする場合の推奨事項は何ですか?

  • Apache mod_php(PHP6にはないsafe_mode以外のセキュリティはどのように設定しますか)
  • Apache CGI + suexec
  • LighttpdおよびユーザーごとのFastCGIの生成

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

役に立ちましたか?

解決

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

しかし、それはあなたが尋ねたものではありません。本質的に、リストした3つのオプションには、セキュリティ/スケーラビリティと速度のトレードオフのスペクトルがあり、どこに行きたいかを決める必要があるだけです。信頼されていないユーザーがgod-knows-what PHPアプリをインストールする共有ホスティングプロバイダーである場合、これをより信頼できるユーザーと共有すると、パフォーマンスに傾く可能性があります。私の考えは次のとおりです。

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

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

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

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

標準の商用共有ホスティングについて話している場合の別の問題は、Apacheがフル機能を備えており、あらゆるもの(必要なmod_securityなどを含む)のモジュールを備えていることです。 configsなどが動作します。DrupalやWordPressなどをインストールしようとすると、サポートの頭痛に悩まされます(社内ユーザーと話をする場合は、問題はかなり少なくなります)。

個人的には、最高のセキュリティと拡張性を実現するために、CGI + suexecを使い始めることをシンプルにすることをお勧めします。ユーザーがFCGIまたはmod_phpを望んでおり、提案/コミュニケーションのための優れたチャネルを開いている場合、ユーザーはそれを要求しますが、これらのいずれかは非常に重要です。

他のヒント

スホシン

をお勧めします

PHP + FastCGIとセキュリティに関しては、このブログ投稿

  

共有の保護に関する課題   ホスティングサーバーは、セキュリティで保護する方法です   両方からの攻撃からのウェブサイト   外側と内側から。 PHPには   組み込みの機能が役立ちますが、   最終的にそれは間違った場所です   問題に対処します。

     

私はすでにいくつかのことについて書いています   動作するソリューションですが、1つのオプション   私は何度も何度も尋ねられました   見ては、PHP + FastCGIを使用しています。の   信念は、FastCGIを使用すると   のパフォーマンスの問題を克服する   Apacheのsuexecまたはmod_suphp   FastCGIプロセスはページ間で持続します   ビュー。

     

しかし、パフォーマンスを見る前に、   最初の質問は:どのように正確に   PHPとFastCGIを次のように実行します   1つのWebサーバー上の異なるユーザー   そもそも

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

Ensim も使用しましたが、友好的で高速であることがわかりませんでした。 tは多くの機能を備えています。さらに、それはもっと高価です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top