反向代理 – 它应该是一个不同的技术堆栈?

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

我目前在DMZ中有一对负载均衡的应用程序服务器(下图中的S1,S2)。 这些接受来自外部客户的入站请求。 他们还连接到内部networking资源(例如数据库服务器,消息代理)

DMZ设置非常标准:两个防火墙 – 内部和外部的。 外部防火墙只允许外部请求特定端口上的特定服务器资源。 面向内部的防火墙只允许DMZ服务器打开到内部networking资源的指定连接(例如数据库服务器,消息代理)

现在,我有一个架构提案说明这个设置是不安全的。 该提案要求将两台DMZ服务器移入内部networking。 在DMZ中,它们将被“反向代理”服务器(下图中的“RP”)替代。 “RP”将接受入站请求并将其代入S1 / S2。 这里的关键卖点是内部服务器启动到DMZ中“反向代理”服务器的networking连接。

所以这:

[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相同(技术相同,代码较less),新设置如何提供显着的额外保护?

应用程序攻击不会受到S1 / S2的干扰吗? 具体来说,如果你妥协的RP,你也可以妥协S1 / S2。 这实际上不会使风险状况恶化(因为S1 / S2现在在内部networking中)?


添加一些信息,并扩大上述点:

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

  2. 就个人而言,我对RP的安全性持怀疑态度。 我的推理:如果RP在某种程度上完全被破坏了(例如缓冲区溢出/ shellcode),那么它可以轻松地连接到内部networking中的S1 / S2(无关谁启动连接 – 在那里),然后类似利用S1 / S2(感谢类似的技术)。 现在的问题正在恶化,因为受损的S1 / S2现在位于软性腹部(即内联网),而不是DMZ。

虽然前端和后端的不同技术在安全性方面名义上有所增加,但这个数字还是值得商榷的。 简而言之,仅仅因为前端受到攻击并不意味着networking的后端或其他任何技术都会受到影响。 尽pipe可以说,无论用什么方法来妥协前端,现在都可以在后端实施,但这并不一定意味着这种方法对新的目标是有效的。

这样说,如果你有几乎相同的系统和前端和后端configuration,那么是的,你可以通过使用不同的技术获得额外的安全。

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

首先,大多数负载平衡器都可以作为反向代理wikipedia f5 devcentral 。 但是,如何构build负载平衡器(或反向代理)的固有保护存在差异。 注意:我将使用术语“负载平衡器”(LB)和“反向代理”(RP)互换地前进。

LB通过充当所有通信的媒介提供了额外的安全性。 大多数企业级LB充当第7层代理。 对于Webstream量,客户端HTTP会话在LB完全终止,LB重新build立服务器端HTTP连接返回到服务器。 通过强制终止层7(17),可以检查,擦除整个有效载荷,并将其发送回服务器,并进行优化。 在许多情况下,LB还将Web应用程序防火墙作为附加模块,以便在将stream量发送回Web服务器之前,进一步检查stream量是否存在exception模式。

上述模型中LB提供的保护的相对强度取决于stream量是否在17或更低的水平被终止。 一些负载均衡器只能工作在networking层,这就意味着LB可能只是在stream量从客户端到服务器端重写IP /端口信息。 另外,完全有可能configuration一个只能在networking/传输层上工作的完全代理的LB,以提高性能(终止是资源密集型的)。 在这种情况下,负载均衡器可能不会尽可能彻底地清除stream量。

回到你的模型,如果RP = LB,那么从架构的angular度来看,所提出的架构比当前模型增加了额外的复杂性。 然而,这里的关键在于所提出的模型,S1 / S2启动到DMZ的出站连接。 攻击者可能会损害RP,但不能build立一个新的会话回到S1 / S2或内部networking。 但是,如果在S1 / S2或DB,MQ中存在应用弱点,攻击者可以预见到隧道回到networking访问S1 / S2。 此外,由于“RP”使用与S1 / S2相同的技术栈,S1 / S2中的任何弱点都可能存在于“RP”中。 然而,如果“RP”不是可破坏的,那么所提出的模型增加了安全态势,因为S1 / S2的networking堆栈被保护,并且攻击必须首先瞄准应用堆栈。

虽然这个模型增加了安全价值(如果一个攻击者打破了dmz / int fw,那么他们就可以打开intranet并且这个模型不能防止普通的钓鱼攻击),但是这样的模型可能更能被接受一个遵纪守法的人而不是。 在符合PCI要求的情况下,任何进入CHD环境的系统也都在范围之内。 在上述情况下,整个DMZ可能在范围内,但是如果您从CHD环境中build立了出站连接,那么只有“RP”将被添加到范围。 尽pipe我并不是暗示这种情况,但我已经看到架构师正在通过这种方式来缩减PCI范围。