必要な人のアクセスを制限せずにUbuntu / Apacheのwwwディレクトリを保護しますか?

必要な人のアクセスを制限せずにUbuntu / Apacheのwwwディレクトリを保護しますか?

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

おすすめ記事