正确设置具有多个用户的apache虚拟主机


15

在此先感谢您提供的任何帮助。我已经使用Linux(ubuntu),apache,虚拟主机和一些关于安全性的自学知识,尽管我还没有将它们无缝地组合在一起。

我还从过去的错误中学到了艰难的方法,即无法正确设置用户帐户和站点/虚拟主机。我以root用户身份进入服务器(我知道,非常糟糕),并手动创建了所有虚拟主机和文件,因此,它们都是root用户拥有的。我已经使用了旧版本的joomla,并且在所有其他虚拟主机中都插入了恶意垃圾邮件代码。

我正在迁移到新服务器,并正在寻找遵循正确的步骤来设置虚拟主机和可以访问它们的用户帐户。由于我们使用的是第三方软件,因此有时需要其他人ftp进入该站点以调查其网站文件。

我们当前的服务器是版本10.04,但是新服务器是版本12.04。所有网站文件都在

/home/www/site1.com

/home/www/site2.com

/home/www/site3.com

等等

简而言之,我想这就是我的追求。

  1. 如何正确设置虚拟主机和用户,以使其只能访问自己的文件,而不能访问服务器上的任何其他虚拟主机。例如,如果该站点被恶意代码利用,它就不会感染服务器上的其他站点

  2. 我将如何设置用户,以便他们只能通过ftp进入其给定的文件,而不能访问任何其他站点。

如前所述,有许多文章详细介绍了如何执行这些步骤中的任何一个,但是没有什么可以将它们无缝地组合在一起。

非常感谢任何人都可以提供的帮助。请随时询问您可能需要提供建议的其他信息。我目前正在按照教程来设置chroot,但是我担心这样做不正确,因为在此过程中我发现了一些不一致之处。我也在调查监狱套。

Answers:


6

由于当被问到“ apache虚拟主机独立用户”时,问题是google中搜索量最高的结果,因此我想在此答案的基础上给出更详尽的答案。我的答案不涉及PHP和CGI的用例(您将使用suPHP)。当用作apache模块时,它着重于PHP。

您可以使用apache模块apache2-mpm-itk。它可用于当前版本的apache 2.4。它带有指令AssignUserID。该伪指令定义处理虚拟主机请求的用户和组。这是我最终得到的apache站点配置的示例:

<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot /home/www/site1.com
AssignUserID site1 www-data
php_admin_value open_basedir /home/www/site1.com
...
</VirtualHost>

当然,这仅会提高安全性,只要各个DocumentRoot由其各自的用户拥有并且不能组访问即可。为了进一步提高与PHP有关的安全性,将脚本DocumentRoot限制在open_basedir中。至于后端文件访问,我更喜欢SFTP和chroot

注意:apache2-mpm-itk当前与Apache的http2模块不兼容。


1

我不认为这是您本人问题的答案。但是,由于我无法发表评论,因此必须在“答案”区域中进行书写。我季节性地进行Web管理,以一种安全的方式进行测试和尝试的一种方法是在虚拟机(即VirtualBox)或“旧”台式计算机中设置测试环境。新手虚拟主机管理员的一个非常普遍的问题是了解Web服务器程序的工作方式。在这种情况下,我假设您需要了解Apache的工作原理,至少要了解配置文件。我发现Webmin对新手来说是一个非常有用的工具,可以用来管理Apache和其他服务。您必须花一些时间在测试环境中进行尝试,以便对您而言变得更加清晰。

回到您的问题,我认为答案很可能是教程文章或一本小书。查看这些文章以作为开始:

https://www.digitalocean.com/community/articles/how-to-set-up-apache-virtual-hosts-on-ubuntu-12-04-lts

http://www.servermom.org/build-ubuntu-server-a-complete-guide/


谢谢biocyberman。这些几乎是我遵循并且非常熟悉的基本步骤。唯一的区别是我没有将每个网站都委托给不同的用户,这是我接下来要尝试的事情,但这是否可以确保虚拟主机文件夹之间的安全?Jailkit似乎是解决方案的一部分,但我不确定100%。我过去曾与webmin一起玩过,因此请重新访问它,看看它是否对我遇到的任何问题有帮助。
user249729 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.