首页 > 其他分享 >Docker 安全扫描

Docker 安全扫描

时间:2022-10-07 19:00:40浏览次数:78  
标签:compose cli image 扫描 安全 anchore Docker grype docker

一、 Anchore engine

Anchore engine是一款Docker漏洞扫描工具,该工具可从仓库下载镜像,然后对镜像进行安全扫描、分析。其分为社区版本和商业版本,社区版本只提供CLI接口,商业版本还提供WEB页面及更多的支持。相关介绍说明:​​https://github.com/anchore/anchore-engine​​。

1、工具安装。该工具有几种不同的安装方式

sudo curl -O ​​https://engine.anchore.io/docs/quickstart/docker-compose.yaml​

Docker 安全扫描_grype

2、通过docker-compose启动相关的镜像

sudo docker-compose up –d

Docker 安全扫描_grype_02

3、查看相关帮助命令:

Docker 安全扫描_grype_03

4、查看anchore相关的服务以及状态

sudo docker-compose ps

sudo docker-compose exec api anchore-cli system status

Docker 安全扫描_docker bench_04

5、查看漏洞库列表

sudo docker-compose exec api anchore-cli system feeds list

Docker 安全扫描_grype_05

6、查看漏洞库更新情况:

sudo docker-compose exec api anchore-cli system wait

Docker 安全扫描_Docker Bench for_06

7、使用image add命令添加一个镜像进行扫描

[root@localhost good]# docker-compose exec api anchore-cli image add docker.io/centos:latest –force

Docker 安全扫描_docker bench_07

8、通过image wait命令等待分析完成,这个过程可能需要花一些时间等待:

docker-compose exec api anchore-cli image wait docker.io/centos:latest

Docker 安全扫描_anchore_08

经过等待后显示分析完成:

Docker 安全扫描_grype_09

9、查看镜像中的操作系统中的软件包:

docker-compose exec api anchore-cli image content  centos:latest os

Docker 安全扫描_anchore_10

10、查看漏洞信息:

docker-compose exec api anchore-cli image vuln  centos:latest os

Docker 安全扫描_grype_11

11、查看扫描评估结果:

docker-compose exec api anchore-cli evaluate  check centos:latest

Docker 安全扫描_docker bench_12

12、遗留的问题,我想对已经拉取到本地的镜像进行扫描,但是在Image add的时候总是报错,于是搭建了本地仓库,将制作的镜像push到仓库,再对此镜像进行扫描,仍然报错,截图如下:

Docker 安全扫描_Docker Bench for_13

[root@localhost good]# docker-compose exec api anchore-cli image add 127.0.0.1:5000/centosnginx:latest

Error: cannot fetch image digest/manifest from registry

HTTP Code: 400

Detail: {'error_codes': ['REGISTRY_NOT_ACCESSIBLE'], 'raw_exception_message': 'Error encountered in skopeo operation. cmd=/bin/sh -c skopeo   inspect --raw --tls-verify=false  docker://127.0.0.1:5000/centosnginx:latest, rc=1, stdout=None, stderr=b\'time="2022-10-03T16:01:43Z" level=fatal msg="Error parsing image name \\\\"docker://127.0.0.1:5000/centosnginx:latest\\\\": error pinging docker registry 127.0.0.1:5000: Get \\\\"http://127.0.0.1:5000/v2/\\\\": dial tcp 127.0.0.1:5000: connect: connection refused"\\n\', error_code=REGISTRY_NOT_ACCESSIBLE'}

 

[root@localhost good]#

[root@localhost good]# docker-compose exec api anchore-cli image add 127.0.0.1:5000/centosnginx:latest --dockerfile=/home/good/centosnginx/Dockerfile

Usage: anchore-cli image add [OPTIONS] INPUT_IMAGE

Try "anchore-cli image add -h" for help.

 

Error: Invalid value for "--dockerfile": Path "/home/good/centosnginx/Dockerfile" does not exist.

在官方网站(https://engine.anchore.io/docs/usage/cli_usage/images/)上看到有相关的操作介绍,但是参考这个操作仍然报错,一直没有找到原因。

二、 grype与syft

在anchore停止维护后,还延伸出另外两个组件分别是grype以及syft,其中grype主要用于进行漏洞扫描,而syft则主要扫描软件清单,即常说的软件物料清单SBOM。

(一)   grype

1、安装。我下载的二进制安装包,然后使用rpm命令直接安装,下载链接:​​https://github.com/anchore/grype​

Docker 安全扫描_docker bench_14

 2、使用grype 进行扫描,第一次扫描会进行漏洞库的更新:

Grype <image>

Grype <path/to/image.tar>

Docker 安全扫描_Docker Bench for_15

Docker 安全扫描_anchore_16

源还支持其他几种不同的方式:

Docker 安全扫描_anchore_17

如对我在本地仓库中的指定镜像进行扫描:

grype registry:127.0.0.1:5000/centosnginx:latest

3、扫描结果保存

Grype <image> -o <format>

格式支持以下几种:

Table:缺省的方式,即表格方式,这种方式会记录软件包名称、安装的版本、问题修复的版本、软件包的格式(RPM等)、漏洞CVE编号以及严重性。

Cyclonedx:遵循CycloneDX1.2标准的XML格式报告,此格式包含了更多的内容,比如软件授权标准、CVE的说明URL、CVSS得分等内容。

Json:以json格式保存,保存的内容与xml差不多,稍微有一些差异。

Template:用户自定义输出格式,需要提前定义输出模板,内容与json一致

举例如下:

Docker 安全扫描_grype_18

Docker 安全扫描_anchore_19

这几种方式个人认为以table或者xml保存即可,然后使用excel打开,可以方便的进行筛选过滤。

4、漏洞库检查

[root@localhost good]# grype db status

[root@localhost good]# grype db check

[root@localhost good]# grype db update

[root@localhost good]# grype db list

5、其他

在GITHUB上还可以看到官方提供了检查忽略的设置、扫描私有仓库认证相关的设置,由于我在测试的时候使用的是二进制安装,没有找到相关的文件,这里就不再测试了,实际使用中遇到再具体处理。

(二)   syft

syft的使用方法与grype类似。

三、 Docker Bench for Security

Docker Bench Security 是一个Docker容器的基线检查脚本工具,其基于CIS Docker Benchmark v1.4.0(参考https://www.cisecurity.org/benchmark/docker),包括Host 主机配置、Docker守护进程配置、Docker守护进程配置文件、容器镜像以及构建文件配置、容器运行时配置、Docker安全操作以及Docker Swarm配置共7个方面。工具链接:​​https://github.com/docker/docker-bench-security​​。

1、 脚本使用

这个工具使用起来比较简单,脚本下载后赋予执行权限,然后运行脚本即可:

Docker 安全扫描_grype_20

当然也可以通过帮助查看,可以携带的参数:

Docker 安全扫描_anchore_21

2、 输出结果说明。通过输出可以看到该脚本实际上是基于CIS Docker Benchmark v1.4.0逐条进行检查,并且输出结果,包括PASS、NOTE、INFO以及WARN几种状态,通过与CIS基线进行对比还可以看到相关的处置建议。

3、 CIS基线检查条目依据check_<section>_<number>进行命名,可以根据自己的需求有选择性的进行检查,如下:

./docker-bench-security.sh -c check_2_2

Docker 安全扫描_anchore_22

4、 Log目录说明

对于基线检查过程会存放到log/ docker-bench-security.log中,而相关的结果以json的格式存放在 log/docker-bench-security.log.json中。

Docker 安全扫描_Docker Bench for_23


 

 

标签:compose,cli,image,扫描,安全,anchore,Docker,grype,docker
From: https://blog.51cto.com/u_9652359/5734891

相关文章

  • Java线程安全之synchronized 与 lock的异同
    *synchronized与lock的异同?*相同:二者都可以解决线程安全问题*不同:synchronized机制再执行完相应的同步代码以后,自动的释放同步监视器*Lock需要手动的启动同步(lo......
  • dremio openjdk 11 docker 镜像
    dremio官方也说明了,已经支持openjdk11了,但是默认官方的还是openjdk8,为了体验jdk11所以基于官方的搞了一个openjdk11的镜像,很简单dockerfileARGJAVA_IMAGE="openjdk......
  • docker部署WordPress
    下载数据库镜像[root@docker~]#dockerpullmysql:latest[root@docker~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZErp......
  • Go进阶05:不安全指针unsafe.Pointer使
    前言在大家学习Go的时候,肯定都学过“Go的指针是不支持指针运算和转换”这个知识点.为什么呢?首先,Go是一门静态语言,所有的变量都必须为标量类型.不同的类型不能够......
  • centos 如何搭建docker?
    官方指导文档https://docs.docker.com/engine/install/centos/ 1.卸载旧的(首次安装可以跳过这步)sudoyumremovedocker\docker-client\......
  • Dockerfile关键字
    Dockerfile是用于构建docker镜像的脚本文件,通过编写脚本,可以实现自定义镜像。Dockerfile关键字FROM基础镜像,Dockerfile第一条指令必须是FROM。例如,下列就表示使用ubunt......
  • 玄学资料库(二)NPM、PYPI、DockerHub 备份
    爱情全占星Dockerdockerpullapachecn0/aiqing-quanzhanxingdockerrun-tid-p<port>:80apachecn0/aiqing-quanzhanxing#访问http://localhost:{port}查看文档......
  • Docker | 安装
    环境准备文档非常用心......
  • KAL1 LINUX 官方文档之容器版本 --- 在 Kali Linux 上安装 Docker(更新于2022)
    在KaliLinux上安装Docker要在Kali上安装Docker,你需要记住已经有一个名为“docker”的包,因此Docker必须以不同的名称安装。如果您安装docker,您将不会得到容器版......
  • KAL1 LINUX 官方文档之容器版本 --- 官方 Kali Linux Docker 镜像(更新于2022)
     Kali提供官方KaliDocker镜像,每周在DockerHub上更新一次。因此,您可以在我们提供的容器之上轻松构建自己的Kali容器。我们提供各种镜像来尝试满足您的需求,所有镜......