Kubernetes 安全系列之: 内部服务暴露

114 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情

背景

公司的安全部门已经通知您,黑客刚刚在社交媒体上发帖,声称他们可以通过利用Kubernetes服务访问内部网络,该服务可从互联网公开访问。请确认报告的真实性,并尽快关闭开放服务。

验证攻击

验证内部服务是否如报告的那样可以外部互联网访问,如果可以,攻击者将如何滥用它。

假设,目前公司集群中,已部署的资源如下:

在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

我们在浏览器中打开报告中攻击者用来访问服务的URL。

在这里插入图片描述

可以看到此服务如何允许我们在管理工具容器上运行任意命令,从而使外部攻击者访问公司网络内变得更加容易。

原因:

为何内部服务 admin-tool 应用会被暴露在集群外? (Tips:详见Service类型NodePort 作用)

解决:

只需要确保服务只在集群内部被访问即可,因此我们需要更改Serive Type类型

重写 admin-service服务,使得 admin-tool 只在内部访问

在这里插入图片描述

重新部署服务资源后,验证下确保服务不是公开的,而是可以从集群内访问的。 在集群中app POD 里执行 curl http://admin-service:8080.

在这里插入图片描述

我们再从公网访问, 发现这次服务已经无法打开,安全问题得以解决。

在这里插入图片描述

原文链接:

关注公众号: 云原生SRE