云安全攻防(十一)之 容器编排平台面临的风险

news2024/10/7 10:17:53

前言

容器技术和编排管理是云原生生态的两大核心部分——前者负责执行,后者负责控制和管理,共同构成云原生技术有机体,我们以 Kubernetes 为例,对容器编排平台可能面临的风险进行分析

容器编排平台面临的风险

作为最为流行的云原生管理与编排系统,Kubernetes具有强大的功能,但同时也具有较高的程序复杂性。我们知道,风险和程序复杂性之间具有一定程度的关系,不过要分析一个复杂系统的风险并不容易

以下是Kubernetes的架构图:

在这里插入图片描述

一个常见的Kubernetes集群,由一个Master节点和三个 Worker 节点组成,Pod 之间借助CNI插件Flannel 实现通信。 Kubernetes 自身的系统Pod(kube-system命名空间内的Pod)主要运行在Master 节点上,除此之外,每个 Worker 节点上也分别有一个 Flannel Pod 和 kube-proxy Pod,所有业务 Pod 分布在三个 Worker 节点上。另外,每个节点上还有一个 Kubelet 服务,负责管理容器

事实上,编排系统和容器之间并非完全独立,列如,我们在Kubernetes集群中需要以 YAML 声明式文件的形式来创建 Pod,而 Pod 只是 一个在逻辑上的概念,实际由一个或者多个容器组成,对容器的配置须以 Pod 的配置方式下发

我们主要从 Kubernetes的接口、网络、访问控制机制和软件漏洞四个方面来讨论容器编排系统所面临的风险

容器基础设施存在的风险

在 Kubernetes 的环境中,容器基础设施面临的风险主要有以下几点:

  • 不安全的第三方组件、大肆传播的恶意镜像和极其容易泄露的敏感信息, Kubernetes提供了 ConfigMaps 和 Secrets 两种资源来单独存储常规配置和敏感信息
  • 不安全的容器应用、不受限制的资源共享和不安全的配置与挂载
  • 集群网络存在的风险
  • 访问控制机制存在的风险,也就是容器管理程序接口存在的风险
  • 容器的软件漏洞

Kubernetes 组件接口存在的风险

Kubernetes 中组件漏洞众多,绝大多数组件以基于 HTTP 或 HTTPS 的 API 形式提供服务,其中,我们日常接触比较多的服务及其端口如下表所示:

组件默认端口说明
API Server6443基于HTTPS的安全端口
API Server8080不安全的HTTP端口,不建议启用
Kubelet10248用于检查 Kubelet 健康状态的 HTTP 端口
Kubelet10250面向 API Server 提供服务的 HTTPS 端口
Dashboard8001提供 HTTP服务的端口
etcd2379客户端与服务端之间通信的端口
etcd2380不同服务端实例之间通信的端口

接下来,我们对这些服务进行风险分析:

API Server

默认情况下,API Server 在 8080 和 6443 两个端口提供服务,其中 8080端口提供的是没有 TLS 加密的 HTTP 服务,且所有达到该端口的请求将绕过所有认证和授权模块(但是仍然会被准入控制模块所处理)。保留该端口主要是为了方便测试及集群初启动

然而生产环境开放 8080 端口,即使绑定本地回环地址(localhost)也是很危险的。如果将该端口暴露在互联网上,那么任何网络可达的攻击者都能通过该端口直接与 API Server 交互,继而控制整个集群

相比之下,6443端口提供的是使用 TLS 加密的 HTTPS 服务,到达的请求必须通过认证和授权机制才能被成功处理。在认证和授权机制配置正确的情况下,6443 端口提供的服务和安全性会更高

Dashboard

默认情况下,我们需要先执行 Kubectl proxy,然后才能通过本地8001端口访问 Dashboard 。但是,如果直接将Dashboard端口映射在宿主机的节点,或者在执行 Kubectl proxy时指定了额外地址参数,那么所有能够访问到宿主机的用户,包括攻击者,都将能够直接访问 Dashboard

kubetcl proxy --address 0.0.0.0 --accept-hosts='^*$'

另外,默认情况下Dashboard 需要登陆认证,但是,如果用户在 Dashboard 的启动参数添加了 --enable-skip-login 选项,那么攻击者能够直接点击 Dashboard 界面 ”跳过“ 按钮,无需登录便可直接进入Dashboard

Kubelet

我们知道,API Server 是整个Kubernetes的神经中枢,以 RESTful API的形式对外提供了大量的应用接口。事实上,Kubelet 也提供了 RESTful API 服务,供 API Server 调用以获取或改变某个Kubernetes 节点上的资源状态

默认配置下,Kubelet 在 10250 端口开放 API服务,另外还监听 10248端口,以供其他组件检查 Kubelet 的运行状态:

curl http://IP:10248/healthz

10248 端口服务相对简单,不存在特别的风险,但10250端口却未必。默认情况下,API Server 在访问 Kubelet 的 API 时需要使用客户端证书,相对来说比较安全,但是还是有列外的情况:

1)攻击者通过某种方式窃取了 API Server 访问 Kubelet 的客户端证书
2)将Kubelet的 --anonymous-auth 参数设置为 true ,且 authorization mode 设置为 AlwaysAllow

如果出现了上述的情况,则网络攻击者都能够直接将 Kubelet 进行交互,从而实现对其所在节点的控制

etcd

Kubernetes集群内的各种资源及其状态均存储在etcd中,如果有办法读取etcd中的数据,就可能获取高权限,从而控制集群。目前,etcd 启动后监听 2379 和 2380 两个端口,前者用于客户端连接,后者用于多个etcd 实例之间的对端通信。再多节点的集群中,为了实现高可用etcd往往在节点IP上(非本地IP)监听,以实现多节点之间的互通、这可能允许外部攻击者访问etcd

默认情况下,两个端口提供的服务都需要相应证书才能访问(禁止匿名访问),这为etcd 的安全性提供了保障。如果攻击者窃取了证书、或者用户将etcd 设置为 允许匿名访问,那么攻击者就可能直接访问 etcd 并窃取数据

集群网络所存在的风险

为了实现集群 Pod 间相互通信,在安装部署 Kubernetes 后,我们往往还要额外安装一个网络插件,常见的网络插件有 Flannel、Calico 和 Cilium 等

在没有其他网络隔离策略和 Pod 安全策略的默认情况下,由于 Pod 与 Pod 之间彼此可连通,且 Pod 内的root用户具有 CAP_NET_RAW权限,集群内部可能发生网络探测、嗅探、拒绝服务和中间人攻击等网络攻击

访问控制机制存在的风险

Kubernetes 中的访问控制机制主要由认证机制、授权机制和准入机制三个部分组成,每一个部分通常会有一种或多种具体实现的机制可供选择。如果访问控制过于宽松,高权限账户可能会滥用,从而对Kubernetes 自身及正在运行的容器产生威胁,除此之外,如果允许针对Kubernetes 的未授权访问,攻击者可能借此直接获得集群管理员的权限

无法根治的软件漏洞

作为一个复杂系统,Kubernetes自然被曝出许多安全漏洞,这类自然也属于 Kubernetes 所面临的的风险

参考资料:《云原生安全-攻防实践与体系构建》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/878417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode150道面试经典题-- 快乐数(简单)

1.题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&am…

OpenLayers实战,高德GCJ-02坐标系转WGS-84坐标系

专栏目录: OpenLayers实战进阶专栏目录 前言 本章实现高德GCJ-02坐标系转WGS-84坐标系。日常开发中经常遇到源坐标高德的情况,这时候如果地图不是高德,而是使用的wgs84坐标系的地图,或者其他坐标系的情况下,就会导致位置偏移,本章就是解决高德坐标偏移问题。 二、依赖…

Detecting Twenty-thousand Classes using Image-level Supervision

Detecting Twenty-thousand Classes using Image-level Supervision 摘要背景方法PreliminariesDetic:具有图像类别的检测器loss技术细节扩展Grad-CAMGrad-CAM原理 总结 摘要 摘要 由于检测数据集的规模较小,目前的物体检测器在词汇量方面受到限制。而图像分类器的数…

深入了解Linux运维的重要性与最佳实践

Linux作为开源操作系统的代表,在企业级环境中的应用越来越广泛。而在保障Linux系统的正常运行和管理方面,Linux运维显得尤为关键。本文将介绍Linux运维的重要性以及一些最佳实践,帮助读者更好地了解和掌握Linux系统的运维技巧。 首先&#xf…

【Linux初阶】system V消息队列 + system V信号量

文章目录 一、system V消息队列(了解)二、system V信号量(了解)1.信号量是什么2.临界资源和临界区3.互斥4.为什么要信号量 三、IPC资源的组织方式结语 一、system V消息队列(了解) 消息队列提供了一个从一…

玩转IndexedDB,比localStorage、cookie还要强大的网页端本地缓存

随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据。 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的大小不超过 4K…

回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测

回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测; 2.运行环…

找到链表的第一个入环节点

1.题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统…

会玩这 10 个 Linux 命令,一定是个有趣的 IT 男!

Linux当中有很多比较有趣的命令,可以动手看看,很简单的。 1.rev命令 一行接一行地颠倒所输入的字符串。 运行: $rev如输入:shiyanlou shiyanlou2.asciiview命令 1.先安装aview $sudo apt-get install aview2.再安装imagema…

zabbix案例--zabbix监控Tomcat

目录 一、 部署tomcat 二、配置zabbix-java-gateway 三、配置zabbix-server 四、配置zabbix-web界面 一、 部署tomcat tar xf apache-tomcat-8.5.16.tar.gz -C /usr/local/ ln -sv /usr/local/apache-tomcat-8.5.16/ /usr/local/tomcat cd /usr/local/tomcat/bin开启JMX…

如何解决docker中出现的“bash: vim: command not found”

目录 问题描述: 问题解决: 问题描述: 在docker中,想要执行vim编辑文件,弹出“docker bash: vim: command not found“(如下图),请问该如何解决? 问题解决: …

使用维纳过滤器消除驾驶舱噪音(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

管理类联考——逻辑——论证逻辑——汇总篇——因果推理

因果推理的逻辑方法(穆勒五法) 确定现象之间因果关系的方法有五种: 求同法、求异法、求同求异并用法、共变法、剩余法。这五种方法统称为穆勒五法。用穆勒五法确定的因果关系具有或然性。 PS:求同球童;求异球衣,求同…

设计模式——建造者(Builder)模式

建造者模式(Builder Pattern),又叫生成器模式,是一种对象构建模式 它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。建造者模式是一步一步创建一个复杂的对象,…

YARN框架和其工作原理流程介绍

目录 一、YARN简介 二、YARN的由来 三、YARN的基本设计思想 四、YARN 的基本架构 4.1 基本架构图 4.2 基本组件介绍 4.2.1 ResourceManager 4.2.1.1 任务调度器(Resource Scheduler) 4.2.1.2 应用程序管理器(Applications Manager) 4.2.1.3 其他…

官方已经宣布了,2023年下半年软考各科实行机考

软考办官方通知 我认为,第一次参加软考机考的考生会有好处,因为新政策在第一年执行时一般不会太难。我非常好奇如何在论文中画图。 下面,我将从一个曾参加软考高级水平考试的人的角度,讲述机考的优缺点,并分享我自己的…

xxljob搭建(内网穿透)

调度中心搭建 先从码云或者github上将项目拷贝到本地,选择最新的release分支拷贝下来的xxl-job-admin模块就是调度中心,我们需要做的有两点,第一点将doc/db/tables_xxl_job.sql执行,第二点修改xxl-job-admin的application.proper…

恒运资本:算力股爆发,地产股全线下挫,海外机构调研股出炉

60股近期获海外组织调研,医疗龙头最受组织重视。 今日早盘三大指数全线低开,延续调整走势,上证指数跌1.01%,深证成指跌1.35%,创业板指跌1.6%。AI概念股逆市走强,算力、数据要素等方向领涨,朗威股…

从小白到大神之路之学习运维第79天-------Kubernetes网络组件详解

第四阶段 时 间:2023年8月14日 参加人:全班人员 内 容: Kubernetes网络组件详解 目录 一、Kubernetes网络组件 (一)Flannel网络组件 (二)Calico 网络插件 (1)…

U盘数据如何保密?U盘数据加密软件合集

当我们将重要数据存放在U盘中时,必须要保障U盘的安全,以避免数据泄露。那么,U盘数据该如何保密呢?下面我们就来盘点一下那些好用的U盘数据保护方法。 U盘写保护 起初U盘写保护是专门为U盘防病毒而设计的,写保护后会将…