www-data权限的关键问题

我在debian上使用apache webserver,处理12个不同的网站。 两天前,我遭受了一次攻击,一名黑客通过ftp在这12个站点之一上传了一个php shell。

关于这个shell,我想知道的是“咩,这只能访问www /文件夹,他不能回去”,但这里的问题,他可以访问到/文件夹,看到所有的文件夹 – 他想要的文件(mailq,用户,所有的网站文件…),他可以浏览所有我的VPS看所有的文件和它的内容(不修改它们!),而无需修改它们。

我一直在想这些最后的日子,我怀疑是www数据权限问题或类似的东西,但找不到任何解决scheme。

那么我怎么能做到这一点,如果我导航site1.com(在我的VPS)我会使用只能访问该目录的用户?

换句话说,如果一个黑客再次上传一个php shell,我希望他不要去查看/var/www/site1.com/www/后面的其他文件

多谢你们!

你所要求的是一个好主意,但实际上可能很难实现。

确实没有办法阻止攻击者看到Web服务器可以访问的文件…因为攻击是通过networking服务器进入的,所以不能阻止访问而不能使文件完全无法访问。 您可以保护系统上的其他敏感数据,确保它只能被特定的组访问…例如,确保只有“邮件”组可以访问我们的mailq。 这意味着(a)创build必要的组,(b)设置必要的文件/目录权限,(c)确保任何守护进程都使用正确的凭据运行。

如果您正在寻找更强大的解决scheme,可以使用某种轻量级虚拟化解决scheme(例如Linux Containers, http://lxc.sourceforge.net/ )为每个站点创build虚拟专用服务器,但这两者都是更多的时间和资源密集。

您可以将每个网站作为单独的用户标识运行。 这有点棘手; 最简单的方法是在特定的端口上为每个站点运行Apache的一个实例,然后使用Apache的代理模块在端口80上委托来自主服务器的访问。由于此解决scheme每个站点涉及一个Apache实例,因此也具有资源后果。 有一些模块可以让你在一个Apache实例中实现这个function,例如http://blog.andreaolivato.net/open-source/running-apache2-virtualhost-with-different-users.html

我会build议使用mod_security的chrooted环境。 这样,Apache守护进程(或Apache运行的chroot用户)的任何折衷将只暴露chroot的树,而不是整个服务器本身。

文档在这里: http : //www.modsecurity.org/documentation/apache-internal-chroot.html