freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Kube-Bench:一款针对Kubernete的安全检测工具
2020-07-25 22:26:07

工具介绍

Kube-Bench是一款针对Kubernete的安全检测工具,从本质上来说,Kube-Bench是一个基于Go开发的应用程序,它可以帮助研究人员对部署的Kubernete进行安全检测,安全检测原则遵循CIS Kubernetes Benchmark

测试规则需要通过YAML文件进行配置,因此我们可以轻松更新该工具的测试规则。

注意事项

  • Kube-Bench尽可能地实现了CIS Kubernetes Benchmark,如果kube bench没有正确执行安全基准测试,请点击【这里】提交问题。
  • Kubernete版本和CIS基准测试版本之间没有一对一的映射。请参阅CIS Kubernetes基准测试支持,以查看基准测试的不同版本包含哪些Kubernetes版本。
  • Kube-Bench无法检查受管集群的主节点,例如GKE、EKS和AKS,因为Kube-Bench不能访问这些节点。不过,Kube-Bench在这些环境中仍然可以检查worker节点配置。

CIS Kubernetes Benchmark支持

Kube-Bench支持的Kubernete测试规则定义在CIS Kubernetes Benchmark之中:

CIS Kubernetes Benchmark

kube-bench配置

Kubernetes版本

1.3.0

cis-1.3

1.11-1.12

1.4.1

cis-1.4

1.13-1.14

1.5.0

cis-1.5

1.15-

GKE 1.0.0

gke-1.0

GKE

EKS 1.0.0

eks-1.0

EKS

Red Hat OpenShift hardening guide

rh-0.7

OCP 3.10-3.11

默认配置下,Kube-Bench将根据目标设备上运行的Kubernete版本来确定要运行的测试集,但请注意,Kube-Bench不会自动检测OpenShift和GKE。

工具下载

广大研究人员可以直接使用下列命令将项目源码客隆至本地:

git clone https://github.com/aquasecurity/kube-bench.git
  • 可以选择在容器中运行Kube-Bench(跟主机共享PID命名空间);
  • 在主机中运行安装了Kube-Bench的容器,然后直接在主机中运行Kube-Bench;
  • 访问项目Releases页面下载并安装最新版本的源码,别忘了下载配置文件以及cfg目录下的测试文件;
  • 从源码编译;

工具安装

在容器中安装

下列命令将帮助我们在Docker容器中安装Kube-Bench源码以及配置文件(源码编译仅针对Linux x86-x64,无法在macOS或Windows上运行):

docker run --rm -v `pwd`:/host aquasec/kube-bench:latest install

./kube-bench [master|node]

源码安装

首先在设备上安装并配置好Go环境,然后运行下列命令即可:

go get github.com/aquasecurity/kube-bench

cd $GOPATH/src/github.com/aquasecurity/kube-bench

go build -o kube-bench .

# See all supported options

./kube-bench --help

# Run all checks

./kube-bench

在容器中运行

你可以直接通过主机PID命名空间来在一个容器中安装并运行Kube-Bench,并加载配置文件所在目录,比如说“/etc”或“/var”:

docker run --pid=host -v /etc:/etc:ro -v /var:/var:ro -t aquasec/kube-bench:latest [master|node] --version 1.13

如果你不想使用“/opt/kube-bench/cfg/”下的默认配置,你还可以通过加载自定义的配置文件来使用它们:

docker run --pid=host -v /etc:/etc:ro -v /var:/var:ro -t -v path/to/my-config.yaml:/opt/kube-bench/cfg/config.yam -v $(which kubectl):/usr/local/mount-from-host/bin/kubectl -v ~/.kube:/.kube -e KUBECONFIG=/.kube/config aquasec/kube-bench:latest [master|node]

运行Kube-Bench

如果你想直接通过命令行工具运行Kube-Bench,你还需要root/sudo权限来访问所有的配置文件。

Kube-Bench将会根据检测到的节点类型以及Kubernete运行的集群版本来自动选择使用哪一个“controls”。这种行为可以通过定义master或node子命令以及“--version”命令行参数来进行修改。

Kube-Bench版本还可以通过“KUBE_BENCH_VERSION”环境变量来设置,“--version”参数将优先于“KUBE_BENCH_VERSION”环境变量生效。

比如说,我们可以使用Kube-Bench对一个master执行版本自动检测:

kube-bench master

或者,使用Kube-Bench针对Kubernete v1.13执行worker节点测试:

kube-bench node --version 1.13

kube-bench将会根据对应的CIS Benchmark版本来映射“--version”。不如说,如果你指定的是“--version 1.13”,此时映射的CIS Benchmark版本为“cis-1.14”。

或者说,你还可以指定“--benchmark”来运行指定的CIS Benchmark版本:

kube-bench node --benchmark cis-1.4

如果你想要指定CIS Benchmark的target,比如说master、node、etcd等,你可以运行“run --targets”子命令:

kube-bench --benchmark cis-1.4 run --targets master,node

kube-bench --benchmark cis-1.5 run --targets master,node,etcd,policies

下表中显示的是不同CIS Benchmark版本对应的有效目标:

CIS Benchmark

Targets

cis-1.3

master, node

cis-1.4

master, node

cis-1.5

master, controlplane, node, etcd, policies

gke-1.0

master, controlplane, node, etcd, policies, managedservices

eks-1.0

node, policies, managedservices

如果不指定目标,那么Kube-Bench将会根据CIS Benchmark版本自动检测合适的目标。

不同CIS Benchmark版本的“controls”可以在“cfg/”目录下找到对应的名称,比如说“cfg/cis-1.4”。

项目地址

Kube-Bench:【GitHub传送门

# 安全检测 # Kubernete
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者