服务器configuration防止代码注入

背景故事:前几天,我在共享主机上清理了被黑networking空间,并在networking目录中发现了一个脚本,允许攻击者将代码注入到web目录中的所有php和html文件中。 它有权访问Web目录中的所有内容,但我不确定该文件具有哪些用户权限。

问题:我认为,由于缺less服务器configuration选项,阻止在共享Web主机上运行的PHP脚本访问其他Web文件(php,html等)将会很困难。 有没有一种方法来configuration一个Linux的Apache HTTP服务器(你有完全的根访问权限),以便即使攻击者能够上传一个这样的脚本到Web目录,它将无法访问修改其他文件服务器?

至less,你应该:

  • 限制Web服务器用户有权写入的Web可访问目录。 (或根本不)
  • 不要在Web服务器允许写入的目录中处理PHP,CGI或任何其他脚本。

suPHP之类的东西对于这类问题并没有那么有用,就像改变PHP脚本经常运行的用户那样,他们就可以访问它们不应该被写入的地方……唯一的办法就是pipe理甚至更多的用户(一个是networking服务器使用的设置,一个是允许更新文件的设置),并且在运行脚本之前,您失去了testing文件所有权是否干净的主要优点之一。

一个简短的答案是肯定的。 只要有root权限,您就可以保护您的源文件免受Apache用户的修改。 但是,如果您的软件依赖于这种修改(例如,如果.phpconfiguration文件应该可以从Web应用程序进行编辑),那么将无法阻止Apache用户修改您的源文件,而无需停止您的应用程序按devise工作。

我敢打赌,问题出在您的FTP / SFTP客户端configuration中,而不是在您的共享主机Apache服务器configuration中。 我认为您的电脑遭到了恶意攻击,一个特洛伊木马程序会使用您的FTP / SFTP客户端的凭据将恶意代码上传到您的帐户。 这些日子相当普遍。

我最喜欢的模块进行编译,以允许Apache作为一个不同的uid / gid每个虚拟主机运行itk。

http://mpm-itk.sesse.net/

这是非常新的,所以通常它不会默认编译。 这比suexec或phpsuexec更快。 您configuration一个虚拟主机条目作为某个用户运行。 那么你可以chmod每个用户的webroot喜欢700,所以只有那个用户可以在那里。

然后你可以像mod_security一样运行一个模块来帮助阻止sql的攻击

安装类似suphp的东西。 http://www.suphp.org/Home.html

然后检查服务器,确保你的用户没有像chmod 777他们的目录做一些愚蠢的事情..