Kubernetes安全

Kubernetes 又称 k8s,是 Google 在 2014 年开源的一个用来管理容器的平台,以下是 k8s 架构图

Kubernetes 核心组件简介

k8s 主要由以下核心组件组成:

1. etcd(配置中心 & 状态存储)

  • 是一个高可用的 分布式键值数据库,用于持久化存储整个集群的所有状态数据;
  • 例如集群中所有节点、Pod、Service、ConfigMap 等资源的定义与状态都会记录在 etcd 中;
  • 所有组件都通过 API Server 间接与 etcd 交互。

2. API Server(集群的"中枢神经")

  • 是 Kubernetes 的唯一入口,提供 RESTful 风格的 API 接口;
  • 负责:
    • 用户、组件与集群的数据交互;
    • 身份认证(Authentication);
    • 权限控制(Authorization);
    • 数据校验与持久化;
    • API 注册与发现;
  • 所有对 Kubernetes 的操作(kubectl、controller、scheduler 等)都必须经过 API Server。

3. Controller Manager(控制器管理器)

  • 是一组控制器(Controller)的集合,负责持续地监控集群状态并进行自动化调节;
  • 常见控制器有:
    • Node Controller:节点健康检查
    • Replication Controller:副本数量维护
    • Endpoints Controller:Service 与 Pod 映射
    • Job Controller:任务生命周期管理
  • 实现集群的自愈能力自动扩缩容滚动更新等功能。

4. Scheduler(调度器)

  • 负责根据调度策略(资源需求、亲和性、污点容忍等)将 Pod 调度到最合适的节点上;
  • 工作流程:
    • 监听 API Server 中未调度的 Pod;
    • 评估所有可用节点;
    • 将调度结果写回 API Server;
  • 是实现 多租户资源优化调度策略 的核心组件。

5. Kubelet(节点守护进程)

  • 是运行在每个节点上的代理,负责:
    • 接收 API Server 下发的 Pod 配置;
    • 监控 Pod 状态并定期上报;
    • 管理容器的生命周期;
    • 管理 Volume(CVI)和 网络(CNI);
  • 通过调用容器运行时(CRI)真正执行容器操作。

6. Container Runtime(容器运行时)

  • 是负责镜像拉取、容器创建、启动、停止等的底层组件;
  • 常见运行时:
    • Docker(已弃用)
    • containerd(推荐)
    • CRI-O
  • 通过 CRI(Container Runtime Interface)与 Kubelet 通信,是运行 Pod 的基础。

7. Kube-proxy(网络代理)

  • 运行在每个节点上,负责处理 Service 的访问流量;
  • 主要作用:
    • 实现 Kubernetes Service 的服务发现
    • 通过 iptables 或 IPVS 实现负载均衡;
  • 保证集群内部 Pod 之间和对外的通信顺畅稳定。

K8s所面临的风险

K8s集群中常见的风险主要有下面5类:

  1. 容器基础设施存在的风险
  2. 组件接口存在的风险
  3. 集群网络存在的风险
  4. 访问控制机制存在的风险
  5. K8s自身漏洞带来的风险

其中第一项和前文docker安全基本一致,直接跳过

组件接口存在的风险

API Server 未授权访问
  • API Server 是集群的唯一资源操作入口;
  • 默认监听端口为 6443(HTTPS,带认证授权)和 8080(HTTP,默认未开启);
  • 若管理员错误开启了 8080 并暴露到公网,攻击者无需认证即可直接操作资源,控制整个集群。
Kubelet 未授权访问
  • Kubelet 是运行在每个节点上的代理,默认监听 10250(HTTPS)和 10248
  • 若 Kubelet 未配置认证,攻击者可远程访问节点容器、执行命令或窃取数据,造成节点失控;
  • 实战中常见攻击如执行 /exec/ 接口进入容器或获取运行日志。
Dashboard 风险
  • Dashboard 是 Kubernetes 提供的可视化 Web 控制台;
  • 默认监听本地端口 8001,安全版本要求登录认证;
  • 若管理员开启了"跳过登录"或通过反向代理暴露至公网,攻击者可能无需认证即可控制集群资源。
etcd 泄露风险
  • etcd 是 Kubernetes 的状态数据库,存储所有资源数据(如 Secrets、配置、服务状态等);
  • 默认监听端口为 2379(客户端)和 2380(节点间通信);
  • 如果未启用证书认证,或证书被泄露、匿名访问被开启,则攻击者可直接读取敏感信息,甚至通过写入配置控制集群行为。

集群网络存在的风险

Kubernetes 中的网络默认以「扁平化设计」为主,所有 Pod 默认彼此可通信,缺乏细粒度隔离:

  • Pod 与 Pod 之间网络默认全通
  • Pod 中容器默认具有 CAP_NET_RAW 权限,允许使用原始套接字进行 ARP 欺骗、网络扫描等操作;
  • 攻击者在突破某一 Pod 后,容易通过内网横向访问其他敏感 Pod 或组件,进一步扩大攻击面;
  • 若未配置 NetworkPolicy 或未启用 CNI 插件的隔离策略,风险极高。

访问控制机制存在的风险

Kubernetes 的安全访问控制由三部分组成:

  • 认证(Authentication):确认用户或组件的身份;
  • 授权(Authorization):决定是否允许其进行某项操作;
  • 准入控制(Admission Control):决定请求是否能进入 API Server 的处理流程。

常见风险:

  • 集群开启了匿名访问或默认绑定高权限角色(如将 system:anonymous 绑定至 cluster-admin);
  • RBAC 权限配置过于宽泛(如使用 * 表示资源与动作);
  • 准入控制插件未启用安全策略(如未启用 PodSecurity、ImagePolicy 等);
  • 攻击者一旦获得访问令牌(Token)、kubeconfig 文件或证书,可能在认证绕过的同时获取极高权限。

无法根治的软件漏洞

Kubernetes 自身也被爆出许多安全漏洞,这类自然也属于 Kubernetes 所面临的的风险


以上纯粹是理论知识,现在针对k8s或是docker的渗透已经完全不和之前一样了,我看一些比较老的书上基本都会说"云渗透和传统渗透的区别不大"。这句话在云刚刚开始起步的时候或许还应验,但是自从2017年后,大大小小各种产品的孵化,加上各种公有云,私有云,混合云,虚拟化集群,各种云原生产品进入企业落地,各个大大小小的企业都喊着"上云"的口号,导致现在云渗透已经没有那么容易那么公式化了,以往渗透是从外网突破-> 提权 -> 权限维持 -> 信息收集 -> 横向移动 -> 循环收集信息获得重要目标系统。随着业务上云以及虚拟化技术的引入改变了这种格局,也打开了新的入侵路径

  1. 通过虚拟机攻击云管理平台,利用管理平台控制所有机器
  2. 通过容器进行逃逸,从而控制宿主机以及横向渗透到K8s Master节点控制其上所有容器
  3. 购买弹性虚拟主机-> KVM-QEMU/执行逃逸 -> 获取宿主机 -> 进入物理网络 -> 横向移动控制云平台

k8s渗透思路

这张图就是k8s大概的攻击面

在学习对k8s的渗透之前,我们要先理解k8s的架构构成

识别容器

首先判断是否为Docker再判断是否为K8s

/run/secrets/kubernetes.io/serviceaccount文件是为Pod中的进程和外部用户提供身份信息

复制代码
df -h
Filesystem               Size  Used Avail Use% Mounted on
overlay                   50G  3.6G   47G   8% /
tmpfs                     64M     0   64M   0% /dev
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  3.6G   47G   8% /etc/hosts
shm                       64M     0   64M   0% /dev/shm
tmpfs            1.9G   12K  1.9G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs                    1.9G     0  1.9G   0% /proc/acpi
tmpfs                    1.9G     0  1.9G   0% /proc/scsi
tmpfs                    1.9G     0  1.9G   0% /sys/firmware

ls -l /run/secrets/kubernetes.io/serviceaccount/
total 0
lrwxrwxrwx 1 root root 13 Sep 17 01:17 ca.crt -> ..data/ca.crt
lrwxrwxrwx 1 root root 16 Sep 17 01:17 namespace -> ..data/namespace
lrwxrwxrwx 1 root root 12 Sep 17 01:17 token -> ..data/token

主要包含了三个内容

  • namespace指定了pod所在的namespace
  • CA用于验证apiserver的证书
  • token用作身份验证

env环境变量

复制代码
root@privileged-container:~# env
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=privileged-container
DVWA_WEB_SERVICE_PORT=8080
DVWA_WEB_SERVICE_HOST=10.97.153.211
DVWA_WEB_SERVICE_PORT_8080=8080

渗透路线

简单来说渗透路线是这样的:

  • docker user shell
  • docker root shell
  • docker逃逸
  • 内网横向

接下来就是对漏洞的利用,具体利用方法可以看https://lzcloudsecurity.gitbook.io/yun-an-quan-gong-fang-ru-men/di-liu-zhang-yun-yuan-sheng-gong-fang/kubernetes-chang-jian-gong-ji-fang-shi/kubernetes-att-and-ck这篇文章,我就不一一列出了(或者等过两天我上夜班无聊的时候再罗列一下)

相关推荐
叠叠乐2 小时前
中国移动家庭云电脑window关闭所有安全脚本
安全
Jmyd01232 小时前
实训室的 3D 模型涉及肖像文物,数据安全与合规怎么做?
安全·3d·数据安全·虚拟实训
芯盾时代2 小时前
《金融业网络安全管理办法(征求意见稿)》全条款深度拆解(三)
网络·安全·网络安全
敢敢是只喵i3 小时前
一个本地 AI Agent 要操作多个门店或 SaaS 账号,应该怎样安全切换身份?
人工智能·安全·ai·系统架构·业界资讯
Acrel12343 小时前
DC800V 大规模落地,算力机房安全该如何保障
安全
其实防守也摸鱼4 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
深圳海导科技4 小时前
资产防盗追踪系统:物联网高价值资产安全管理|海导科技navynav
科技·物联网·安全
波多利希最高礼仪的握力器4 小时前
安全复制SCP
linux·服务器·安全
其实防守也摸鱼5 小时前
免杀与持久化入门:从载荷免杀到隐蔽通道的完整指南
运维·服务器·数据库·安全·github·copilot·渗透
小五传输5 小时前
杀毒引擎有哪些软件好用?机器人企业文件威胁防护选型指南
大数据·运维·安全