[K8s Security] 基于Kube-Bench(CIS Benchmark)的自动化安全基线扫描
简介
关于CIS
“CIS(Center for Internet Security) 是一个非盈利性实体,其任务是“确定、开发、验证、升级和维持针对网络防御的最佳做法解决方案”。 它借鉴了来自世界各地政府、企业和学术界网络安全及 IT 专业人员的专业知识。 为了制定标准和最佳做法(包括 CIS 基准、控制措施和强化映像),他们遵循一致的决策制定模型。
CIS 基准是安全配置系统的配置基线和最佳做法。 每则指导建议都参考了一个或多个 CIS 控制措施,可帮助组织改进其网络防御能力。 CIS 控制措施与许多已建立的标准和规章框架对应,包括 NIST 网络安全框架 (CSF) 和 NIST SP 800-53、ISO 27000 系列标准、PCI DSS、HIPAA 等等。
每个基准都经历了两个阶段的共识评审。 第一个阶段属于初始开发过程,专家聚集在一起,讨论、创建和测试工作草案,直到就基准达成一致。 在第二阶段中,在发布基准后,共识团队将审核 Internet 社区中的反馈,以纳入基准中。”
对于安全从业人员来说,CIS提供了很好地最佳实践模型和基准,几乎涵盖了IT基础架构中的方方面面,包括常见的,Benchmark for Windows, Benchmark for Linux, Benchmark for Oracle, Benchmark for Cisco, Benchmark for Docker, Benchmark for Kubernetes, 等等(https://www.cisecurity.org/cis-benchmarks/)。
很多漏洞扫描工具也有集成基于CIS Benchmark 的扫描基线,以满足IT安全人员日常审计的需求。
关于Kube-Bench
Kube-Bench是Aqua发布的一款开源的K8s安全审计工具,基于CIS Benchmark for Kubernetes用Go语言开发。该工具会检查你是否根据CIS定义的Kubernetes安全基线部署了Kubernetes集群。(https://github.com/aquasecurity/kube-bench)。Kube-Bench的更新版本并不与Kubernetes的版本号一一对应,所以在部署Kube-bench前你要了解你要审计的k8s环境的具体版本是什么。
Kube-bench 安装
有四种方法安装Kube-Bench
1.在容器中运行kube-bench
2.在宿主机上运行一个单独的容器安装kube-bench
3.下载release文件
4.源码编译安装
本文中笔者选用第二种安装方法。
安装命令: docker run --rm -v pwd
:/host aquasec/kube-bench:latest install
[root@master ~]# mkdir /opt/kube-bench && cd /opt/kube-bench[root@master kube-bench]# docker run --rm -v `pwd`:/host aquasec/kube-bench:latest install
等待安装,镜像大小约19M
[root@master kube-bench]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEaquasec/kube-bench latest 65a956464fd7 5 days ago 19.3MB
安装完成后,会在安装路径下出现一个kube-bench可执行文件
[root@master kube-bench]# lltotal 11126drwxr-xr-x 8 root root 1024 Aug 18 15:36 cfg-rwxr-xr-x 1 root root 11391798 Aug 18 15:36 kube-bench
常用命令:
[root@master kube-bench]# ./kube-bench -help ---->查看使用帮助[root@master kube-bench]# ./kube-bench master ---->扫描master节点[root@master kube-bench]# ./kube-bench node ---->扫描node节点[root@master kube-bench]# ./kube-bench node --version 1.17 ---->扫描node节点,并指定k8s版本
配置自动化扫描
因为kube-bench工具进行k8s扫描操作比较简单,所以可以使用shell脚本来实现定期定时的自动化k8s集群安全基线扫描。并且将扫描报告以邮件方式发送出来。
前期准备:
1.K8s集群的各节点已经安装了kube-bench
2.各节点可以免密ssh登录(可以用ssh-keygen实现)
脚本如下:具体路径可以按需更改
root@master kube-bench]#cat k8s_scan.sh#! /bin/bash## get datestrDate=$( date +%Y-%m-%d )## get k8s cluster machines infohostlist=($( kubectl get nodes --show-labels | awk 'NR == 1 {next} {print $1}') )##create report pathmkdir -p /tmp/Kube-bench-scanreports/$strDatepath=/tmp/Kube-bench-scanreports/$strDate##get currenthost curhost=$( hostname ) ## run kube-bench scan for each nodei=0for host in ${hostlist[@]}dohostname=${hostlist[i]}role=$( kubectl get nodes $hostname --show-labels | awk '{getline}{print $3}' ){ if [ $role == "worker" ]thenr="node"ssh root@$hostname -tt << EOF mkdir -p /tmp/Kube-bench-scanreports/$strDate/ cd /opt/kube-bench ./kube-bench $r > $path/K8s-scanreport-node-$hostname-$strDate.csvscp $path/K8s-scanreport-node-$hostname-$strDate.csv root@$curhost:$path/exitEOFelif [ $role == "master" ]thenssh root@$hostname -tt << EOFmkdir -p /tmp/Kube-bench-scanreports/$strDate/cd /opt/kube-bench ./kube-bench $role > $path/K8s-scanreport-master-$hostname-$strDate.csv scp $path/K8s-scanreport-master-$hostname-$strDate.csv root@$curhost:$path/exitEOFfii=$i+1}doneecho "Kubernetes Security Baseline Scan Report for below cluster:" > $path/K8sstatuskubectl get nodes -o wide >> $path/K8sstatus##send email with reports as attachmentcd $path cat $path/K8sstatus | mail -s "Kubernetes Security Baseline Scan Report @$strDate" $( printf -- '-a %q ' *.csv ) -c bolide24@test.com bolide25@test.cn
然后可以使用crontab 设置定时任务跑脚本,定期发送报告邮件出来
收到邮件的格式:
写在后边:
目前一些Kubernetes的管理平台 Rancher, Kubeoperator等已经支持集成kube-bench,如果已经在使用这些平台的话也可以使用平台上的相应功能来完成扫描。
[K8s Security] 基于Kube-Bench(CIS Benchmark)的自动化安全基线扫描相关推荐
- 实战:k8s中基于角色的权限访问控制-RBAC(成功测试-博客输出)-20211005
目录 文章目录 目录 写在前面 基础知识介绍 实验环境 实验软件 老师原课件内容 1..用K8S CA签发客户端证书 2. 生成kubeconfig授权文件 3. 创建RBAC权限策略 4.指定kub ...
- 录制元素基于smartgwt框架项目如何开展自动化(一)
时间紧张,先记一笔,后续优化与完善. 基于smartgwt框架项目如何开展自动化(一) 近来接手数据资源平台产品的自动化建立,该项目依附smartgwt框架,项目早期尝试应用watir.webdriv ...
- 自动化测试框架cucumber_基于Cucumber和Testng的WebUI自动化测试方法与流程
本发明涉及计算机技术领域,具体的说是基于Cucumber和Testng的WebUI自动化测试方法. 背景技术: 行为驱动测试方法已经在敏捷开发模式中普遍使用,通过使用标准化的语言将客户需求人员.开发人 ...
- 基于 Docker 和 GitLab 的前端自动化部署实践笔记
基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...
- bigru参数计算_[数据挖掘]华中科技大学 李黎 周达明:基于CNN-BiGRU模型的操作票自动化校验方法...
原标题:[数据挖掘]华中科技大学 李黎 周达明:基于CNN-BiGRU模型的操作票自动化校验方法 智能变电站操作票校验是保障站内操作准确无误的重要环节,当前基于经验的人工校验方法主观性强,校验效率较低 ...
- 【Opencv】基于python-opencv的CV2实现图片OCR前的扫描摆正OCR识别【代码实现】
基于python-opencv的CV2实现图片OCR前的扫描摆正OCR识别[代码实现] 实验目的 代码实现 预处理(注意Resize图像) 轮廓检测(找到矩形) 透视变换(摆正图像) OCR识别文字 ...
- babylonjs 分部加载模型_用基于WebGL的BabylonJS来共享你的3D扫描模型
用基于WebGL的BabylonJS来共享你的3D扫描模型 本文由 极客范 - 杰克祥子 翻译自 Andy Beaulieu.欢迎加入极客翻译小组,同我们一道翻译与分享.转载请参见文章末尾处的要求. ...
- 中国电信基于Mesos+Docker的运维自动化在CDN中的实践
本文讲的是中国电信基于Mesos+Docker的运维自动化在CDN中的实践[编者的话]本次分享将讲解容器技术在CDN系统中的应用,包括应用的容器化,使用Mesos.Marathon.ZooKeeper ...
- android开发自制计算器测试图,基于uiautomator测试框架的计算器自动化测试方法和测试系统的制作方法...
基于uiautomator测试框架的计算器自动化测试方法和测试系统的制作方法 [技术领域] [0001]本发明涉及自动化测试技术领域,特别是一种基于uiautomator测试框架的计算器自动化测试方法 ...
最新文章
- WPF 分批加载十万个按钮
- 解决git did not exit cleanly (exit code 128)
- matlab如何绘制三维隐函数?
- 计算机应用基础教案 马成荣,江苏省职业学校计算机应用基础(马成荣主编)课程两课评比教案:单元教学设计说明...
- Spring Boot配置文件有提示
- 杀毒软件全免费遭厂家“抵制”
- TTL转485电路设计
- 《理想之城》“打光太暗”是有意为之?算法工程师揭秘什么才是“好画面”...
- 2×3卡方检验prism_戏说卡方检验
- 各种隐藏WebShell、创建、删除畸形目录、特殊文件名的方法
- ReentrantLock梳理和总结
- 创客匠人抖音小程序引流转化三步走
- C语言坐标打飞机,C语言实现打飞机小游戏
- windows11 安全中心点击进去内容空白解决方法
- 【观察】并购魔方安全,联软科技再启新征程
- 线性空间,线性子空间,基与维数
- CheckBox选中触发事件 和 取消选中触发事件
- Spring整合Quartz集群部署
- Linux IV ,IVM编辑 退出方法
- 【PWA】响应式开发