web-dev-qa-db-ja.com

Apache、suexec、PHP、suPHP

私はLinuxuserとしてはかなり快適ですが、私のLinuxAdmin-fuは少し弱いです。したがって、私はここで、これから構築しようとしているCentOSサーバーに関するガイダンスを探しています。

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

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

したがって、質問(いずれかまたはすべてに自由に答えてください):

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

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

よろしくお願いします。

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

13
Chris_K

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

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

Suexec/suphpモデルでは、Webサーバー(スクリプトを実行している場合)はユーザーのアカウントで実行されるため、Webサイトには、ユーザーが実行する権限を持つすべてのことを実行する権限があります。これにより、ユーザーとWebサーバー間の分離がある程度除去されますが、代わりに、異なる分離、つまり、同じボックス上の1人のユーザーの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構成の設定として)
  • ファイルは誰でも書き込み可能であってはなりません
  • 親ディレクトリは誰でも書き込み可能であってはなりません
15
tylerl