服务器分离以避免攻击?

服务器分离以避免攻击?

我目前有 1 台服务器,上面有完整的 LAMP 堆栈以及 Mongo DB。

从冗余角度来说,将这些服务拆分到不同的服务器上是否有好处?

例如:

Server 1 -> Apache/PHP
Server 2 -> mySQL
Server 3 -> Mongo

我认为这可能有好处的原因是,如果遭到黑客攻击或软件出现故障,重新加载软件会更容易。此外,将来它还允许我拥有集群,而不是每个元素都使用 1 个服务器。

这正常吗?还是最好有 3 台服务器,每台服务器都配备完整堆栈?

答案1

如果您的服务器本身出现故障,服务分离可以提供帮助,因为如果您的备份是最近的,您将能够更快地恢复单个服务,或者您可以拥有故障转移环境(仅适用于您第二次复制整个环境,因此您最终拥有 6 台服务器,因为每台服务器都必须有故障转移),但它对抵御主动网络威胁没有显著帮助,也不会提高您的安全性。

出现了以下问题:

  1. 您如何通过此设置防范黑客威胁?如果黑客进入您的 Web 服务器并安装恶意脚本以从您的数据库获取数据或执行其他操作,您的服务分离将无济于事。
  2. 您采取了哪些措施来对抗入侵和恶意行为,以减轻其影响?通常,您会在网络边界部署 IDS/IPS 以及防火墙,以防范某些网络威胁,避免它们真正成为问题。
  3. 您无法通过服务分离来防范 DoS 或 DDoS。无论您有一台服务器还是十台服务器,这都会导致您的网站瘫痪。
  4. 您仍然面临每个系统上的服务被恶意脚本劫持的风险。FTP 区域可能会感染恶意软件,然后攻击其他服务器,或者可以运行恶意脚本来帮助将恶意软件分发给其他人,或者可以劫持您的系统进行 DDoS 攻击其他系统。PHP 服务器可能会被代码注入,然后攻击其他系统。您的数据库服务器可能会被添加恶意代码。这些事情是服务器分离无法解决的问题。

最终,虽然这可能有利于服务器崩溃时的故障转移和更快的恢复(假设您进行了良好的备份),但并没有太多额外的好处。服务分离不会带来真正的额外安全优势。当然,您可以将服务彼此分开,但这并不能为成千上万的攻击媒介提供额外的保护。


修正:

在浏览了信息安全 SE 网站后,我在此修改我的声明:

  1. 任何面向 Web 的区域都存在受到攻击的风险。在理想情况下,您的 PHP 应用程序将无法执行任何它们不应该执行的操作。但在现实世界中,情况并非如此,针对 PHP 网站和服务的攻击途径多种多样。
  2. 我不知道您的网络结构。我不知道这些是否都是 VPS,或者所有服务器(虚拟或其他)是否都在企业级防火墙后面,您可以在其中隔离内部通信并限制您的 Apache/PHP 服务器,以便可以从互联网访问它,但它只能通过特定端口等与您的数据库通信。如果您有这样的环境,并且它全部在内部而不是 VPS,并且您可以进行防火墙隔离,我会采用服务分离路线,并对所有服务器进行良好的备份管理。从那里,将 Apache/MySQL 放入可以通过 Web 端口从内部和外部访问的 DMZ,然后允许数据库服务器和 Apache/MySQL 之间以受限方式进行通信。
  3. 我正在假设您到底想要防范什么。如果您的服务器不在企业级环境中,则必须设置每台服务器以限制彼此之间的通信。如果它们都在 VPS 上,而不是都在同一个网络上,这会降低安全性,因为即使您限制了哪些 IP 可以访问数据库,您的数据库也必须具有面向 Web 的侦听器。这使得将所有内容放在一台服务器上并使用特定于本地主机的数据库服务器侦听器更加明智。
  4. 实际上,有成千上万的威胁可能成为问题。如果您谈论的是一般威胁,那么如果你们都在企业级防火墙后面的同一子网上,安全性就没有真正的区别。如果这些是 VPS,服务分离实际上会降低您的安全性。

最终故障转移能力取决于是否拥有良好的备份以及是否拥有可以快速部署以取代故障服务器的备份服务器。安全性则完全是另一回事,如果不具体说明您要应对的威胁,就无法提供完整的答案。服务分离是一个开始,但它实际上并没有提供那么多额外的安全性,您永远不应该依赖服务分离的安全性来保护您。

相关内容