确保 Kubernetes 安全:不要低估错误配置带来的风险

2023-11-10 11:12

本文主要是介绍确保 Kubernetes 安全:不要低估错误配置带来的风险,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Kubernetes (K8s) 被全球超过 60% 的组织部署,是云计算领域采用最广泛的容器编排系统。K8s 集群已成为希望有效编排容器化应用程序的从业者的首选解决方案,因此这些集群通常包含各种软件、服务和资源,使用户能够相对轻松地部署和扩展应用程序。

为了支持典型的 K8s 环境操作,集群通常被授予对其他环境的访问权限,例如工件存储库、CI/CD 环境、数据库等。因此,K8s 集群可以存储客户数据、财务记录、知识产权、访问凭证、机密、配置、容器镜像、基础设施凭证、加密密钥、证书以及网络或服务信息。由于如此多的集群包含暴露在互联网上的潜在有价值和利润丰厚的数据,K8s 为威胁行为者提供了一个诱人的目标。随着配置错误的组织数量的增加,这种风险也会不断升级,导致 K8s 集群暴露并容易受到攻击。

Aqua Nautilus在最近的研究中发现,在三个月的时间里,超过 350 个信誉良好的组织(其中一些是财富 500 强)和开源项目完全暴露在世人面前。这种暴露持续几天到几个月。如果被威胁行为者利用,这些错误配置可能会导致严重的安全漏洞。

在暴露的开源项目集群的情况下,如果被攻击者利用,它们可能会导致供应链感染媒介,从而影响数百万用户。Aqua Nautilus 研究人员发现,只需进行一次 Shodan 搜索即可识别组织配置错误的集群。

暴露的集群有什么风险?

在三个月的时间里,Aqua Nautilus 使用 Shodan 进行了一系列单独的搜索。通过这些搜索,该团队查明了超过 350 个连接到有风险的 K8s API 服务器的不同 IP 地址。其中至少 60% 遭到破坏,并开展了部署恶意软件和后门的活动。

K8s 集群通常包含机密,对 API 服务器的未经身份验证的访问可能会导致对这些机密的访问,因此对其进行开放访问使攻击者能够完全控制集群。更糟糕的是,K8s 集群通常不仅存储自己的秘密。在许多情况下,K8s 集群是组织软件开发生命周期 (SDLC) 的一部分,因此它授予对源代码管理 (SCM)、持续集成/持续部署 (CI/CD)、注册表和云服务的访问权限提供商(CSP)。

这些秘密通常包含有关内部或外部注册表的信息。在许多情况下,开发人员构建了注册表的配置文件(例如“.dockerconfig”),其中包含指向其他环境和机密或凭据(包括 Docker Hub、云服务提供商和内部管理的)的链接。威胁行为者可以使用这些凭证来扩大他们的影响范围。他们甚至可以毒害注册表(如果密钥允许的话),以便在网络中的其他系统上运行恶意代码。

真实世界的曝光示例

该团队发现了不安全的 K8s API 服务器的实时示例,其中包含与各种环境相关的各种附加秘密。其中包括 GitHub 等 SCM 环境、Jenkins 等 CI 平台、Docker Hub 等各种注册表、Redis 或 PostgreSQL 等外部数据库服务等等。SCM 访问令牌允许攻击者访问组织的代码。在某些情况下,攻击者甚至可以修改它来破坏组织(如果密钥允许的话)。

一些确定的配置错误的集群只能访问几个小时,但 Aqua Nautilus 的数据收集工具设法识别并记录了暴露的信息。这凸显了有关此类错误配置的一个发人深省的事实;即使及时检测到并纠正,具有自动化功能、准备充分的攻击者仍然可以在后期访问 K8s 集群或渗透 SDLC 的各种其他元素。在安全领域,自动化很大程度上是一条双向路。只需一次有限的秘密暴露实例,威胁参与者就可以随意获得对您的集群的经过身份验证的访问。

组织应该注意哪些错误配置?

Aqua Nautilus 研究发现了组织中广泛存在并在野外被积极利用的两种常见错误配置。

1. 具有高权限的匿名用户

创建新集群时,需要考虑四件事:1)API 服务器是否暴露在互联网上;2)谁被授权与集群通信;3)他们拥有哪些特权;4) 是否有任何进一步的访问控制。在许多情况下(在本机 K8s 环境中,甚至在某些云提供商的托管集群中),集群默认设置为对互联网开放,并且有很多实际原因这样做。但是,这也意味着,如果扫描托管 API 服务器的 IP 地址,就会发现这是一个 K8s 集群,任何人都可以尝试连接到该集群。

此外,在许多情况下,默认情况下会启用对 K8s 集群的未经身份验证的请求。这意味着集群将接收来自任何人的请求。但是,默认情况下,匿名用户的请求没有权限。因此,它们将导致 403 回复,从而禁止访问。最后,准入控制需要有人主动创建。

图片

该团队已经看到了从业者将匿名用户角色与其他角色(通常是管理员角色)绑定的案例,这将他们的集群置于危险之中。这些错误配置的混合可能会让攻击者获得对 Kubernetes 集群的未经授权的访问,从而可能危及在集群上以及其他环境中运行的所有应用程序。

因此,您的组织可能只需一个 YAML 就可以避免灾难。一个简单的错误配置、一个简单的错误都可能导致集群暴露。这是一个现实世界中的错误示例:

图片

2.“Kubectl 代理”命令

Nautilus 观察到的另一个错误配置以前从未见过或发布过:“kubectl proxy”命令。使用具有特定标志的“kubectl proxy”命令时。一些出版物鼓励从业者出于多种目的使用“kubectl proxy”命令。例如,有一些关于 Kubernetes Dashboard 安装的教程鼓励用户运行代理命令,并且没有明确警告可能的影响。

运行“kubectl proxy”时,您会将经过授权和身份验证的请求转发到 API 服务器。当使用以下标志“--address=`0.0.0.0` --accept-hosts `.*`”运行命令“kubectl proxy”时,工作站上的代理现在将监听并将经过授权和身份验证的请求转发到 API从任何对工作站有 HTTP 访问权限的主机上的服务器,如下图所示。注意:权限与运行“kubectl proxy”命令的用户的权限相同。

图片

威胁是真实的

Aqua Nautilus 记录了许多针对其蜜罐的野外攻击,凸显了暴露的 K8s 集群所面临的威胁。事实上,60% 的集群正受到加密货币矿工的攻击。三个主要例子是 Lchaia/xmrig、SSWW 攻击和 Dero 活动。研究人员还发现了RBAC Buster 活动,该活动利用 RBAC 创建一个非常隐蔽的后门。最后,该团队报告了 TeamTNT 发起的一项新颖的高度攻击性的活动(第 1 部分,第 2 部分)。在此活动中,TeamTNT 正在搜索并收集云服务提供商代币(AWS、Azure、GCP 等)。

缓解建议

为了避免针对这些错误配置的大量活跃威胁活动的风险,保护云资源和集群,Nautilus 建议组织遵循以下五个步骤:

  1. 培训员工:组织必须投资培训员工,了解潜在风险、最佳实践和正确配置。这将最大限度地减少导致此类错误配置的人为错误。

  2. 保护“kubectl proxy”:确保“kubectl proxy”不暴露在互联网上。它应该设置在安全的网络环境中,并且只能由经过身份验证和授权的用户访问。

  3. 使用基于角色的访问控制 (RBAC):RBAC 是一项原生 Kubernetes 功能,可以限制谁可以访问 Kubernetes API 以及他们拥有哪些权限。避免将管理员角色分配给匿名用户。确保为每个用户分配适当的权限,并严格遵守最小权限原则。

  4. 实施准入控制策略:Kubernetes准入控制器可以在持久化之前拦截对Kubernetes API服务器的请求,使您能够定义和实施增强安全性的策略。该团队强烈建议采用准入控制来防止将任何角色与匿名角色绑定,这将强化 Kubernetes 集群的安全状况。

  5. 定期审核:对 Kubernetes 集群进行定期审核。这使您可以跟踪集群中执行的每个操作,帮助识别异常并采取快速补救措施。

通过采用这些缓解策略,组织可以显着增强其 Kubernetes 安全性,确保其集群免受常见攻击。

随着 Kubernetes 的发展和被更多企业使用,从业者必须熟悉它可能给组织带来的风险。重要的是要记住,K8s 中的安全性并不是静态的、一劳永逸的情况。集群中不断发生操作和事件,仅仅因为您的集群昨天是安全的,并不意味着它今天仍然安全。因此,手动检查集群是否存在已知的错误配置是不够的。如果您的组织使用 K8s,如果您不主动扫描,那么总会存在风险。


作者:Assaf Morag

更多技术干货请关注公号【云原生数据库

squids.cn,云数据库RDS,迁移工具DBMotion,云备份DBTwin等数据库生态工具。

这篇关于确保 Kubernetes 安全:不要低估错误配置带来的风险的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/382307

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还