不安全的 Apache + mod_userdir 配置

不安全的 Apache + mod_userdir 配置

总结:我怎样才能以安全的方式启用 mod_userdir?(意思是:每个用户都应该能够在 ~/public_html 中创建和提供他们的内容,但他们不应该被允许读取彼此的内容,也不应该直接读取——cat /home/userX/public_html/file无论是通过 PHP 函数(file_get_contents('/home/userX/public_html/file'))

细节: 我已使用 mod_userdir 配置了 Apache,以便为我的用户提供将文件放在 ~/public_html 文件夹中来提供其内容的选项。为了保护文件访问并避免任何用户可以读取其他文件,我配置了以下权限:

/home/userA user.user drwx--x--x (711)  
/home/userA/public_html  user.user drwxrwx--x  (771)

我已添加www-data到每个用户的组:( usermod -a -G user www-data 它也可以创建一个组并将所有用户(包括www-data)添加到该组)

所有配置均按预期工作。任何用户都可以从 https://server/~user 访问其内容,并且他们无法读取任何其他人的文件:

userA@ubuntu:/home$ cat userB/public_html/index.php 
cat: userB/public_html/index.php: Permission denied

到目前为止一切顺利。但问题是,由于 Apache 以 身份运行,www-data并且它对 /home/* 内的任何文件都有组访问权限,因此任何用户都可以创建一个 PHP 文件,使用 、 、 等函数来读取其他人execsystem内容file_get_contents

我知道我可以禁用这些函数,使其无法执行,只需将它们添加到disable_functions块中php.ini即可,但我认为这只是一种修补程序,而不是解决方案。因此,在我看来,应该有其他更安全的方法来配置此启用 userdir 的 Apache 配置。我搜索了一种方法以正确执行此操作,但尚未找到合适的解决方案。

相关内容