痛点
- 安全形势严峻、客户安全关注度逐步提高
公司众多项目对安全要求逐步增高,现场对主机操作系统安全配置、中间、数据库等各类组件提出了各类基线安全需求
- 现场组件类型多问题广泛、暴露面多
从IaaS到PaaS再到SaaS层,涉及组件及应用广泛,缺乏统一的管控,问题暴露后缺乏有效的解决机制。随着云原生技术的应用,除了需满足传统安全组件操作系统的安全扫描还需要对docker及K8S等进行安管控
- 安全扫描整改费时费力
对于各类组件的安全配置扫描检测及修复,需要各个项目现场及安全专业人员配合,周期长,成效不显著,且扫描后无可视化结果进行审计和分析
需求分析
基于DevSecOps实践的思想,我们可以考虑利用开源的安全工具实现安全扫描自动化
为此我们以合规配置自动化扫描的痛点为例,基于chef inspec扫描框架,定制自动化扫描工具security_scan将 IaC(基础设置即代码)思想在实际项目中落地
- 扫描基线覆盖绝大多组件及操作系统:比如CIS数据库配置、各类中间件组件安全配置以及docker、k8S,系统安全配置例如linux安全基线扫描
- 自动触发扫描:执行python脚本即可自动触发扫描,无需了解组件及工具的具体技术原理
- 支持批量扫描:可以通过配置文档方式读入扫描主机ip端口等信息即可批量执行
- 输出html/json报告:扫描结果支持html导出,便于分析统计
- 支持报告结果统计分析:对于多台主机或多组件扫描结果,可利用Heimdall server,直接导入扫描结果,生成分析报表
扫描效果
自动触发扫描
生成扫描结果
可视化报告结果分析
使用方式
环境部署
- inspec环境配置
curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -P inspec
- python环境配置(若已安装请忽略)
wget https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz tar -xvJf Python-3.8.6.tgz mv Python-3.8.6 /usr/local/python3 cd /usr/local/python3 ./configure --prefix=/usr/local/python3 make && make install ln -s /usr/local/python3/bin/python3 /us/bin/python3 ln -s /usr/local/python3/bin/pip3 /us/bin/pip3 pip3 install prompt_toolkit
工具扫描
- 工具部署
git clone https://github.com/JalinZhang/Security_Scan.git
- 参数说明
Scanner: -i IP target host ip address #指定IP -p PORT target address ssh port #端口 -u USER target host ssh user #用户 -d PASSWORD target user ssh password #密码 -f FILE target hosts list file name #执行批量扫描配置文件
- 执行扫描
指定IP扫描(ip/端口/用户名/密码)
批量扫描
编辑target.txt文件,输入批量扫描主机信息(工具暂未实现passwd加密,为避免配置信息泄露,请勿报错配置文件,并在扫描后删除)
- 查看扫描结果,结果默认存放/tmp/scan_result文件夹
cd /tmp/scan_result/ (venv)[/tmp/scan_result]# ll drwxr-xr-x html drwxr-xr-x json
报告展示
检测生成的报告可以使用开源web server进行解析生成可视化报表
MITRE Heimdall Viewer 有两个版本——完整的 Heimdall Enterprise Server 和 Heimdall-Lite 版本。两者共享相同的前端,但都是为了满足不同的需求和用例而生产的。
Heimdall Light
适用于单节点少量报告查看和检测,只支持手动导入
https://heimdall-lite.mitre.org/
Heimdall server
适用于多台主机报告查看和检测,可通过扫描工具导入,也可手动导入报告
鉴于 Heimdall server至少需要一个数据库服务,我们使用 Docker 和 Docker Compose 来提供简单的部署:
设置 Docker 容器
- 安装 Docker
- 下载Heimdall压缩包至本地并解压heimdall2-master.zip
- 导航到docker-compose.yml所在的基本文件夹/heimdall2-master
- 默认情况下,Heimdall 将生成自签名证书,有效期为 7 天。将您的证书文件分别放入/heimdall2-master/nginx/certs/文件下,文件名分别为ssl_certificate.crt和ssl_certificate_key.key。
- 在 Heimdall 源目录/heimdall2-master/的终端窗口中运行以下命令
[/root/heimdall2-master]# ./setup-docker-secrets.sh #如果你想进一步配置你的 Heimdall 实例,编辑运行上一行后生成的 .env 文件 [/root/heimdall2-master]# docker -compose up -d
有关 .env 文件的更多信息,请访问环境变量配置。默认端口映射为"3000:3000",若需要修改端口映射,在docker-compose.yml中修改