12 个扫描程序,用于查找 Kubernetes 中的安全漏洞和错误配置
Kubernetes 已成为事实上的云操作系统。开发人员喜欢 K8s,因为 Kubernetes 使开发人员可以轻松地将他们的应用程序打包成可移植的微服务。
超过 90% 的处理云和微服务编排的公司正在转向 Kubernetes。有超过 24,441 家公司使用 Kubernetes。
![[图-1 使用 Kubernetes 的公司 ^1]](https://cdn.hashnode.com/res/hashnode/image/upload/v1657665919538/CBB-vGH3k.png?auto=compress,format&format=webp)
[图 1 使用 Kubernetes 的公司1]
你有没有想过你的容器是否真的安全或有一个敞开的门?
尽管 Kubernetes 提供了各种开箱即用的安全措施。通常还有其他原因会导致这些安全漏洞。以下是示例:
- 配置错误:最近的一项研究发现,70–75% 的组织至少有一个严重的 AWS 安全配置错误。2
- Kubernetes API 服务:Tesla 将作为其主要 Kubernetes API 服务一部分的仪表板在没有身份验证的情况下上线时发现了这一点。3
然而,Kubernetes 只有最基本的安全特性。而且它并不涵盖独联体“互联网安全中心”4提供的所有检查。不幸的是,当涉及复杂的安全监控和管理员的合规性强制执行时,Kubernetes 没有提供这种级别的保护。
如图 2 所示,攻击者可以通过多种方式尝试破坏您的 Kubernetes 集群以及在其上运行的应用程序。

[图 2:攻击者可能试图破坏您的 Kubernetes 的方式]5
在本文中,我们不会讨论 Kubernetes 集群中可能出现漏洞安全的所有原因。这将在其他文章中考虑。
我在我最近的项目中收集了几个有用的扫描程序来查找 K8S 中的漏洞和错误配置,并希望在本文中向您介绍它们。
** 1.** kube-bench
Kube-bench6 是一个扫描器,它通过尽可能准确地使用 CIS Kubernetes Benchmark 实现来检查 Kubernetes 是否安全实现。 Kube-bench 荣获 2018 InfoWorld 基础奖。7
这是用 GO 编写的,它将通过工具运行的测试输出带有 CIS Kubernetes Benchmark for Lookup 的适当部分的通过、失败或警告消息。
快速开始
你可以运行 kube-bench:
容器内的* :
docker run - pidu003dhost -v /etc:/etc:ro -v /var:/var:ro -t aquasec/kube-bench:latest - 1.18版
- 在 Kubernetes 集群中:
提供的 job.yaml 文件可用于将测试作为作业运行。
kubectl apply -fhttps://github.com/aquasecurity/kube-bench/blob/main/job.yaml
EKS 集群内的* :
-> aws ecr create-repository — 存储库名称 k8s/kube-bench — image-tag-mutability MUTABLE
-> kubectl apply -fhttps://github.com/aquasecurity/kube-bench/blob/main/job-eks.yaml
2\。这是一个猎人
_Kube-hunter_8 顾名思义,它将寻找 Kubernetes 集群中的安全漏洞。它旨在提高 Kubernetes 环境中安全控制的意识和可见性。从集群外部,kube-hunter 扫描域或地址范围以查找与 Kubernetes 相关的开放端口,并测试使您的集群易受攻击者攻击的配置问题。
快速开始:
运行 kube-hunter 有三种不同的方法,每种方法都提供了不同的方法来发现集群中的漏洞。
您可以运行 kube-hunter:
- 在任意一台机器上,选择远程扫描并指定您的Kubernetes集群的IP地址或域名。这将从攻击者的角度概述您的 Kubernetes 设置。
点安装 kube-hunter
- 在集群中的一台机器上
docker run -it — rm — 网络主机 aquasec/kube-hunter
- 在集群内的一个 pod 中
kubectl create -fhttps://github.com/aquasecurity/kube-hunter/blob/main/job.yaml
3\。库伯审计
_Kubeaudit_9 检测 Kubernetes 资源中的安全错误配置,并提供有关如何修复它们的提示。
Kubeaudit 附带了大量“审计员”,用于测试各个方面,例如 Pod 的 SecurityContext。完整的审核员名单可在 [10] 中找到:
Kubeaudit 是一个命令行工具和一个 Go 包,用于审计 Kubernetes 集群的各种安全方面
快速开始:
您可以安装 kubeaudit:
- 通过自制软件:
brew install kubeaudit
- 通过 Helm:
helm upgrade — 安装 kubeaudit secureCodeBox/kubeaudit
例子:
4\。这是扫描
使用 _Kube-scan_11,您可以获得工作负载的风险评分。 Kube-scan 为每个工作负载提供从 0(无风险)到 10(高风险)的风险评分。 Kube-scan 旨在帮助您了解哪些工作负载面临最大风险及其原因,并允许您优先更新 pod 安全策略、pod 定义和清单文件,以控制风险。
快速开始:
- Kube-scan 是一个带有 YAML 文件的单 pod 部署:
-> kubectl apply -fhttps://raw.githubusercontent.com/octarinesec/kube-scan/master/kube-scan.yaml
-> kubectl port-forward — 命名空间 kube-scan svc/kube-scan-ui 8080:80
- 然后就可以启动了:http://localhost:8080
5\。这是秒
_Kubesec_12 是一个开源工具,用于根据 YAML 配置评估 Kubernetes 工作负载的安全风险。
Kubesec 通过验证用于 Kubernetes 部署和操作的配置文件和清单文件来量化 Kubernetes 资源的风险。
快速开始:
Kubesec 可用于:
- Docker 容器:
docker.io/kubesec/kubesec:v2 [https://hub.docker.com/r/kubesec/kubesec/tags](https://hub.docker.com/r/kubesec/kubesec/tags)
-
Linux/MacOS/Win 二进制:https://github.com/controlplaneio/kubesec/releases
-
Kubernetes准入控制器:https://github.com/controlplaneio/kubesec-webhook
-
Kubectl 插件:https://github.com/controlplaneio/kubectl-kubesec
命令行用法示例:
kubesec 扫描 k8s-deployment.yaml
6\。这是一个分数
_Kube-score_13 对所有 Kubernetes 对象定义执行静态代码分析。输出是关于您可以改进哪些方面的建议列表,以使您的应用程序更安全和更有弹性。
快速开始:
您可以通过以下方式轻松安装 kube-score:
-
泊坞窗:泊坞窗拉 zegl/kube-score
-
自制:brew install kube-score
-
Krew 用于 kubectl 命令行工具的插件管理器:kubectl krew install score
您可以在此处找到检查的完整列表
例子:
kube-score 分数 my-app/*.yaml
7\。库比扫描
_KubiScan_14 帮助集群管理员识别攻击者可以利用来破坏集群的权限。 KubiScan 在 Kubernetes 基于角色的访问控制 (RBAC) 权限模型中扫描 Kubernetes 集群以查找风险权限。 KubiScan 可以扫描包含特权服务帐户令牌的 pod,这些令牌可被滥用以进行特权升级攻击或危害集群。
快速开始:
您通过以下方式安装 KubiScan:
-alias kubiscan='python3 100073 https://github.com/cyberark/KubiScan/blob/master/KubiScan.py 100074 100072 使用kubiscan
例子:
- 使用特权帐户搜索 pod:
卷心菜-rp
- 验证此帐户是否出现在风险主题列表中:
kubiscan -rs
- 搜索该服务帐号的所有规则:
kubiscan -aaes “risky-sa” -ns “默认” -k “ServiceAccount”
8\。水龙头
Krane15 是一个用 Ruby 编写的命令行工具。 Krane 是一个简单的 Kubernetes RBAC 静态分析工具。它识别了 K8 的 RBAC 设计中的潜在安全风险,并就如何缓解这些风险提出了建议。 Krane 仪表板显示当前的 RBAC 安全状况,并让您浏览定义。
快速开始:
您可以安装 Krane vie:
宝石安装起重机
接着:
极其部署

[图-3 起重机演示]
9\。照明
_Illumination_16 是一个用于自动测试 Kubernetes 网络策略的实用程序。只需运行 illuminatio clean run,illuminatio 就会扫描您的 Kubernetes 集群以获取网络策略,创建适当的测试用例,并执行它们以确定策略是否生效。
快速开始:
您可以通过以下方式安装照明:
pip3 安装照明
- 或 Kubectl 插件:
-> ln -s $(哪个照明) /usr/local/bin/kubectl-lighting
-> kubectl 插件列表 — 仅名称 | grep 照明
测试您新创建的 NetworkPolicy:
照明清洁运行
10\。检查
Checkov17 是用于基础设施即代码的静态代码分析工具。它扫描使用 Terraform、Terraform Plan、Cloudformation、AWS SAM、Kubernetes、Dockerfile、Serverless 或 ARM 模板部署的云基础设施,并通过基于图形的扫描检测安全性和合规性错误配置。
快速开始:
您可以通过以下方式轻松安装 Checkov:
- Python 包管理器:
pip3 安装 checkov
- 自制:
冲泡安装检查
运行:
checkov — 目录 /user/path/to/iac/code
或特定文件或文件
checkov --file /user/tf/example.tf
11\。 MKIT
托管 Kubernetes 检查工具 (MKIT)18 是托管 Kubernetes 检查工具的首字母缩写。
MKIT 是一个托管 Kubernetes 检查工具,它使用 FOSS 工具来查询和检查托管 Kubernetes 集群对象和集群中运行的工作负载/资源的各种常见的安全相关配置设置。
MKIT 支持以下托管 Kubernetes 提供程序:
- Azure Kubernetes 服务 (AKS)。
- 亚马逊弹性 Kubernetes 服务 (EKS)
- 谷歌 Kubernetes 引擎 (GKE)

[Figure-4 MKIT Live Demo of the web UI]
快速开始:
- Azure Kubernetes 服务 (AKS)
将 Azure 凭据导出为本地环境变量。以下是必需的:
天蓝色_客户_ID
天蓝色_租户_ID
天蓝色\客户\秘密
天蓝色_SUBSCRIPTION_ID
使用 AKS 选项运行:
make run-aks resourcegroupu003dmyResourceGroup clusternameu003dmy-aks-cluster-name
• 亚马逊弹性 Kubernetes 服务 (EKS)
将您的 AWS 凭证导出为本地环境变量。以下是必需的:
AWS_PROFILE
AWS\ACCESS\KEY\ID
AWS_SECRET_ACCESS_KEY
使用 EKS 选项运行:
make run-eks awsregionu003dus-east-1 clusternameu003dmy-eks-cluster-name
• 谷歌 Kubernetes 引擎 (GKE)
使用您的 Google Cloud 凭据进行身份验证
gcloud auth 应用程序-默认登录
使用 GKE 选项运行(确保指定项目 ID 而不是项目名称):
make run-gke project_idu003dmy-project-id locationu003dus-central1 clusternameu003dmy-gke-cluster-name
使用独立的 Kubernetes 选项运行。
运行-k8s
访问http://localhost:8000查看扫描结果。
12. Ku被
在 Kubernetes 集群中,Kubei19 用于分析即时威胁。 Kubei 的大部分内容都是用 Go 编程语言编写的。
Kubei 是一个漏洞扫描和 CIS Docker 基准测试工具,允许用户对其 Kubernetes 集群进行准确和即时的风险评估。
快速开始:
Kube I 也像 Kube-scan 有一个带有 YAML 文件的单个 pod 部署:
- 运行以下命令在集群上部署 Kubei:
kubectl apply -fhttps://raw.githubusercontent.com/Portshift/kubei/master/deploy/kubei.yaml
然后,通过以下命令将端口转发到 Kubei webapp:
kubectl -n kubei 端口转发 $(kubectl -n kubei get pods -lappu003dkubei -o jsonpathu003d'{.items[0].metadata.name}') 8080
在浏览器中,导航到http://localhost:8080/view/,然后单击“GO”运行扫描。
要检查 Kubei 的状态以及正在进行的扫描的进度,请运行以下命令:
kubectl -n kubei 日志 $(kubectl -n kubei get pods -lappu003dkubei -o jsonpathu003d'{.items[0].metadata.name}')
刷新页面(localhost:8080/view)以更新结果。

[Figure-5 Kubei Runtime Vulnerabilities Analyzer]20
您应该使用哪个工具?
这实际上取决于用例。可以肯定的是,您应该深入研究这些工具,并从中选择一个或多个扫描仪,以确保您现有的用例。大多数工具都提供监控服务,因此有机会将这些指标与您现有的监控服务集成在一起。这样,当对容器、Pod、Ingress 和其他 Kubernetes 配置进行更改时,始终可以监控漏洞。
一般来说,你不应该依赖标准的 Kubernetes 安全性,就像特斯拉和其他大型项目一样,它很快也会付诸东流。
我希望我能在您的 Kubernetes 安全世界中做出贡献。如果您想了解有关 Kubernetes 和 Cloud World 主题的更多信息,请关注我。
资源
[1] 使用 Kubernetes 的公司:https://bit.ly/3DUvBtU
[2] https://bit.ly/3DKIDdz
[3] https://bit.ly/3ILrgwD
[4] https://www.cisecurity.org/benchmark/kubernetes/
[5]https://bit.ly/33gl8MI
[6] kube-bench:github.com/aquasecurity/kube-bench
[7] https://bit.ly/3DOnkYr
[8] Kube-hunter:github.com/aquasecurity/kube-hunter
[9] Kubeaudit:github.com/Shopify/kubeaudit
[10] kubeaudit 审计员名单:https://bit.ly/3m1pb6a
[11] Kube 扫描:github.com/octarinesec/kube-scan
[12] Kubesec:kubesec.io&https://github.com/controlplaneio/kubesec
[13] Kube-score:https://github.com/zegl/kube-score
[14] KubiScan:https://github.com/cyberark/KubiScan
[15] 水龙头:https://github.com/Shopify/krane/
[16] 照明**:** github.com/inovex/illuminatio
[17] Checkov:github.com/bridgecrewio/checkov
[18] MKIT: github.com/darkbitio/mkit
[19] Ku被: GitHub.com/port shift/堀北
[20]https://bit.ly/3oPDFUTF
更多推荐

所有评论(0)