Linux Web 服务器权限 - 最佳实践

Linux Web 服务器权限 - 最佳实践

在拥有一个网站的私有服务器上,/var/www 内的文件/目录不能由 www-data 组拥有,有什么原因吗?

我的理解是,只有在同一台机器上运行多个网站时,才会出现 www-data 具有写访问权限的安全风险。

答案1

适用最小特权原则。仅授予用户所需的权限,不授予更多权限。

在这种情况下,如果 Apache 仅提供页面,则不授予用户帐户编辑权限。可能的风险包括:更改文件内容或上传新内容;向文件添加可执行代码等。无论是单个站点还是多个站点,这些风险都存在。如果应用程序需要编辑特定文件,请限制对该文件的权限更改。

答案2

我为我的 WordPress 网站编写了一个简单的脚本。此脚本仅授予 Apache 对需要写入的内容的写入权限。webroot 下的其他所有内容都是只读的。我认为这是迈向更安全网站的良好一步,应该加以实践。

#!/bin/bash

PATH=/bin:/usr/bin
WEBROOT="/var/www/www.example.com"

UPLOADS="${WEBROOT}/wp-content/uploads"

chown -R nobody:nogroup ${WEBROOT}
find ${WEBROOT} -type d -exec chmod 0555 {} \;
find ${WEBROOT} -type f -exec chmod 0444 {} \;

chown nobody:www-data ${WEBROOT}/sitemap.xml ${WEBROOT}/sitemap.xml.gz
chmod 0464 ${WEBROOT}/sitemap.xml ${WEBROOT}/sitemap.xml.gz

chown -R nobody:www-data ${UPLOADS}
find ${UPLOADS} -type d -exec chmod 2575 {} \;
find ${UPLOADS} -type f -exec chmod 0464 {} \;

答案3

/var/www即使您只有一个网站,如果该文件夹可由 apache 用户写入,那么危害 apache 用户也将使黑客能够更改其下的文件。

答案4

我不明白为什么不行。如果有一个网站,这应该没问题。但请注意,您可能希望授予某些文件的只读权限。(如果他们需要写权限,请将其列入白名单 :) )

相关内容