「开源摘星计划」Harbor镜像仓库漏洞扫描_如何检测你的镜像是否安全?

690 阅读5分钟

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。
活动链接:github.com/weopenproje…

前言

在镜像的构建过程中,镜像封装的代码、软件会有不同程度的缺陷,这些缺陷一旦被恶意的者利用,入侵到内部系统进行一系列非法的操作(破坏系统的正常运行和窃取私密的信息)。当缺陷成为漏洞,将会对镜像的安全造成很大的隐患。

Harbor在​​1.1版本中开始引用​​CoreOS旗下的开源项目—Clair(现在都2.4版本了,没有谁还在用1.1以下的版本吧!)作为存储和管理的​​容器镜像的漏洞扫描引擎​​,以​​插件化的方式安装在Harbor​​中,通过插件化的漏洞扫描框架,扫描工具和服务与Harbor进行解耦,安装扫描器插件后,超级管理员(admin)即可在管理界面使用扫描工具了。

1、Harbor支持哪些扫描器?

Harbor的扫描器框架支持多个扫描工具或者服务的配置管理,管理员(admin)可将其中一个扫描器设置为默认的扫描器,如果没有设置,就会使用系统默认的扫描器来扫描项目。

1.1 Clair扫描器

Clair是CoreOS公司的一款开源容器漏洞扫描工具,是一种静态的扫描工具,在扫描过程中不需要实际运行容器,​​是Harbor默认的两款扫描器之一。

原理:交叉检查容器镜像的操作系统(Alpine、CentOS、Ubuntu、Debian等)——即基础镜像,和安装在操作系统上的软件包和已知具有漏洞的不安全版本是否匹配。

2.2 Trivy 扫描器

Trivy扫描器是以色列安全公司Aqua旗下的一款开源的漏洞扫描工具,主要用于容器和其它Artifact的扫描,​​也是Harbor默认的两款扫描器之一。

1)Trivy的功能:

能够检测许多操作系统中的漏洞; 发现应用程序依赖中的漏洞; 在检测漏洞方面具有很高的准确性; 扫描过程无状态,不需要数据库等先决条件; 2)Trivy的适用场景

Trivy非常适用于CI场景,很容易集成到Travis CI、CircleCI、​​Jenkins​​、​​GitLab CI​​等工具中,以完成镜像的漏洞扫描。

2.3 Anchore

Anchore是美国一家安全公司旗下的开源项目,可以实现容器镜像检查、分析和认证提供中心服务。这个楼主也没用过,本文就不详细介绍了,有兴趣可自行百度。

2.4 Aqua CSP

Aqua CSP是Aqua公司旗下专注于云原生平台与环境安全的平台服务,其目标是加速容器采用并缩小DevOps与IT安全之间的差距。

Aqua CSP比较复杂,Harbor虽然也支持,但在Harbor中使用Aqua CSP并不受到推荐。

2.5 DosSec

DosSec扫描器是中国小佑科技开发,是目前唯一支持中文漏洞库的扫描器。这个楼主也没完过,有时间研究下。


2、启用插件化的扫描工具

2.1、安装Harbor时安装扫描器

[root@Over harbor]# ./install.sh --help\
Note: Please set hostname and other necessary attributes in harbor.yml first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.\
Please set --with-notary if needs enable Notary in Harbor, and set ui_url_protocol/ssl_cert/ssl_cert_key in harbor.yml bacause notary must run under https.\
Please set --with-trivy if needs enable Trivy in Harbor\
Please set --with-chartmuseum if needs enable Chartmuseum in Harbor\
[root@Over harbor]# ./install.sh --with-trivy

2.2、Harbor已启动后才安装扫描器

如果Harbor已经运行,再安装扫描器的化,则需要先停止Harbor的运行,再安装扫描器。

1)停止Harbor

生产环境需要事先沟通好,避免影响到业务。

[root@Over harbor]# docker-compose down

2)到harbor工作目录执行./prepare

[root@Over harbor]# ./prepare 

3)安装Trivy扫描器

[root@Over harbor]# ./install.sh --with-trivy
......
✔ ----Harbor has been installed and started successfully.----

4)验证是否安装成功

[root@Over harbor]# docker-compose ps\
Name Command State Ports\
---------------------------------------------
harbor-core /harbor/entrypoint.sh Up (healthy)
harbor-db /docker-entrypoint.sh 96 13 Up (healthy)
harbor-jobservice /harbor/entrypoint.sh Up (healthy)
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp
redis redis-server /etc/redis.conf Up (healthy)
registry /home/harbor/entrypoint.sh Up (healthy)
registryctl /home/harbor/start.sh Up (healthy)
trivy-adapter /home/scanner/entrypoint.sh Up (healthy)

image.png

可以看到trivy的容器已经运行,表示安装成功。

5) UI界面查看

登录Harbor UI界面==> 【项目】==>【扫描器】即可看到已经安装的扫描器。

image.png

3、使用漏洞扫描功能

安装好扫描器后,就可以​​在Harbor管理界面​​使用扫描器进行漏洞扫描了。命令行使用则需要调用Harbor API来实现了(本处暂时不详细表述了),​​本处以Trivy扫描器为例​​。

3.1 进入扫描管理页面

【系统管理】——>【审查服务】

image.png

3.2 项目漏洞扫描

项目--需要扫描的项目——项目下的某个镜像——点击【扫描】即可进行扫描

image.png image.png

扫描状态说明

  • 已入队列​:扫描过程的起始阶段,已创建扫描任务,但未执行扫描;
  • 扫描中​:正在进行扫描,但还未完成;
  • 失败​:扫描过程因为遇到不可忽略的错误导致扫描未成功完成,可通过系统扫描的日志信息排查;
  • 成功​:扫描过程成功,并生成对应的扫描报告。