我创建了几个网站,其中一些目录设置为权限 755,并将所有者设置为“www-data”,将组设置为“www-data”。
这样我就可以防止将这些目录的权限设置为 777,但仍然使网络服务器可以写入缓存文件、用户上传等内容。
现在这些目录中的几个文件已被注入恶意的 javascript 代码。
经过一些日志研究后,我认为黑客扫描了我的服务器并找到了具有确切权限的文件,并且能够编辑这些文件并向其中注入代码。
看来我的方法非常不安全,因为这些网站在运行的应用程序方面有很大差异。这让我认为不安全的不是某个特定的上传脚本,而是与我的权限设置有关。
你知道我如何保护这些目录,以便服务器可以在其中写入,但又可以防止恶意的 javascript 代码注入吗?
- 服务器操作系统:Debian Lenny
- 网络服务器:Apache 2.2
- 编程:PHP 5
答案1
如果没有更多的信息,我无法肯定地说,但是如果你希望你的网络服务器能够写入这些目录,并且你已经将所有权更改为www-data
(我认为是运行 apache 的用户),700
这就足够了,因为该用户已经是所有者,而且它更安全。
但如果恶意软件来自不安全的上传脚本正在运行(将与该用户一起运行),那么这种措施将无济于事,无论如何您都必须修复该脚本。
您还应该检查您的 php 配置文件(通常php.ini
)和您的 apache 配置,并调整两者以提高安全性。
希望这有帮助,祝你好运。
答案2
您的问题很可能不是在文件系统级别。
如果您认为黑客入侵了服务器并编辑了一些文件,那么您应该阻止黑客进入机器,而不仅仅是阻止她编辑某些文件。
罪魁祸首可能就在你的 Web 应用程序中。有很多有趣的东西可以阅读BadwareBusters.org。
答案3
设置所有者以www-data
使目录和文件可由您的 Web 服务器写入。仅为您希望 Web 服务器写入的目录设置此所有权。配置服务器不从这些目录运行活动代码。
注入可能来自您在系统上运行的活动代码。您可能希望将对 javascript 文件的访问限制在 Web 服务器无法写入的目录中。
安排定期对 Web 服务器可以写入的目录进行恶意软件扫描。这应该只是缓存和上传目录。