Communitygithub.com

使用 kube-bench 对 Kubernetes 进行基准测试

使用 Aqua Security 的 kube-bench 开源工具,根据 CIS Kubernetes 基准测试检查集群安全配置,生成详细的 PASS/FAIL/WARN/INFO 报告并提供修复建议。

使用 kube-bench 对 Kubernetes 进行基准测试 是什么?

kube-bench 是一个由 Aqua Security 开发的开源工具,用于根据 CIS Kubernetes 基准测试自动化检查集群的安全性。它审查控制平面组件(如 API 服务器、控制器管理器、调度器和 etcd)、kubelet 配置、工作节点设置以及集群范围的策略,并将每个检查标记为 PASS、FAIL、WARN 或 INFO,同时提供直接来自 CIS 指南的修复建议。该工具通过 YAML 配置文件驱动测试,支持自动检测 Kubernetes 版本,并可针对 EKS、GKE、AKS、OpenShift 等托管发行版运行。在防御角度上,kube-bench 的检查直接减少攻击面,特别是针对 MITRE ATT&CK 技术 T1610(容器部署),此技术中攻击者利用特权容器、主机命名空间、匿名 API 访问或不安全的 kubelet 设置来执行代码或规避防御。kube-bench 可以独立二进制运行、容器内运行,或最常用的作为 Kubernetes Job 运行(需挂载主机文件系统)。输出格式支持文本、JSON、JUnit 和 AWS Security Finding Format(ASFF),并支持将结果推送到 PostgreSQL 数据库以追踪趋势。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/benchmarking-kubernetes-with-kube-bench

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

使用 kube-bench 对 Kubernetes 进行基准测试 是做什么的?

概述

kube-bench(由 Aqua Security 开发)是一个开源工具,通过运行 CIS Kubernetes 基准测试 中记录的检查,来验证 Kubernetes 集群是否安全部署。它审查控制平面组件(API 服务器、控制器管理器、调度器、etcd)、kubelet 和工作节点配置,以及集群范围的策略设置,然后根据 CIS 指南为每个检查报告 PASS、FAIL、WARN 或 INFO 状态,并附带修复建议。测试由配置驱动的 YAML 文件驱动,因此 kube-bench 能够跟踪新的 Kubernetes 版本和基准测试修订,并支持托管发行版(EKS、GKE、AKS、ACK、OpenShift、RKE、k3s)。

根据 CIS 基准测试加固集群可直接减少 T1610(容器部署) 的攻击面,在此攻击中,敌手部署容器以执行代码或规避防御——例如,利用未加固集群暴露的特权容器、主机命名空间、匿名 API 访问或不安全的 kubelet 设置。

kube-bench 可以作为独立二进制在节点上运行、在容器内运行,或者最常用的是作为 Kubernetes Job 运行,其 Pod 挂载了主机文件系统,以便读取相关配置文件。输出格式支持人类可读文本、JSON、JUnit 或 AWS 安全发现格式(ASFF),并可以推送到 PostgreSQL 数据库以进行趋势跟踪。

何时使用

  • 为新 Kubernetes 集群根据 CIS Kubernetes 基准测试建立安全基线时。
  • 定期对控制平面和节点加固进行合规审计时。
  • 在应用加固更改后验证修复效果时(重新运行以确认检查现在 PASS)。
  • 将集群合规扫描集成到 CI/CD 或持续监控管道时。
  • 为 SOC 2、PCI DSS 或内部加固合规准备证据时。

前提条件

  • 对集群的访问权限:要么有对控制平面/工作节点的 SSH 访问(二进制模式),要么有具备创建 Job 权限的 kubectl(集群内模式)。
  • 了解集群的 Kubernetes 版本(kube-bench 会自动检测,或使用 --version / --benchmark 指定)。
  • 安装 kube-bench(Aqua Security 官方方法):
# 二进制发布版(Linux)
KB_VERSION=0.10.7
curl -L -o kube-bench.tgz \
  "https://github.com/aquasecurity/kube-bench/releases/download/v${KB_VERSION}/kube-bench_${KB_VERSION}_linux_amd64.tar.gz"
tar -xzf kube-bench.tgz
sudo mv kube-bench /usr/local/bin/
sudo cp -R cfg /etc/kube-bench/cfg

# 通过 Go 安装
go install github.com/aquasecurity/kube-bench@latest

# 直接在节点上作为一次性容器运行(挂载主机配置)
docker run --rm --pid=host \
  -v /etc:/etc:ro -v /var:/var:ro \
  -t docker.io/aquasec/kube-bench:latest run --targets node

# 验证
kube-bench version

目标

  • 根据集群的 Kubernetes 版本运行适当的基准测试。
  • 扫描控制平面(master)、节点、etcd、控制平面策略以及托管服务目标。
  • 生成机器可读的 JSON/JUnit 输出,用于管道和仪表板。
  • 分类处理 FAIL 和 WARN 结果,并应用 CIS 修复指南。
  • 重新运行以验证修复后结果为 PASS。

MITRE ATT&CK 映射

技术 ID名称战术相关性
T1610部署容器执行 / 防御规避kube-bench 强制执行的 CIS 基准测试加固限制了特权/主机命名空间部署、匿名 API 访问和不安全的 kubelet 设置,这些正是攻击者在部署恶意容器时滥用的问题。

工作流

1. 运行默认扫描(自动检测)

运行所有适用的目标,让 kube-bench 检测 Kubernetes 版本和基准测试:

sudo kube-bench

2. 作为 Kubernetes Job 运行(集群内)

从 kube-bench 仓库应用提供的 Job 清单,并从 Pod 日志读取结果:

# 通用 Job
kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml

# 等待,然后检索结果
kubectl get pods -l app=kube-bench
kubectl logs -l app=kube-bench

# 平台特定的 Job 也可用,例如 EKS:
kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job-eks.yaml

3. 针对特定组件

使用 run --targets 将扫描范围限定到特定组件组:

# 控制平面(API 服务器、调度器、控制器管理器)
sudo kube-bench run --targets master

# 工作节点(kubelet、代理)
sudo kube-bench run --targets node

# etcd 数据存储
sudo kube-bench run --targets etcd

# 集群范围策略(RBAC、Pod 安全、网络策略)
sudo kube-bench run --targets policies

# 组合多个目标
sudo kube-bench run --targets master,node,etcd,policies

4. 固定特定基准测试或 Kubernetes 版本

当自动检测错误或必须针对特定修订版进行审计时,显式固定基准测试:

# 固定到特定 CIS 基准测试修订版
sudo kube-bench run --benchmark cis-1.8

# 或通过 Kubernetes 版本映射
sudo kube-bench --version 1.27

# 托管/发行版特定基准测试
sudo kube-bench run --benchmark eks-1.5.0
sudo kube-bench run --benchmark gke-1.6.0
sudo kube-bench run --benchmark rke2-cis-1.7

5. 运行或跳过单个检查

在修复周期中专注于或排除特定检查 ID:

# 仅运行特定检查
sudo kube-bench run --targets master --check 1.2.1,1.2.2

# 跳过嘈杂/已知接受的检查
sudo kube-bench run --targets node --skip 4.2.6

6. 生成机器可读输出

生成 JSON 或 JUnit 输出以导入管道、SIEM 或仪表板,并写入文件:

# JSON 到文件
sudo kube-bench run --targets master,node --json --outputfile kube-bench-report.json

# JUnit(用于 CI 测试报告)
sudo kube-bench --junit --outputfile kube-bench-junit.xml

# AWS 安全发现格式(用于 Security Hub)
sudo kube-bench run --targets node --asff

7. 分类处理并修复 FAIL/WARN 发现

每个失败的检查都会打印一条修复建议。在节点/清单上应用 CIS 推荐的修复,例如在静态 Pod 清单中收紧 API 服务器标志:

# 常见控制平面 FAIL 的修复示例:
# CIS 1.2.x — 确保 API 服务器上禁用了匿名认证。
# 编辑静态 Pod 清单并设置标志:
sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
#   - --anonymous-auth=false
# kubelet 会自动重启静态 Pod。

# 节点修复示例 — kubelet 配置文件权限(CIS 4.1.x):
sudo chmod 600 /etc/kubernetes/kubelet/kubelet-config.json
sudo chown root:root /etc/kubernetes/kubelet/kubelet-config.json

8. 修复后重新验证

重新运行相关目标,确认先前失败的检查现在 PASS,并随时间跟踪评分:

sudo kube-bench run --targets master --check 1.2.1 --json --outputfile recheck.json

# 可选:将结果持久化到 PostgreSQL 以进行趋势跟踪
sudo kube-bench run --targets master,node --pgsql

工具和资源

工具 / 资源用途链接
kube-benchCIS Kubernetes 基准测试检查器https://github.com/aquasecurity/kube-bench
kube-bench 文档运行 / 平台 / 标志https://aquasecurity.github.io/kube-bench/
CIS Kubernetes 基准测试源加固标准https://www.cisecurity.org/benchmark/kubernetes
Trivy Operator持续的集群内合规 + 漏洞扫描https://github.com/aquasecurity/trivy-operator
kube-hunter补充渗透测试工具https://github.com/aquasecurity/kube-hunter

验证标准

  • kube-bench 已安装(kube-bench version)或作为 Job 运行。
  • 针对集群 Kubernetes 版本的正确基准测试运行了扫描。
  • 扫描了 master、node、etcd 和 policies 目标。
  • 生成了 JSON/JUnit 输出用于管道/仪表板导入。
  • 分类处理并确定了 FAIL 和 WARN 发现的优先级。
  • 对控制平面清单和节点配置应用了 CIS 修复。
  • 重新运行确认先前失败的检查现在 PASS。
  • 随时间跟踪结果(文件存档或 PostgreSQL)。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

相关技能