在同一台机器上安装数据库服务器和Web服务器有风险吗?

在Web服务器所在的同一台机器上运行数据库服务器似乎很简单,但是我们是否正在采取一个很大的安全风险呢?

环境将是Windows 2008服务器,Postgresql(最新版​​本,可能是9.0)和Apache 2。

不必要。

假设您的Web服务器受到攻击,攻击者仍然可以获得访问相同数据库的凭据,无论他们运行在哪个服务器上。 毕竟,数据库服务器仍然需要configuration为允许来自Web服务器的合法请求。

(假设mysqld等明智的安全措施不接受来自localhost的无密码rootlogin。)

这就是说,你可能还想运行一个单独的数据库服务器。 与性能,可伸缩性等有关的原因

我不同意这些海报,说这不是一个安全问题,这是为什么:

  • 你面前的服务应该有最小的攻击面 。 这是使用反向代理服务器和防火墙的主要原因,也是为了将不必要的服务和程序从不需要它们的服务器上运行起来。 这就是为什么Web服务器是安全强化传递最常见的目标。
  • 您的Web服务器不应该拥有数据库系统的上帝权利。 因此,妥协Web服务器也不会影响数据库服务器。 对于初学者来说,Web服务器用于访问数据库的帐户不应该具有对SQL框的本地pipe理权限,其权限应仅限于数据库权限。 其次,在这些SQL权限内,它应该在最小权限的原则下运行。 例如,您的Web框不应该能够在实例中实例化新的数据库。 理想情况下,您的Web框将无法删除表,或从任何不是绝对必须的表中删除行。 因此,如果在正确configuration的2层安装中妥协,使用SQL凭据的攻击者的影响范围是有限的。

这将取决于您的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产品可以非常容易地完成这项任务,并且已经有了免费的防火墙虚拟机,如果您愿意的话,可以预先准备好实施。