【问题标题】:GCP: Allowing Public Ingress Web Traffic from the Load Balancer ONLYGCP:仅允许来自负载均衡器的公共入口 Web 流量
【发布时间】:2020-06-03 07:15:10
【问题描述】:

免责声明:我来自 AWS 背景,但对 GCP 比较陌生。我知道存在许多类似的问题(例如,herehere 等),但由于仍然缺少确切/详细的说明,我仍然无法让它工作。所以请耐心等待我再问一次。

我的简单设计:

公共 HTTP/S 流量(入口) >> GCP 负载均衡器 >> GCP 服务器

GCP 负载均衡器持有 SSL 证书。然后它使用端口 80 与服务器进行下游连接。因此,对服务器的 LB 只是 HTTP。

我的问题:

如何防止传入的 HTTP/S 公共流量直接到达 GCP 服务器?相反,只允许负载均衡器(以及它的健康检查流量)?

到目前为止我尝试了什么:

我进入防火墙规则并从0.0.0.0/0 中删除了之前允许的端口 80/443(入口流量)规则。然后,添加(允许)负载均衡器的外部 IP 地址。

此时,我只是期望公共流量应该被拒绝,但负载均衡器的。但实际上,两者似乎都被拒绝了。没有任何东西到达服务器了。负载均衡器的外部 IP 似乎未被识别。

后来我还注意到“健康检查”也不再被识别。因此,健康检查无法访问服务器,然后失败。因此,负载均衡器删除了实例。

还请注意:我不能采用简单地删除服务器上的外部 IP 的方法。 (虽然很多人说这可行。)但我们仍然希望保持对服务器的直接 SSH 访问(不使用堡垒实例)。因此,我仍然需要每个 Web 服务器上的外部 IP。

非常感谢任何清晰(和善意)的说明。谢谢大家。

【问题讨论】:

  • 确认一下,您已经创建了一个入口防火墙规则,允许来自 35.191.0.0/16130.211.0.0/22 IP 范围的流量按标签定向到您的 VM 实例,我说的对吗?
  • @LundinCast 谢谢。就是这样!

标签: security google-cloud-platform google-compute-engine load-balancing firewall


【解决方案1】:

您可以在使用 HTTP(S) load balancer 时在负载平衡器和后端服务器之间设置 HTTPS 连接。要实现这个目标,您应该在后端服务器上安装 HTTPS 证书并配置 Web 服务器以使用它们。如果您决定完全切换到 HTTPS 并在后端服务器上禁用 HTTP,您也应该将运行状况检查从 HTTP 切换到 HTTPS。

要在删除允许从 0.0.0.0/0 连接到端口 80 和 443 的默认防火墙规则后再次运行健康检查,您需要将子网 35.191.0.0/16130.211.0.0/22 列入白名单,它们是源 IP 范围用于健康检查。您可以在documentation 中找到如何操作的分步说明。之后,对您的网络服务器的访问仍然受到限制,但您的负载平衡器将能够使用运行状况检查并为您的客户提供服务。

【讨论】:

  • 哦,我所缺少的只是两个35.191.0.0/16130.211.0.0/22 IP!我认为我们需要使用负载均衡器的实际外部 IP 本身。但显然不是。在允许这 2 个然后删除 0.0.0.0/0 之后,一切正常!非常感谢。
猜你喜欢
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 2023-02-15
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多