web-dev-qa-db-ja.com

安全な共有ホスティングのセットアップ(Apache、PHP、MySQL)

そこで、Apache、PHP、MySQLを使用して共有ホスティングを設定しています。最大の疑問符は、PHPをどのように使用するかです。これは、PHPを安全に構成する方法が無数にあるためです。

計画は次のとおりです。

  • Chroot for MySQL(chrootの組み込みサポート)
  • Apache用のChroot(mod_security)
  • PHPスクリプトを自分のユーザーとして実行する各ユーザー(以下を参照)
  • Open_basedirを設定します
  • すべての「邪悪な」php関数(allow_url_fopen、system、execなど)を無効にします

suexecsuphpを見ましたが、非常に遅いようです。

http://blog.stuartherbert.com/php/2007/12/18/using-suexec-to-secure-a-shared-server/http://blog.stuartherbert .com/php/2008/01/18/using-suphp-to-secure-a-shared-server /

だから私はもう少し調べて、他のいくつかの解決策を見つけました:

  • Apache2-mpm-itk + mod_php(?)
  • mod_fcgid + php-fpm
  • mod_fastcgi + php-fpm

Mod_fastcgi + php-fpmを使用して簡単なセットアップを試しましたが、動作しているようで、正しいユーザーとして実行されているなどですが、ディレクトリの移動に対する保護はまだopen_basedir(?)です。

そのための1つの解決策は、php-fpmのchrootオプションを使用することですが、それは次のような他の多くの問題を引き起こします。

  • ドメイン名リゾルバが機能しない
  • メールの送信が機能しない

チップ?

3
Apaz

Fpmプロジェクトは、共有ホスティングソリューションの展開を非常に簡単に可能にし、ユーザーをchrootすることさえ可能にする素晴らしい仕事をしました(ただし、Apacheには、シンボリックリンクによって解決できる問題がいくつかあります。インターネット上には、それに関するチュートリアルがたくさんあります)。

php5-fpmを含むソリューションにはmod_fastcgiが必要であり、ホスティング業者がユーザーごとの構成(例としてmemory_limit、max_execution_time ...)を行えるようにします。私が確認したところ、かなり安定しています。 ;)
メールの解決と使用に関する問題については、chrootされた環境にライブラリを追加し、必要な実行可能ファイル(sendmailなど)を追加することで簡単に解決できます。

私が見つけて解決している問題は、php-fpmによってphpスクリプトに渡される間違った変数に関するものです(chrootした後、php-fpmは外部ディレクトリを削除し、スクリプトのみに渡す必要がありますchroot内のもの...しかし、そうではなく、mod_fastcgiとphp-fpmの間のプロキシのような何か他のものがそれを処理する必要があります)。
私が書いている時点のphp-fpmは変数を修正できないため、php-fpmとApacheの間で変数を自動的に修正するfcgiプロキシを使用して問題を解決することができました。

1

この質問に答えて以来、CloudLinuxは共有ホスティングスペースで実際に主流のLinuxディストリビューションになりました。いくつかの変更はありますが、アップストリームとしてRHEL/CentOSに基づいています。詳細は次のとおりです。

  • Chrootを処理するためにCageFSと呼ばれるものを提供します。
  • PHPを実行するために、mod_lsapiと呼ばれるものを提供します。これは、PHPを実行する方法であり、これまでと非常によく似た方法で優れたパフォーマンスを発揮します。 mod_php(つまり、.htaccessファイルでphp_flagとphp_valueを使用でき、オペコードのキャッシュを適切に実行します)。これは、ユーザー間の特権を適切に分離して行うことができます。
  • また、シンボリックリンク攻撃から保護するためのカーネルレベルの変更も提供します。
0
sa289