目标VPC服务器FROM公共服务器的私有IP地址



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

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

ExternalSrv处理来自公众的请求,当然,这些请求来自ExternalSrv的公共IP地址。ExternalSrv调用InternalSrv来完成部分工作。

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

我发现ExternalSrv在请求InternalSrv的私有IP地址时总是使用其公共IP地址。因此,每当ExternalSrv的公共IP地址发生变化(停止/启动、新实例、更多实例等(时,安全组都需要使用该地址进行更新。这似乎是正在进行的维护中的一个脆弱点。

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

任何见解都将不胜感激。

票据

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

  • 安全组可以指其他安全组
  • 流量停留在专有网络内(如果通过公共IP进行通信,流量将退出专有网络,然后返回(
  • 它更便宜(从VPC出来然后再回来的流量要收取1c/GB的费用(

适用于您情况的最佳安全设置是:

  • ExternalSrv(SG-External(上创建一个安全组,该组将根据需要允许入站流量(例如端口80443(,以及默认的";允许所有";出站流量
  • InternalSrv(SG-Internal(上创建允许来自SG-External的入站流量的安全组

也就是说,SG-Internal在其规则中专门引用了SG-External。这样,ExternalSrv将接受入站流量,而无需知道其IP地址。它还允许将来将其他服务器添加到安全组,并允许它们访问。

是的,您可以简单地添加一条规则来限制对VPC的CIDR的入站访问,但良好的安全性始终是指具有多层安全性。限制访问将减少潜在的攻击媒介。

最新更新