現在、開発者がさまざまなWebアプリケーションに使用しているLAMPインスタンスを実行しています。次のシナリオがあります。
私の考えは次のとおりでした:
ファイルとディレクトリをApacheユーザーに対して読み取り専用として維持することは良いセキュリティ慣行ですが、Apacheユーザーがそのようなファイルを所有することは悪いことですか?私の懸念は、Apacheが0日間の脆弱性などの攻撃を受けた場合にどうなるかということでした。
これを行うためのよりエレガントな方法を誰かが持っているなら、私もそれを聞いてみたいです。
どのようにカットしても、ApacheをAppArmorやSELinuxなどの必須のアクセス制御レイヤーでラップすることは、最初のステップとして適切です。これにより、他に許可を与えられている場合でも、デーモンの許容操作を制限することができます。これにより、Apacheがファイルを変更できなくなります。
すべての開発者がgitにアクセスでき、更新時に本番ブランチがWebサーバーによって自動的にチェックアウトされる場合、ロードされたすべての制御と履歴、およびすべてが本来あるべきものであるかどうかの即時検証があります。
Apacheをファイルの所有者にする欠点は、Apacheが理論的にそれらのファイルをchmodできることです。そのため、Apacheがディレクトリを変更することを期待しない限り、別のユーザーが所有するデータディレクトリとファイルを作成することには利点があります。その場合は、予想される動的コンテンツとApacheが更新してはならないコンテンツのディレクトリを分離するようにしてください。
ユーザーがウェブサーバープロセスを実行し続けることは完全に正しいことです。あなたの場合、Apache
をウェブルートへの書き込みから分離することは良い考えです。これは、理由による基本的な強化ガイドの1つです。ユーザーがファイルまたはディレクトリに書き込むことができる場合、悪意のあるユーザーがファイルシステムを変更することが容易になります。考慮していないことの1つは、ファイルシステムの所有権がどのように機能するかです。
ファイルを所有するユーザーは、いつでもファイルに書き込むことができます。これは矛盾しているように見えますが、ユーザーがファイルを上書きしたり削除したりできるようにするために用意されています。
あなたのビジネスプロセスのために、開発者がライブWebファイルへの直接書き込みアクセスを必要とする場合、あなたの推奨事項を次のように変更します。
私の考えは次のとおりでした:
/var/www/html
の下の各Webアプリケーション(ディレクトリ)について、所有者をnobody
またはroot
などの別のアカウントに再帰的に変更し、グループをdevelopers
グループに変更します。権限を575に設定します。/var/www/html
の下の各ファイルについて、所有者をnobody
またはroot
などの別のアカウントに再帰的に変更し、グループをdevelopers
グループに変更します。権限を474に設定します。これにより、Apache
ユーザーがファイルを読み取れるようになり、httpdがファイルを変更できるようになり、ファイルを提供できるようになります。