security - 谷歌CP : Allowing Public Ingress Web Traffic from the Load Balancer ONLY

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

免责声明:我有 AWS 背景,但对 GCP 相对陌生。我知道存在许多类似的问题(例如 herehere 等),但我仍然无法使其工作,因为仍然缺少确切/详细的说明。所以请耐心等待我再次提问。

我的简单设计:

Public HTTP/S Traffic (Ingress) >> GCP Load Balancer >> GCP Servers

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

我的问题:

如何防止传入的 HTTP/S 公共(public) 流量直接到达 GCP 服务器?相反,只允许负载均衡器(及其运行状况检查流量)?

到目前为止我尝试过的:

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

此时,我只是希望公共(public)流量应该被拒绝,但负载均衡器的流量应该被拒绝。但实际上,两者似乎都被拒绝了。没有任何内容再到达服务器。负载均衡器的外部 IP 似乎无法识别。

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

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

任何明确(和善意)的指示将不胜感激。谢谢大家。

最佳答案

使用 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 中找到如何执行此操作的分步说明。 。之后,对您的网络服务器的访问仍然受到限制,但您的负载均衡器将能够使用运行状况检查并为您的客户提供服务。

关于security - 谷歌CP : Allowing Public Ingress Web Traffic from the Load Balancer ONLY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60294922/

相关文章:

node.js - Google Cloud Services 中 f1 微型实例中 node.js 进程的进程内存限制?

ruby - 如何使用 vagrant 在 GCE 实例上允许 HTTP 流量和端口 27017?

javascript - 在所有情况下都使用 new Function() 不安全吗?

windows - 当文件禁用读取共享时如何使用 ReadFile 读取数据

php - FILTER_SANITIZE_EMAIL 是否足够,或者还需要 mysql_real_escape_string 来避免 PHP/MySQL 中的安全问题?

node.js - 将 HLS 播放列表 list 文件和媒体片段文件直接上传到 GCP

google-app-engine - 我如何在 kubernetes 中使用谷歌云存储?

php - 如何防止 PHP 中的 SQL 注入(inject)?

sql - Google BigQuery - 使用 WITH 和 RAND() 的错误

kubernetes - 如何在GCE上的容器内使用gsutil从存储桶中复制文件