web-dev-qa-db-ja.com

Apacheユーザーがファイルを所有することによるセキュリティへの影響?

現在、開発者がさまざまなWebアプリケーションに使用しているLAMPインスタンスを実行しています。次のシナリオがあります。

  • 複数の開発者が/ var/www/htmlでファイルを作成および変更するためのアクセス権を必要とします
  • 開発者は、休暇中や病気などでお互いのコードにアクセスできる必要があります。

私の考えは次のとおりでした:

  1. / var/www/htmlの下の各Webアプリケーション(ディレクトリ)について、所有者を再帰的に「Apache」に変更し、グループを「開発者」グループに変更します。 57で権限を設定します。
  2. / var/www/htmlの下の各ファイルについて、所有者を再帰的に「Apache」に変更し、グループを「開発者」グループに変更します。 47で権限を設定します。

ファイルとディレクトリをApacheユーザーに対して読み取り専用として維持することは良いセキュリティ慣行ですが、Apacheユーザーがそのようなファイルを所有することは悪いことですか?私の懸念は、Apacheが0日間の脆弱性などの攻撃を受けた場合にどうなるかということでした。

これを行うためのよりエレガントな方法を誰かが持っているなら、私もそれを聞いてみたいです。

14
am4

MACでデーモンを制限する

どのようにカットしても、ApacheをAppArmorやSELinuxなどの必須のアクセス制御レイヤーでラップすることは、最初のステップとして適切です。これにより、他に許可を与えられている場合でも、デーモンの許容操作を制限することができます。これにより、Apacheがファイルを変更できなくなります。

自動チェックアウトでバージョン管理を使用する

すべての開発者がgitにアクセスでき、更新時に本番ブランチがWebサーバーによって自動的にチェックアウトされる場合、ロードされたすべての制御と履歴、およびすべてが本来あるべきものであるかどうかの即時検証があります。

許可

Apacheをファイルの所有者にする欠点は、Apacheが理論的にそれらのファイルをchmodできることです。そのため、Apacheがディレクトリを変更することを期待しない限り、別のユーザーが所有するデータディレクトリとファイルを作成することには利点があります。その場合は、予想される動的コンテンツとApacheが更新してはならないコンテンツのディレクトリを分離するようにしてください。

10
Jeff Ferland

ユーザーがウェブサーバープロセスを実行し続けることは完全に正しいことです。あなたの場合、Apacheをウェブルートへの書き込みから分離することは良い考えです。これは、理由による基本的な強化ガイドの1つです。ユーザーがファイルまたはディレクトリに書き込むことができる場合、悪意のあるユーザーがファイルシステムを変更することが容易になります。考慮していないことの1つは、ファイルシステムの所有権がどのように機能するかです。

ファイルを所有するユーザーは、いつでもファイルに書き込むことができます。これは矛盾しているように見えますが、ユーザーがファイルを上書きしたり削除したりできるようにするために用意されています。

あなたのビジネスプロセスのために、開発者がライブWebファイルへの直接書き込みアクセスを必要とする場合、あなたの推奨事項を次のように変更します。

私の考えは次のとおりでした:

  1. /var/www/htmlの下の各Webアプリケーション(ディレクトリ)について、所有者をnobodyまたはrootなどの別のアカウントに再帰的に変更し、グループをdevelopersグループに変更します。権限を575に設定します。
  2. /var/www/htmlの下の各ファイルについて、所有者をnobodyまたはrootなどの別のアカウントに再帰的に変更し、グループをdevelopersグループに変更します。権限を474に設定します。

これにより、Apacheユーザーがファイルを読み取れるようになり、httpdがファイルを変更できるようになり、ファイルを提供できるようになります。

9
Scott Pack