基本上,我控制着几台服务器,并且只托管我设计的静态网站或脚本,因此我在一定程度上信任它们。
然而,我有几个客户想要开始使用诸如 Wordpress 或其他脚本 - 并且他们希望完全控制他们的帐户。
我已经开始做一些基础的工作 - 比如在 php.ini 上,我已经锁定它并限制了诸如 proc 之类的命令,但是,显然我还可以做更多。
现在,使用 NTFS 权限,我试图通过在自己的用户中运行应用程序池和各个站点来锁定服务器,但是我感觉自己遇到了瓶颈...(我关于服务器故障的老问题)。
目前,我能想到的唯一途径是要么实施现成的控制面板 - 这将是昂贵的,坦率地说,过分,要么看看Microsoft 指南- 这实际上适用于整个基础设施,而不是仅想锁定几台服务器的人。
有人能给我指明正确的道路吗?
答案1
首先,我做了一些假设,如果我没有理解你的问题的重点,请原谅。我假设你正在为你的某些客户提供一些网络托管服务,现在他们要求控制网络托管服务,而不是你为他们做所有的工作。
两个词:虚拟机。 不要让他们访问你的主机 Web 服务器让他们完全控制虚拟机实例 - 如果他们搞砸了,您更有价值的主机不会受到损害或篡改 - 只有他们的网站和服务。然后,您可以授予他们对实例的管理控制权,而不必担心它(除了他们的初始实例的备份 - 但这取决于您与客户的合同)。当您为他们提供管理员帐户时,他们也会感到更特别。:-) 如果可能的话,我强烈推荐这条路。
如果这不是一个选项,并且您愿意与客户共享主机系统,那么我建议对您的一个磁盘阵列进行分区,以便您的客户拥有自己的卷来托管他们的网站和数据。您可以在自己的目录中为他们创建一个基本目录,但随后您必须处理 NTFS 权限和继承,这可能会变得很糟糕,具体取决于文件系统的复杂性。
如果可以的话,创建新的卷/分区就简单多了——使用他们自己的卷,安全性就会简单得多,因为你可以让他们完全控制该卷,和您还可以指定磁盘空间限制,这样它们就不会填满您的磁盘并使您的系统停止运行。
我认为你关于单独应用程序池和单独站点的思路是对的。你可能想看看这篇文章委派管理网站和应用程序的权限(iis7)。如果他们开始使用数据库,情况会变得更加复杂 - 但是,如果他们想要做的只是托管一些静态内容,上述内容应该可以阻止他们失控。