如何使用 Kubescape 扫描 Kubernetes 漏洞

如何使用 Kubescape 扫描 Kubernetes 漏洞
Kubescape 是来自 ARMO的新开源工具,可让您自动执行 Kubernetes 集群扫描以识别安全问题。Kubescape 根据NSA 和 CISA发布的强化建议审核您的集群。

以下是安装 Kubescape 并开始扫描集群的方法。定期扫描可以帮助您在问题被攻击者利用之前解决问题。

下载 Kubescape

Kubescape 目前作为 Windows、macOS 和 Ubuntu 的预构建二进制文件分发。您可以直接从项目的 GitHub 发布页面下载它。

还有一个自动安装脚本,您可以将其粘贴到终端中。这将为您的系统获取正确的二进制文件并将其添加到您的路径中。

curl -s https://raw.githubusercontent.com/armosec/kubescape/master/install.sh | /bin/bash

尝试运行kubescape以检查安装是否完成。您将看到可用命令的概要。
如何使用 Kubescape 扫描 Kubernetes 漏洞

扫描您的集群

Kubernetes 使用标准的Kubectl 配置文件连接到您的集群。KUBECONFIG在 shell 中设置环境变量以引用要扫描的集群的配置文件:

export KUBECONFIG=.kube/my-cluster.yaml

如果此变量未设置或指定的文件无效,Kubescape 会抱怨它“无法加载 Kubernetes 配置”。KUBECONFIG如果要扫描多个集群,则每次执行 Kubescape 时更新变量。

使用该scan命令启动扫描。您需要指明要扫描的强化框架。目前nsa是唯一支持的选项。

kubescape scan framework nsa --exclude-namespaces kube-system,kube-public

Kubescape 将扫描集群中的所有资源,除了被–exclude-namespaces标志省略的命名空间中的资源。建议您在此处列出内置的 Kubernetes 命名空间,因为您将无法解决发现的任何问题。
如何使用 Kubescape 扫描 Kubernetes 漏洞
您的第一次 Kubescape 扫描可能需要一些时间,因为该工具需要下载其框架定义。这些定义了对您的集群进行评分的测试。扫描完成后,您将在终端中看到彩色输出,详细说明所有发现的问题。

扫描结果

每个失败的测试都会生成自己的输出部分,其中包含可疑资源列表、问题描述和补救提示。报告底部的表格提供了所有已执行测试的摘要、失败的资源数量以及总体成功百分比。
如何使用 Kubescape 扫描 Kubernetes 漏洞
Kubescape 根据 NSA 确定的列表检查 20 多个可能的弱点。在国家安全局的报告提供的覆盖问题的说明及将其列入的理由。Kubescape 检查的一些关键问题包括:

  • 提权机会
  • 以特权模式运行的容器
  • 以危险能力运行的容器
  • 暴露的Kubernetes 仪表板
  • 运行的容器 root
  • 配置文件中包含的凭据
  • 未正确保护控制平面

运行 Kubescape 可让您根据当前的最佳实践指南检查集群的健康状况,让您更有信心不会将数据和工作负载置于风险之中。

扫描清单文件

Kubescape 可以在没有集群连接的情况下工作。您可以扫描存储为本地 YAML 文件的资源清单,让您在将它们应用到集群之前检查它们的安全性。在框架名称后添加一个额外的参数来指定要扫描的文件:

kubescape scan framework nsa k8s/*.yaml

您可以使用 URL 作为文件路径来扫描远程存储的文件,例如在 Git 存储库中。

在进行全面的安全审计时,最好使用默认的集群扫描模式。清单扫描理想地合并到 CI 管道中。以这种方式使用,您可以避免在更新资源并将它们部署到集群时无意中引入新漏洞。

离线扫描

Kubescape 专为在线使用而设计,因为它需要在完成扫描之前下载框架定义。您可以手动保存框架以方便离线扫描。您应该尝试定期更新文件,以免它过时。

下载 NSA 框架文件:

kubescape download framework nsa --output nsa.json

现在使用下载的文件扫描您的集群:

kubescape scan framework nsa --use-from nsa.json

该–use-from标志指示 Kubescape 从指定文件加载框架定义。还有–use-default哪些会在可用时尝试使用默认位置中的本地缓存文件。当没有找到文件时,Kubescape 回退到从服务器下载最新定义。

输出格式

Kubescape 默认输出到您的终端,但也可以生成 JSON 或 Junit 格式的报告。添加-f标志以指定所需的模式:

kubescape scan framework nsa -f json
kubescape scan framework nsa -f junit

后一个选项发出一个 XML 文件,该文件可由使用 Junit 格式的测试报告工具使用。这使您可以将 Kubescape 扫描提供给现有的测试报告解决方案,以进行可视化和聚合。

无论您指定的报告格式如何,输出都会发送到终端的标准输出流。添加-o标志以提供要保存到的文件路径:

kubescape scan framework nsa -f json -o report.json

Kubescape 的常规进度消息可以使用该-s标志禁用。这在您不想用 ASCII 字符污染作业日志的 CI 场景中很有用。

结论

Kubescape 可让您根据 NSA 发布的指南评估 Kubernetes 集群的安全性。这个简单的开源工具提供了一个命令,可以根据 20 多个关键检查对您的环境进行基准测试。
Kubescape 不会检查您在集群中运行的容器内的漏洞。你需要其他工具,如docker scan或Trivy做到这一点。与 Kubescape 一起运行容器扫描引擎可以让您最全面地了解环境的安全状况。

上一篇:5G NSA 和SA 介绍


下一篇:[转帖]NSA武器库知识整理