背景
近些年针对kubernetes的攻击呈现愈演愈烈之势,一旦攻击者在kubernetes集群中站稳脚跟就会尝试渗透集群涉及的所有容器,尤其是针对访问控制和隔离做的不够好的集群受到的损害也会越大。例如由unit 42研究人员检测到的TeamTNT组织的恶意软件Siloscape就是利用了泄露的AWS凭证或错误配置从而获得了kubelet初始访问权限后批量部署挖矿木马或窃取关键信息如用户名和密码,组织机密和内部文件,甚至控制集群中托管的整个数据库从而发起勒索攻击。根据微步在线的统计上一次遭受其攻击的IP地址90%以上属于中国,因此需要安全人员及时关注并提前规避风险。Siloscape具体攻击流程如图1所示。

Kubernetes集群中所有的资源的访问和变更都是通过kubernetes API Server的REST API实现的,所以集群安全的关键点就在于如何识别并认证客户端身份并且对访问权限的鉴定,同时K8S还通过准入控制的机制实现审计作用确保最后一道安全底线。除此之外K8S还配有一系列的安全机制(如Secret和Service Account等)共同实现集群访问控制的安全,具体请求如图2所示:

图 2-Kubernetes API请求
其中用户所控制的kubectl即每个Node节点都会启用的进程,可以把kubelet理解成【Server-Agent】架构中的agent,用来处理Master节点下发到本节点的任务,管理Pod和其中的容器,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。Kubelet会在API Server上注册节点信息,定期向Master汇报节点资源使用情况。如果没有做好相关的权限管控或其遭受了任何的攻击都可能导致对k8s集群更广泛的危害。如以下图3操作。

图 3-Kubectl操作
K8S认证鉴权
认证阶段(Authentication)
认证阶段即判断用户是否为能够访问集群的合法用户,API Server目前提供了三种策略多种用户身份认证方式,他们分别如下表1:

表 1-认证
其中X509是kubernetes组件间默认使用的认证方式,同时也是kubectl客户端对应的kube-config中经常使用到的访问凭证,是一种比较安全的认证方式。
鉴权阶段(Authorization)
当API

本文深入探讨了Kubernetes集群中的Kubelet访问控制机制,包括认证、鉴权、TLS bootstrapping,并分析了Kubelet提权的攻击路径和缓解措施。通过具体的攻击案例,强调了保护Kubelet凭证的重要性,以防止恶意攻击者窃取TLS Bootstrap凭据并获取集群管理员权限。
最低0.47元/天 解锁文章
631

被折叠的 条评论
为什么被折叠?



