web-dev-qa-db-ja.com

WebDAVのセキュリティマスキングを補うためのApacheの管理

ユーザーがWebDAVを介してファイルを作成する場合、デフォルトの動作では、ファイルはApacheプロセスを実行しているユーザーとグループによって所有され、umaskは022です。

残念ながら、これにより、特権のないユーザーが、Apacheが実行されているグループのメンバーでないと、他の方法でファイルに書き込むことができなくなります(これは特に悪い考えです)。

私の現在の解決策は、Apacheのenvvarsにumask 000を設定し、ユーザーのwebdav親ディレクトリからすべてのワールド権限を削除することです。したがって、WebDAV共有が/home/foo/wwwの場合、/ home/foo/wwwはwww-data:fooの権限を持つ770によって所有されます。これにより、他の非特権ユーザーが多かれ少なかれ排除されますが、それはせいぜい厄介であり、最悪の場合はセキュリティ災害が待ち受けています。

私の調査とmod_davとApacheの調査から、すべてのアクセス許可を元に戻すcronジョブ以外の合理的な解決策を見つけることができません(サーバーに負荷がかからず、複雑さが増したほうがいいです)。 WebDAV操作は別のユーザーとして実行されないため、SuExecも機能しません。

これについて何か考えはありますか?ありがとうございました。

5
Tohuw

Posix ACLを使用して、Apacheのユーザー切り替え機能の欠如を回避しました。これらを使用すると、すべてのファイルにグループおよびユーザーエントリを追加したり、ディレクトリ内に作成された各ファイルに自動的に追加されるディレクトリにデフォルトのアクセス許可を設定したりできます。

私が正しく推測し、Linuxを実行している場合は、aclオプションを使用してファイルシステムを再マウントするために必要なPosixACLを有効にすることができます。次に、setfaclgetfaclを使用して追加の権限を管理できます。 Debianベースのシステムでは、これらのツールはパッケージaclにあります。 Posix ACLについては、man aclおよびman setfaclでさらに読むことができます。 Posix ACLは一部のBSDシステムとMacOSでも利用できますが、私はそこで使用したことはありません。

たとえば、グループfileserverが常に次のファイル内のすべてのファイルへの読み取りおよび書き込みアクセス権を持つフォルダを設定できます。

setfacl -Rm default:group:fileserver:rw,group:fileserver:rx /srv/fileserver

その結果、getfacl /srv/fileserverは次のようなレポートを作成します。

# file: /srv/fileserver
# owner: aef
# group: aef
user::rwx
group::rwx
group:fileserver:r-x
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:fileserver:rw-
default:mask::rwx
default:other::r-x

ただし、警告:Posix ACLに慣れるにはおそらく時間がかかるでしょう。最初はそうではないように見えますが、ACLはかなり複雑になります。

4
aef