Apache、suexec、PHP、suPHP


12

私はLinux ユーザーとして非常に快適ですが、私のLinux Admin-fuは少し弱いです。したがって、私はここで、これから構築しようとしているCentOSサーバーのガイダンスを探しています。

一部のクライアント用にApache2 Webサーバーをセットアップする必要があります。各クライアントのWebコンテンツUSERDIRは、静的HTMLサイトのホームディレクトリ(apache.conf内にありますか?)に配置する必要があります。Apacheをクライアント(suexec?)として実行したい。それらのもののいくつかはPHPアプリになります、そして、私suphpもその時見たいと思う印象の下にいます。

だから基本的に私は共有ウェブホスティング会社の小さなバージョンのようになりたい。それらがどれほど一般的であるかを考えると、これをセットアップするための素敵な最新のハウツーガイドを簡単に見つけることができると思いましたが、これまでのところほとんど運がありませんでした。検索ワードがオフになっていると思われます。

質問(任意またはすべてに自由に答えてください):

  1. 誰も私がこれをすべてセットアップするのに役立つ現在/現代のガイドへのいくつかの堅実なリンクを持っていますか?いいえ、Apacheドキュメントサイトはガイドではありません;-)
  2. 静的サイトとPHPアプリが混在しているので、suexecとsuphpの両方をインストールする必要がありますか?もしそうなら、それは私が知っておくべき課題をもたらしますか?
  3. suexecとsuphpの代わりに他のオプションを見るべきですか?

エンドユーザーに、SSH、SFTP、またはSCPへのアクセスを提供する予定です(何か影響がある場合)。

よろしくお願いします。

[編集] これについては以前に言及したはずです。ファイルの許可と所有権に関連する共有ホスティングプロバイダーをエミュレートするという私の探求の重要な目標の1つです。追加/変更を見るためだけに、そのようなものを変更する必要があることをユーザーに教えることは避けたいと思います。

回答:


14

suexecとsuphpを使用すると、デフォルトとは異なるタイプの特権分離が強制されます。

デフォルトでは、ユーザーの許可をWebサーバーから分離します。つまり、ユーザーはファイルを所有し、Webサーバーにファイルを表示および変更する許可を与える必要があります。

suexec / suphpモデルは、Webサーバー(スクリプトの実行時)がユーザーのアカウントで実行されるため、Webサイトにはユーザーが許可されていることをすべて実行する許可があります。これにより、ユーザーとWebサーバーの間の分離はある程度除去されますが、代わりに、異なるユーザーのWebサイトと同じボックス上の別のユーザーのWebサイトの間で異なる分離が強制されます。

デフォルトでは、PHPは常にApacheのユーザーアカウントで実行されるため、あるWebサイトのPHPスクリプトは、別のサイトのPHPスクリプトがアクセスできるファイルにアクセスできます。したがって、サーバー上の1つのアカウントがハッキングされると、感染が他のアカウントに広がる可能性があります。SuPHPはこれを防ぎます。

suexecもsuphpもapacheが静的コンテンツを提供する方法には影響しません。古いルールはすべて適用されます。代わりに、suexecとsuphpは、CGIとPHP(それぞれ)が実行されるアカウントを変更します。SuexecはCGI実行可能ファイルを所有者のアカウントで実行し、SuPHPはPHPスクリプトを所有者のアカウントで実行します。

SuexecとSuPHPは必ずしも良いとは限りません。彼らはただ違う。Webサイトがハッキングされるのを防ぐことはできません(おそらく、サイトのハッキングが容易になる可能性があります)が、1つのサイトでの侵害が他のすべてのサイトに広がるのを防ぎます。サイト管理者にとって、この分離はほぼ間違いなく重要であり、これが一部の共有ホスティングシステムがsuexecとsuphpをデフォルトにする理由です。

非常に一般的な「落とし穴」の1つは、SuPHPが実行前にスクリプトの所有権とアクセス許可を確認し、アクセス許可が適切でない場合は500エラーを返すことです。

特に:

  • ファイルの所有者とグループは、Webサイトの所有者と一致する必要があります(Apache構成の設定として)
  • ファイルは誰でも書き込み可能ではいけません
  • 親ディレクトリは誰でも書き込み可能ではいけません

だから、共有ホスティングモデルをエミュレートすることを知っている(あなたが指摘したように、ユーザーをお互いから遠ざけている)ことは、suexec / suphpモデルが私が行きたい方法ですか、より良いオプションがあると感じていますか?また、投稿を編集して、重要な目標の1つは、変更や追加を確認するためだけにファイルのパーマや所有者を変更する必要があることをユーザーに教えないことです。
Chris_K

2
suexec / suphpは、あなたが望んでいることに対する良い解決策です。
タイラー

私はsuexecよりsuphpを好むでしょう。より安全だと思います。
ヴラディスラフラストラスニー

@FractalizeR:通常、両方を同時に使用します。SuPHPはPHP用、suexecはCGI用です。PHPをCGIとして実行することにより、suexecを介してPHPを実行できますが、PHPにはより優れた(より安全で効率的な)オプションが存在するため、これは少し不要です。
タイラー

@tylerl:ご回答ありがとうございます。あなたが言及しているPHPのより安全で効率的なソリューションは何ですか?
ベンジャミン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.