在Web服务器所在的同一台机器上运行数据库服务器似乎很简单,但是我们是否正在采取一个很大的安全风险呢?
环境将是Windows 2008服务器,Postgresql(最新版本,可能是9.0)和Apache 2。
不必要。
假设您的Web服务器受到攻击,攻击者仍然可以获得访问相同数据库的凭据,无论他们运行在哪个服务器上。 毕竟,数据库服务器仍然需要configuration为允许来自Web服务器的合法请求。
(假设mysqld等明智的安全措施不接受来自localhost的无密码rootlogin。)
这就是说,你可能还想运行一个单独的数据库服务器。 与性能,可伸缩性等有关的原因
我不同意这些海报,说这不是一个安全问题,这是为什么:
这将取决于您的Web和数据库服务器(即软件)的安全模型,以及您在两台服务器上执行的防火墙/访问控制/ IDP的程度。
所有其他条件相同的情况下,最好将两者分开。 但是,实际上,至less在LAMP环境中,只要你使用privsep Apache(如果你不确定,不用担心,你是),而不是在你的webapp中使用rootlogin到MySQL,而且你没有暴露于外部世界的tcp / 3306,通过将其中一个移动到另一个硅片上,你并没有获得太多的安全性。 尽pipe如此,您仍然可以获得性能和debuggingfunction。
你的问题的风格似乎需要一个绝对的答案,但没有更多的信息(至less,我们在谈论什么操作系统和Web / DB服务器口味),甚至很难提供一个信息。
将数据库和Web服务器放在同一个硬件上,我看不到其他的安全风险。 如果Web服务器被破坏,则数据无论如何都是可访问的。 安全不是分层的典型原因。
无论哪种情况,您都希望确保数据库服务器正在侦听非标准端口,只响应来自Web服务器的请求,并且防火墙只允许向Web服务器发送http请求,而不允许其他端口或地址。
尽pipe如此,将它们分开是很好的做法。每台服务器都易于pipe理和configuration,并且可以更轻松地处理故障,问题,重build,性能问题等。 因此,您可能会考虑在同一硬件上安装两个虚拟服务器,然后在性能或容量需要时将其分开。
我不会 – 但那就是我。
它取决于你的盒子(即防火墙,负载平衡器等)是什么,以及它们是多么“紧密”,实际数据是什么(即现在 – 影响一端的公开可用数据,另一端影响国家机密) ,是否有任何性能影响的组合,它们之间的networking实力(即层间防火墙)和OS /应用程序强化的质量将被应用。
如果你不希望这个系统需要处理太多的负载,你可以考虑将系统虚拟化成两个单独的虚拟机。 每个function一个 – 甚至可能还有第三个软件防火墙虚拟机。 这就意味着,即使有人破解了你的Web服务器,他们也必须破解数据库服务器,如果包含了中间层的防火墙虚拟机。 当然,这会降低整个系统的性能,但是至less在某种程度上会更安全一些,如果你的负载增加到需要两台服务器的devise,你也可以简单地把一台虚拟机移到另一台机器上。 VMWare的免费ESXi产品可以非常容易地完成这项任务,并且已经有了免费的防火墙虚拟机,如果您愿意的话,可以预先准备好实施。