安全地托管多个网站

信息安全 Web应用程序 阿帕奇
2021-08-31 23:59:52

我有多个网站在同一台服务器上运行,使用各种 CMS 和框架构建。我需要完全隔离它们。我需要这个,因为将来我想允许我的一些客户在这些服务器上托管网站,甚至是一些潜在的易受攻击的代码(充满过时 wp 插件等的网站)。因为我不想对客户的代码负责,所以我必须确保环境是安全的,如果其中一个被黑客入侵,其他的运行良好并且服务器本身没有受到损害。

我现在拥有的是一个非常实验性的环境,带有 chroot jailed sftp 访问。问题是,(并且可能还有其他风险因素),所有网站都由同一个网络服务器用户运行,比如说www-data. 因此,从理论上讲,涉及上传恶意软件并从浏览器执行它的攻击可能会损害所有拥有www-data. 系统数据库用户(不是我给客户端的用户,而是运行 mysql 进程的用户)想到了类似的想法。

处理此问题的最佳做法是什么?此外,如果您有任何东西、清单等,请随时分享。

1个回答

在您的服务器上安装一个虚拟机管理程序,并为每个运行自己的网络服务器和数据库实例的用户创建一个单独的虚拟机。

当您没有每个用户的唯一公共 IP 地址时,您可以将所有 DNS 条目指向同一个公共 IP,在该公共 IP 上运行反向代理,将每个请求路由到正确 VM 的 LAN-IP(side-效果:从用户的角度来看,所有请求似乎都来自反向代理)。

这允许用户对他们的虚拟机做任何他们想做的事情,当他们完全搞砸时,你只需要重置虚拟机。为 VM 设置 CPU 和 RAM 配额还可以防止您的用户通过资源消耗互相攻击。

另一个优点是您可以允许用户修改他们的网络服务器配置,而不会与其他用户发生任何冲突。当用户对某些设置或软件版本有冲突的要求时,这可能很有用。