Skip to content

容器安全工具

Anchore Engine:镜像扫描工具

官网地址

安装过程

安装文档

# 环境概述
# 操作系统:Centos7
# Docker版本:18.09.6
# Docker-Compose版本:1.24.0

# 创建目录
mkdir anchore
cd anchore

# 下载镜像
docker pull docker.io/anchore/anchore-engine:latest

# 创建容器
docker create --name ae docker.io/anchore/anchore-engine:latest

# 拷贝配置文件
docker cp ae:/docker-compose.yaml docker-compose.yaml

# 删除容器
docker rm ae

# 启动容器
docker-compose pull
docker-compose up -d

# 安装anchore-cli
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
pip install anchorecli

anchore-cli --version

使用过程

使用文档

# 查看安装状态
anchore-cli --u admin --p foobar system status

# 数据库同步状态
anchore-cli --u admin --p foobar system feeds list

# 等待同步完成,添加镜像到anchore engine进行分析
anchore-cli --u admin --p foobar image add docker.io/library/nginx:latest

# 查看进度
anchore-cli --u admin --p foobar image list

# 等待分析完成,查看详情
anchore-cli --u admin --p foobar image get docker.io/library/nginx:latest

# 查看漏洞
anchore-cli --u admin --p foobar image vuln docker.io/library/nginx:latest os

anchore-1

anchore-2

anchore-3

anchore-4

anchore-5

Anchore Engine账户管理

官网地址

# 查看用户
anchore-cli --u admin --p foobar account list 

# 设置密码
anchore-cli --u admin --p foobar account user setpassword New_Password

Anchore Engine注册仓库

anchore-cli --u admin --p foobar registry add registry_name user pass

关于Anchore Engine的密码保存问题

  • 使用alias命令,在Jenkins CI/CD流程中不展示密码;
  • 使用shell脚本只想anchore-cli命令;(以上两种做法都只能避免在Jenkins的界面出现账号密码)

Anchore API

官网地址

打开swagger.json文件,复制全部内容到swagger在线编辑工具中

anchore-6

Clair:镜像扫描工具

官网地址

安装过程

安装文档

# 创建目录
mkdir clair
cd clair

# 下载文件
curl -L https://raw.githubusercontent.com/coreos/clair/master/contrib/compose/docker-compose.yml -o docker-compose.yml

# 创建配置文件
mkdir clair_config
curl -L https://raw.githubusercontent.com/coreos/clair/master/config.yaml.sample -o ./clair_config/config.yaml

# 修改配置文件
vim ./clair_config/config.yaml

# 注释以下这行
# source: host=localhost port=5432 user=postgres sslmode=disable statement_timeout=60000

# 添加
source: postgresql://postgres:password@postgres:5432?sslmode=disable

# 启动
docker-compose pull
docker-compose up -d

clair-1

客户端安装

  • clairctl:[官网地址]
  • clair api:[官网地址],目前已经不能访问了。
  • klar:[官网地址],只支持跟registry集成。
  • yari:[官网地址],只支持跟registry集成,yair使用python写的,可以自己修改。
  • analyze-local-images:[官网地址],命令行工具,已经被放弃了,只支持clair v1/v2。

使用过程

[在线教程,使用klar作为客户端工具]

# 使用clairctl
# 在release下载最新版本:1.2.8

Trivy:镜像扫描工具

官网地址

安装过程

安装文档

# 使用rpm直接安装
rpm -ivh trivy_0.0.15_Linux-64bit.rpm

使用过程

# 扫描镜像,第一次扫描会很慢,因为需要更新漏洞库
trivy docker.io/library/nginx:latest

Docker Bench:容器安全基线检测工具

官网地址

安装过程

git clone https://github.com/docker/docker-bench-security.git && cd docker-bench-security

bash docker-bench-security.sh

使用过程

bash docker-bench-security.sh -h

Docker Scan:镜像扫描工具

官网地址

安装过程

pip3 install dockerscan

使用过程

dockerscan -h

OpenSCAP

工具对比

对比项/工具 Anchore Clair Trivy Docker-Bench DockerScan
安装 docker-compose docker-compose yum直接安装 shell直接执行 pip安装
语言 Python Go Go Shell Python
扫描方式 CVE漏洞库扫描 CVE漏洞库扫描 CVE漏洞库扫描 基线检测规则 扫描or分析规则,主要用于攻击
扫描速度 几分钟 几分钟 几分钟 很快 很快
跨平台性 具备良好的跨平台性 同前 同前 同前 同前

推荐使用:Anchore+Docker Bench的组合

推荐理由:anchore目前已有商业版,免费版也在持续更新中,客户端使用统一使用难度也很低,同样Anchore与Gitlab-CI或者Jenkins集成友好。

参考资料

全面易用的镜像漏洞检测工具:Trivy

容器静态安全漏洞扫描工具Clair介绍

Docker安全自动化扫描工具对比测试

29 Docker security tools compared