2

我有一个 k8s 集群,在带有外部 HTTPS 负载均衡器的 Ingress 后面运行服务,并且我有身份感知代理来保护我的系统。入口有一个公共 IP,当我使用 nmap 扫描它时,我看到以下开放端口:

PORT      STATE SERVICE
43/tcp    open  whois
53/tcp    open  domain
80/tcp    open  http
83/tcp    open  mit-ml-dev
84/tcp    open  ctf
85/tcp    open  mit-ml-dev
89/tcp    open  su-mit-tg
110/tcp   open  pop3
143/tcp   open  imap
443/tcp   open  https
465/tcp   open  smtps
587/tcp   open  submission
700/tcp   open  epp
993/tcp   open  imaps
995/tcp   open  pop3s
1084/tcp  open  ansoft-lm-2
1085/tcp  open  webobjects
1089/tcp  open  ff-annunc
1443/tcp  open  ies-lm
1935/tcp  open  rtmp
3389/tcp  open  ms-wbt-server
5222/tcp  open  xmpp-client
5432/tcp  open  postgresql
5900/tcp  open  vnc
5901/tcp  open  vnc-1
5999/tcp  open  ncd-conf
8080/tcp  open  http-proxy
8081/tcp  open  blackice-icecap
8085/tcp  open  unknown
8086/tcp  open  d-s-n
8088/tcp  open  radan-http
8089/tcp  open  unknown
8090/tcp  open  opsmessaging
8099/tcp  open  unknown
9100/tcp  open  jetdirect
9200/tcp  open  wap-wsp
20000/tcp open  dnp
30000/tcp open  ndmps

我的问题是为什么所有这些端口都是打开的,它是否从 IAP 打开,如果是这样,这就是为什么我能够在没有身份验证的情况下扫描似乎是 Ingress IP 的原因,最终我可以关闭除 HTTP/S 端口之外的所有端口为了安全?如果是 IAP,也许这些需要开放,以便为可能可用但不在我的集群中的不同服务转发不同的流量;这能解释这个吗?

任何提示都会很可爱,我已经 RTFMed 并且关于 Ingress 的所有内容似乎都指向它只接受 HTTP/S 流量并转发到服务/部署。这个 IAP 是让这些端口处于打开状态还是真的在 Ingress 上?它是与 Ingress 关联的 IP 地址。我是否需要向我的集群添加 FrontendConfig 来配置 Ingress 以关闭这些端口?

提前致谢!

4

1 回答 1

3

我收到了 Google Cloud Platform 出色支持团队的回复。谢谢谷歌!他们证实了我的假设,即这些端口对各种潜在服务开放,但我们的配置只允许我们向后端请求的内容。将其留在 stackoverflow 中,以防其他人需要此信息。

客户端使用您的 Kubernetes 负载均衡器的外部 IP 地址与 Google 前端 (GFE) 通信,而 GFE 使用内部 IP 地址与您的后端服务通信。GFE 实际上将流量转发到后端实例 [ 1 ]。每个 GFE 实际上都作为代理提供内容,而不是您的配置的一部分 [ 2 ]。

每个 GFE 作为其整体安全设计 [ 3 ] 的一部分为许多客户提供流量服务,并且您的 Kubernetes 负载平衡的外部 IP 地址在全球多个共享 GFE 服务器上进行编程。由于 GFE 不是您或您的负载均衡器配置所独有的,因此它还接受其他 TCP 端口上的流量。但是,其他端口上 GFE 的传入流量不会发送到您的后端。这样,GFE 仅通过对您配置的端口的请求采取行动来保护您的实例 - 即使它正在侦听更多。

因此,您会看到比预期更多的端口打开。

您可以在此处阅读有关此行为的更多信息 [ 4 ]。

于 2020-12-04T18:23:29.550 回答