目标 VPC 服务器来自 public 服务器的私有 IP 地址

Target VPC server FROM the private IP address of a public server

我有两个服务器:ExternalSrv 和 InternalSrv,在同一个 EC2 VPC 上。

我使用 Nodejs、Express 和 Axios 进行了非常简单的设置。

ExternalSrv 处理来自 public 的请求,这些请求当然会进入 ExternalSrv 的 public IP 地址。 ExternalSrv 调用 InternalSrv 来完成一些工作。

为了简化InternalSrv上的安全组入站规则,我想允许所有VPC IP地址,但没有别的。

我发现 ExternalSrv 在向 InternalSrv 的私有 IP 地址发出请求时总是使用其 Public IP 地址。因此,只要地址发生变化(Stop/Start、新实例、更多实例等),就需要使用 ExternalSrv 的 Public IP 地址更新安全组。这似乎是持续维护中的一个脆弱点。

这看起来应该很容易,但我一直在寻找答案很长一段时间。

如有任何见解,我们将不胜感激。

比尔

当同一 VPC 中的两个 Amazon EC2 实例相互通信时,最好通过 私有 IP 地址 执行此通信。这有几个好处:

  • 安全组可以参考其他安全组
  • 流量停留在 VPC 内(如果通过 Public IP 地址通信,流量将退出 VPC,然后返回)
  • 更便宜(从 VPC 传出然后返回的流量收取 1c/GB 的费用)

针对您的情况的 best-practice 安全设置是:

  • ExternalSrv (SG-External) 上创建一个安全组,根据需要允许入站流量(例如端口 80、443)以及默认的“允许所有”出站流量
  • InternalSrv (SG-Internal) 上创建一个安全组,允许来自 SG-External
  • 的入站流量

SG-Internal在其规则中具体引用了SG-External。这样,无需知道其 IP 地址即可接受来自 ExternalSrv 的入站流量。它还允许将来将其他服务器添加到安全组,它们也将被允许访问。

是的,您可以简单地添加一个规则来限制对 VPC 的 CIDR 的入站访问,但是良好的安全性总是与拥有多层安全性有关。限制访问将 cut-down 潜在的攻击媒介。