反向代理——它应该是不同的技术堆栈吗?

反向代理——它应该是不同的技术堆栈吗?

我对我正在考虑的反向代理设置有一个怀疑的问题。

我目前在 DMZ 中有一对负载平衡应用服务器(下图中的 S1、S2)。它们接受来自外部客户端的入站请求。它们还连接到内部网络资源(例如数据库服务器、消息代理)

DMZ 设置非常标准:两个防火墙 - 面向内部和面向外部。面向外部的防火墙仅允许外部请求通过特定端口进入特定服务器资源。面向内部的防火墙仅允许 DMZ 服务器打开与内部网络资源(例如 DB 服务器、消息代理)的指定连接

现在,我有一个架构提案,指出这种设置不安全。该提案要求将两个 DMZ 服务器移到内部网络中。在 DMZ 中,它们将被“反向代理”服务器(下图中的“RP”)取代。“RP”将接受入站请求并将其代理到 S1/S2。这里的关键卖点是内部服务器发起与 DMZ 中的‘反向代理’服务器的网络连接。

所以这:

 [EXTERNAL]       [DMZ]        [INTERNAL]

 Client -->  ||    S1/S2    || --> DB,MQ

...被替换为:

 [EXTERNAL]       [DMZ]        [INTERNAL]

 Client -->  ||      RP     || <-- S1/S2 --> DB,MQ

RP 本质上是 S1/S2 的精简版(相同的技术栈)。它通过由 S1/S2 发起的持久连接将外部请求传达给 S1/S2。

我的问题:鉴于 RP 的技术堆栈与 S1/S2 相同(相同的技术,更少的代码)——新的设置如何提供显著的额外保护?

应用程序攻击不会顺利到达 S1/S2 吗?具体来说,如果您攻破了 RP,那么也会攻破 S1/S2。这实际上不会恶化风险状况吗(因为 S1/S2 现在位于内部网络中)?


添加一些信息并扩展上面的观点:

  1. 负载均衡器 (LB) 在​​此设置中本质上是透明的(即 RP 不是 LB)。由于各种原因,LB 无法以任何方式终止入站请求。

  2. 就我个人而言非常对 RP 增加的安全性持怀疑态度。我的理由是:如果 RP 以某种方式完全被攻破(例如缓冲区溢出/shellcode),它就可以通过内部网络中与 S1/S2 的连接轻松进行(无论谁发起连接 - 它就在那里),然后在 S1/S2 上进行类似的攻击(感谢类似的技术)。现在问题更加严重,因为被攻破的 S1/S2 现在位于软肋(即内部网),而不是 DMZ。

答案1

虽然前端和后端的不同技术在名义上提高了安全性,但其数量却颇具争议。简而言之,前端被攻陷并不意味着后端或网络的任何其他部分也被攻陷。虽然可以说攻陷前端的任何方法现在都可以在后端实施,但并不一定意味着该方法对新目标有效。

话虽如此,如果前端和后端的系统和配置几乎相同,那么是的,通过对其中一个使用不同的技术,您确实可以获得额外的安全性。

无论您使用相同还是不同的技术,我建议在每个系统上使用不同的帐户。

答案2

首先,大多数负载均衡器都充当反向代理维基百科 f5 开发中心。但是,负载平衡器(或反向代理)的架构方式在保护方面存在差异。注意:我将在以后交替使用术语“负载平衡器”(LB)和“反向代理”(RP)。

LB 通过充当所有通信的中介来提供额外的安全性。大多数企业级 LB 充当第 7 层代理。对于 Web 流量,客户端 HTTP 会话在 LB 处完全终止,LB 重新建立与服务器的服务器端 HTTP 连接。通过强制第 7 层 (l7) 终止,可以审查、清理整个有效负载,并将其干净且优化地发送回服务器。在许多情况下,LB 还会将 Web 应用程序防火墙作为附加模块实现,以在将流量发送回 Web 服务器之前进一步检查流量是否存在异常模式。

上述模型中 LB 提供的保护相对强度取决于流量是在 l7 还是更低级别终止。某些负载均衡器可能仅在网络层工作,这基本上意味着 LB 可能只是在流量从客户端流向服务器端时重写 IP/端口信息。此外,完全可以配置能够进行 l7 完全代理的 LB,使其仅在网络/传输层上工作以提高性能(l7 终止需要大量资源)。在这种情况下,负载均衡器可能不会尽可能彻底地清理流量。

回到您的模型,如果 RP=LB,那么从架构角度来看,所提出的架构比当前模型增加了额外的复杂性。但是,这里的关键是,对于所提出的模型,S1/S2 发起到 DMZ 的出站连接。攻击者可以破坏 RP,但无法建立返回 S1/S2 或内部网络的新会话。但是,如果 S1/S2 或 DB、MQ 中存在应用程序漏洞,攻击者可以预见地通过隧道返回网络以访问 S1/S2。此外,由于“RP”使用与 S1/S2 相同的技术堆栈,因此 S1/S2 中的任何漏洞也可能存在于“RP”中。但是,如果“RP”不可破解,那么所提出的模型将提高安全态势,因为 S1/S2 的网络堆栈受到保护,攻击必须首先针对应用程序堆栈。

虽然这种模型增加的安全价值值得商榷(如果攻击者破坏了 dmz/int fw,那么他们就可以公开访问内联网,并且这种模型无法防御常见的鱼叉式钓鱼攻击),但对于合规人员来说,这种模型可能更容易接受。对于 PCI 合规性来说尤其如此,因为任何可以访问 CHD 环境的系统也都在范围内。在上述情况下,整个 DMZ 可能都在范围内,但如果您从 CHD 环境建立出站连接,则只有“RP”会被添加到范围中。虽然我并不是暗示情况确实如此,但我见过架构师以这种方式来缩小 PCI 范围。

相关内容