Apache 多用户开发 Web 服务器的安全性

Apache 多用户开发 Web 服务器的安全性

我整个上午都在搜索和阅读文档,并且了解到我需要使用 chown 和可能的“jailing”的某种组合来安全地让程序员访问我的 centos 网络服务器上的目录。

情况如下:我有一个 apache 网络服务器,其中有任意数量的虚拟站点位于 /var/www/site1 /var/www/site2 等。

我有不同的开发人员需要完全访问他们正在工作的站点的 ssh 和 vsFTP。在这种情况下,创建和维护安全性的最佳方法是什么。我的想法是为每个程序员创建一个新用户,将该用户限制在他们被允许工作的网站目录中,将他们的用户添加到一个组并将 webroot 的所有者设置为该组。

有什么想法吗?好,坏,丑?谢谢!

答案1

首先,尽快删除 vsFTP。将源代码和密码以纯文本形式发布到互联网上是一个非常糟糕的主意。FTP 应该仅有的用于匿名文件传输,应使用 sftp 或 ftp+ssl 并消除冗余。拥有 2 个守护进程会使你受到攻击的可能性增加一倍,请考虑尽可能减少攻击面。

传统的 Chroot jail 可能有点矫枉过正,尽管它可以完成工作。您需要担心 2 个威胁。第一个是用户可以使用 ssh 下载/修改代码。可以使用 sshd 配置文件中的 ChrootDirectory 配置来防御这种情况:

ChrootDirectory 指定身份验证后 chroot(2) 的路径。此路径及其所有组件必须是 root 拥有的目录,任何其他用户或组都无法写入。chroot 后,sshd(8) 将工作目录更改为用户的主目录。

下一个威胁是程序员可以上传恶意代码,例如 PHP 后门来访问您的系统。这更加阴险,因为后门可能只是添加 2 个字符或删除 2 个字符那么简单。

应对恶意内部威胁的最安全方法是使用 svn+ssh,强制每个程序员在本地系统上进行开发,然后检查提交的所有代码。SVN 将跟踪谁在您的系统中添加了哪些代码。在测试了代码的漏洞(无论是有意还是无意的)后,您可以在实时服务器上部署“发布”版本。在实时服务器上进行开发不是一个好主意,因为它会导致开发过程中意外停机。

答案2

与 chroot 相比,apache 的 suexec 模块是防止滥用的绝佳选择。

否则我会赞同“未知”的评论。

相关内容