当我尝试保护共享主机上遭受制药公司黑客攻击的网站(LAMP 和 WordPress)时,我建议网站所有者遵循 WordPress 的最佳做法http://codex.wordpress.org/Hardening_WordPress并且有此命令可以使文件对除所有者之外的所有人只读
find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;
但我运行<?php echo exec('whoami'); ?>
后发现,apache 用户以站点所有者的 SFTP 用户身份运行。因此,Apache 以文件所有者身份运行。
在我看来,这是一个巨大的安全问题,因为网站所有者能做的任何事情,Wordpress 插件也能做!
我说的对吗?这是房东应该修复的问题?如果他们不愿意,我该说什么才能说服他们?这个问题是否严重到需要更换房东?
更新 : 为了清楚起见,我说的是有效地保护网站免受自身攻击。为了阻止插件中的漏洞被用于在服务器上编写/编辑代码,如果网络服务器以网站所有者的身份运行,那么插件可能会被操纵以安装任意代码并更改 .htaccess
更新2:当我说“安全漏洞”时,我可能指的是“脆弱性”
答案1
不必要。在普通用户账户下运行单独的 Apache 进程是一种常见的方法,尤其是在共享主机上。这本身不是一个安全问题。相反,它可能是一个不符合您要求的安全模型。如果您的帐户除了用于 Web 服务之外,还需要用于其他重要事务,那么无论如何您都应该完全隔离您的 Web 存在。
您可以询问他们是否有可用的不同配置(有时他们有)。
编辑:澄清一下。这是你的特定用例。如何实现?以托管商的观点为例:在这里,他们希望隔离他们的用户又名客户彼此(以及系统的其余部分),因此在相应的用户帐户下运行进程。在同一个帐户下运行所有进程(例如 www-data),意味着入侵一个客户站点,其他客户的数据也会受到损害。
你另一方面,我同意您的观点,需要将您的其余数据与您的网络存在隔离。
这个问题有很多可能的解决方案,其中一个是像您建议的那样,为每个客户提供两个用户帐户。或者,一个真正好的 apache/cgi 配置将 Web 服务器隔离到用户主目录中的特定固定子目录中,这样就不会出现漏洞(我以前工作过的一家公司就是这么做的)。最好与您的托管商协调。
答案2
我显然与 Roman 的观点不同,但我认为许多 PHP 网站以 *.PHP 文件(通常是 www-data)所有者的身份运行是一个主要问题。如果您希望能够使用 Wordpress 的自动更新等功能,这甚至是必需的,因为 Web 服务器需要编写 PHP 文件。
PHP 网站将存在漏洞,允许您在其文件中注入代码,这几乎是必然的。所以您需要防止这种情况发生。即使设置为只读也常常不起作用,因为目录仍然是可写的,并且当用户拥有该文件时,可以简单地覆盖只读。
答案3
在 php.ini 中为该用户设置 open_basedir。使用 fcgid。这样,该站点将受到保护,不受自身影响。此外,使用 disable_functions 禁用 shell 访问等。
就这样 :)