docker容器安全检测和渗透测试工具
1、Docker-bench-security
简介
Docker Bench for Security 是一个脚本,用于自动化检查在生产中部署 Docker 容器的数十种常见最佳实践,比如主机配置的安全性、Docker deamon配置的安全性、容器镜像和构建的安全性等。
下载
https://github.com/docker/docker-bench-security
安装和使用
unzip docker-bench-security-master.zip cd docker-bench-security-master
进入到文件夹中,加执行权限
chmod 777 docker-bench-security.sh
执行脚本进行检查
./docker-bench-security.sh
脚本自动化检测当前主机的容器安全性,并将检测到的信息输出到终端,对于检测到的不安全的内容,会以[warn]提示,并在最后给出测评的分数.
可以将结果导入到文件中(默认为json格式)
./docker-bench-security.sh -l 文件名
2、trivy
简介
trivy是一个由asuz公司开源的简单而全面的扫描器,用于检测容器镜像、文件系统和 Git 存储库中的漏洞以及配置问题。 Trivy 检测操作系统包(Alpine、RHEL、CentOS 等)和特定语言包(Bundler、Composer、npm、yarn 等)的漏洞。此外,Trivy 会扫描基础设施即代码 (IaC) 文件,例如 Terraform、Dockerfile 和 Kubernetes,以检测使您的部署面临攻击风险的潜在配置问题。
下载地址:
https://github.com/aquasecurity/trivy
wget https://github.com/aquasecurity/trivy/releases/download/v0.21.2/trivy_0.21.2_Linux-64bit.tar.gz tar -zxvf trivy_0.21.2_Linux-64bit.tar.gz ./trivy image alpine:3.10.7
扫描选项:
trivy <target> [--security-checks <scanner1,scanner2>] TARGET_NAME
扫描镜像:
镜像的扫描非常简单只需指定镜像名称即可(和标签)
trivy image [YOUR_IMAGE_NAME]
例如:
$ trivy image python:3.4-alpine
扫描镜像文件
$ docker pull ruby:3.1-alpine3.15
$ docker save ruby:3.1-alpine3.15 -o ruby-3.1.tar
$ trivy image --input ruby-3.1.tar
指定要扫描的目录
trivy fs --security-checks vuln,config [YOUR_PROJECT_DIR]
例如,我们指定一个myproject的源码目录扫描下:
$ trivy fs --security-checks vuln,secret,config myproject/
根文件系统
描根文件系统(例如主机、虚拟机映像或未打包的容器映像文件系统)
$ trivy rootfs /path/to/rootfs
从容器内部扫描您的容器
$ docker run --rm -it alpine:3.11 / # curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin / # trivy rootfs /
扫描目录中的错误配置
只需指定一个包IaC文件的目录就行,例Terraform和Dockerfile。
trivy config [YOUR_IAC_DIR]
例如,我们还是指定tidb源码的当前目录扫描
trivy config ./
您还可以通过--security-checks config
.
$ trivy fs --security-checks config /path/to/dir
$ trivy image --security-checks config IMAGE_NAME
扫描镜像仓库
$ trivy repo https://github.com/knqyf263/trivy-ci-test
根据严重程度进行过滤
$ trivy --severity HIGH,CRITICAL ruby:2.3.0
忽略未修复问题
$ trivy --ignore-unfixed ruby:2.3.0
忽略特定问题
使用 .trivyignore
:
$ cat .trivyignore # Accept the risk CVE-2018-14618 # No impact in our settings CVE-2019-1543 $ trivy python:3.4-alpine3.9
使用 JSON 输出结果
$ trivy -f json dustise/translat-chatbot:20190428-5
定义返回值
$ trivy --exit-code 0 --severity MEDIUM,HIGH ruby:2.3.0
$ trivy --exit-code 1 --severity CRITICAL ruby:2.3.0
参考资料:https://aquasecurity.github.io/trivy/v0.29.2/docs/vulnerability/scanning/git-repository/