Apache2 / Ubuntu Webサーバーを設定しているために必要なセキュリティ設定を実装する方法がわかりません。
wwwフォルダ - ネットワークルートディレクトリ - 鉱山www-データグループ(apacheおよびPHPアカウント)には、Apacheで実行されるスクリプトが明示的な許可なしにファイルを変更または削除するのを防ぐための制限された権限が必要です。ただし、WinSCPを使用して接続したり、wwwフォルダにファイルを転送したりするのと同様のユーザーは、ファイルをWebルートにコピーしたり、古いファイルを削除したりするなどの作業を行うための完全な権限が必要です。
理想的には、Webサーバーの操作に対する制限された権限を持つwww-dataグループと、wwwフォルダの完全な権限を持つWebプロジェクトのタスクを実行するすべての人を含む「webdevelopers」というグループが必要です。
定期的にWebサーバーを設定する人が、開発者が必要に応じてファイルを追加および削除できるようにしながら、Webルートを適切に保護する方法を教えてください。
答え1
ApacheとPHPスクリプトは同じユーザーとして実行する必要があります。
あなたが持つことができる1つのアイデア(garethTheRedのアイデア)は、開発者を含むグループを作成し、所有権をwww-devs
に変更し、/www-data
モードapache:www-devs
をに設定することです0570
。
これにより、Webサーバーはディレクトリから読み取ることができますが、書き込むことはできません。グループのメンバーがwww-devs
書くことができます。しかし、これには、開発者が追加した新しいファイルが開発者の所有になるという大きな問題があります。 Apache はこれらのファイルの所有者でもなく、そのファイルを所有するグループでもありません。したがって、Apacheはこれを読むことができません。
最善の解決策は、ファイルシステムACLを使用することです。 ACLを使用して、異なる権限を持つ複数のグループを追加できます。これらの権限を継承するように新しいファイルを設定することもできます。
groupadd www-devs
setfacl -R -d -m g:www-devs:rwX -m g:www:r-X /www-data
setfacl -R -m g:www-devs:rwX -m g:www:r-X /www-data
最初のsetfacl
行は、生成されたすべての新しいファイルのデフォルト権限を設定します。 2setfacl
行目は既存のファイルに対する権限を設定します。
権限は次のように表示されます。
$ getfacl --all-effective /www-data
getfacl: Removing leading '/' from absolute path names
# file: www-data
# owner: apache
# group: www
user::r-x
group::r-x #effective:r-x
group:www:r-x #effective:r-x
group:www-devs:rwx #effective:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx #effective:rwx
default:group:www:r-x #effective:r-x
default:group:www-devs:rwx #effective:rwx
default:mask::rwx
default:other::rwx
これはwww
、グループに読み取りおよび実行権限しかないが、www-dev
読み取り、書き込み、および実行権限があることを示します。
ファイルを作成しましょう。
$ touch /www-data/foo
$ getfacl --all-effective /www-data/foo
getfacl: Removing leading '/' from absolute path names
# file: www-data/foo
# owner: root
# group: root
user::rw-
group::rwx #effective:rw-
group:www:r-x #effective:r--
group:www-devs:rwx #effective:rw-
mask::rw-
other::rw-
これは、作成されたファイルにwww
のみ読み取り権限があり、読み取りwww-devs
および書き込み権限があることを示します。このコマンドはrootとして実行されるため、touch
実際にファイルを所有している人はrootです。ただし、ACLが原因でグループがファイルに対して実行できるwww
操作には影響しません。www-data