镜像安全扫描建设指南-管理员篇
0x00 产品介绍
Trivy是一种适用于CI的简单而全面的容器漏洞扫描程序。软件漏洞是指软件或操作系统中存在的故障、缺陷或弱点。
Trivy检测操作系统包(Alpine、RHEL、CentOS等)和应用程序依赖(Bundler、Composer、npm、yarn等)的漏洞。
Trivy 扫描器主要有以下几个特点:
- 检测面很全,能检测全面的漏洞,操作系统软件包(Alpine、Red Hat Universal Base Image、Red Hat Enterprise Linux、CentOS、Oracle Linux、Debian、Ubuntu、Amazon Linux、openSUSE Leap、SUSE Enterprise Linux、Photon OS 和Distrioless)、应用程序依赖项(Bundler、Composer、Pipenv、Poetry、npm、yarn和Cargo);
- 使用简单,仅仅只需要指定镜像名称;
- 扫描快且无状态,第一次扫描将在10秒内完成(取决于您的网络)。随后的扫描将在一秒钟内完成。与其他扫描器在第一次运行时需要很长时间(大约10分钟)来获取漏洞信息,并鼓励您维护持久的漏洞数据库不同,Trivy是无状态的,不需要维护或准备;
- 易于安装,支持独立安装或者集成到harbor。
0x02 产品安装
1. 安装harbor 和trivy
建议使用官方安装指南和trivy
https://goharbor.io/docs/2.3.0/install-config/run-installer-script/
重要事项:运维人员在安装的同时,必须添加trivy安装参数
sudo ./install.sh --with-trivy
如果第一次安装没有添加trivy安装参数,建议参考以下文档进行添加:
https://goharbor.io/docs/2.3.0/install-config/reconfigure-manage-lifecycle/
2.配置trivy漏洞库
下载漏洞库文件:https://github.com/aquasecurity/trivy-db/releases
解压后,看到trivy.db的文件,大约为200M左右,需要将该文件上传到harbor服务器,然后将该文件移动harbor服务器里面trivy的数据库目录:/data/trivy-adapter/trivy/db(默认安装目录,如harbor安装位置已变动,请注意相应进行调整),如图所示:
同时注意留意是否存在metadata.json文件,如无可以创建如下:{"Version":1,"Type":1,"NextUpdate":"2021-09-14T12:05:14.247543642Z","UpdatedAt":"2021-09-14T06:05:14.247544042Z","DownloadedAt":"
2021-09-14T06:49:03.185542748Z"}
3.调整trivy的参数
调整trivy的配置参数:SCANNER_TRIVY_SKIP_UPDATE=False
调整为:SCANNER_TRIVY_SKIP_UPDATE=True
SCANNER_LOG_LEVEL=debug
SCANNER_TRIVY_DEBUG_MODE=True
SCANNER_STORE_REDIS_URL=redis://redis:6379/5
SCANNER_STORE_REDIS_NAMESPACE=harbor.scanner.trivy:store
SCANNER_JOB_QUEUE_REDIS_URL=redis://redis:6379/5
SCANNER_JOB_QUEUE_REDIS_NAMESPACE=harbor.scanner.trivy:job-queue
SCANNER_TRIVY_CACHE_DIR=/home/scanner/.cache/trivy
SCANNER_TRIVY_REPORTS_DIR=/home/scanner/.cache/reports
SCANNER_TRIVY_VULN_TYPE=os,library
SCANNER_TRIVY_SEVERITY=UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL
SCANNER_TRIVY_IGNORE_UNFIXED=False
SCANNER_TRIVY_SKIP_UPDATE=False
SCANNER_TRIVY_GITHUB_TOKEN=bd14eb4e2fcaae99284492ca0571ca1ff783e3d5
SCANNER_TRIVY_INSECURE=False
HTTP_PROXY=
HTTPS_PROXY=
NO_PROXY=portal,core,jobservice,postgresql,registry,chartmuseum,localhost,.local,.internal,notary-server,127.0.0.1,nginx,trivy-adapter,notary-signer,redis,clair,db,clair-adapter,registryctl,log
0x03 产品使用
1.实时按需扫描
在此种场景下,用户按照各自的需求,单独对某个项目进行实时安全漏洞扫描,以便检查某个项目实时的安全状态。
1. 选择某个项目
2.上传时自动扫描
在此种场景下,用户根据需求对上传的镜像自动进行安全检查。同时也使用于管理员自动检测用户上传的镜像的安全状态,对于存在明显重大漏洞的镜像通知镜像所属人员进行漏洞修复。此处需要管理员权限或者更高权限才可以看到该配置
3.定时自动扫描
在此种场景下,管理员或者安全人员可以定时对所有项目进行安全检查,以便了解其安全状态。初步建议在周日进行检测,因为耗时比较久,等到周一上班即可查看到相关的结果。此处需要管理员权限或者更高权限才可以看到该配置
此处配置为每周周日下午6点进行定时扫描。
4.产品扫描性能
扫描所有项目的镜像共计3240,总耗时为:12个小时左右
0x03 查看漏洞详情
在完成扫描任务后,在【项目】-具体某个项目(此处为public)的某个镜像(此处为zookeeper),在【Artifacts】下,看到具体的镜像版本, 点击该版本,可以进入后,下拉看到【其他】,即可看到漏洞详情。具体可参考下图。
0x04 问题解疑
1.扫描某项目时,出现报错,查看日志发现提示信息
application/vnd.scanner.adapter.vuln.report.harbor+json; version=1.0 is not ready yet, retry after 5 seconds
2021-09-14T07:58:21Z [INFO] [/pkg/scan/job.go:221]: Report with mime type application/vnd.security.vulnerability.report;
2021-09-14T07:58:31Z [INFO] [/pkg/scan/job.go:221]: Report with mime type application/vnd.scanner.adapter.vuln.report.harbor+json; version=1.0 is not ready yet, retry after 5 seconds
2021-09-14T07:58:36Z [ERROR] [/pkg/scan/job.go:266]: check scan report with mime type application/vnd.scanner.adapter.vuln.report.harbor+json; version=1.0: running trivy wrapper: running trivy: exit status 1:
2021-09-14T07:41:17.603Z [34mINFO[0m Need to update DB2021-09-14T07:41:17.603Z [34mINFO[0m Downloading DB..2021-09-14T07:58:33.159Z [33mWARN[0m Increase --timeout valu
2021-09-14T07:58:33.159Z [31mFATAL[0m scan error: image scan failed: failed analysis: analyze error: timeout: context deadline exceeded: general response handler: unexpected status code: 500, expected: 200: check scan report with mime type
解决办法:按照2.产品安装中的(2)配置trivy漏洞库、(3)调整trivy 参数进行解决。
2.扫描失败,出现【查看日志】
如果我们看到类似以下的情况:【漏洞】-> 【查看日志】,该情况表明本次对该镜像的漏洞扫描失败了。
此时,我们可以选择手动扫描,具体如下:
等待扫描结束后,即可查看详细。如结束后,仍出现【查看日志】,表明镜像有问题,可联系安全人员排查处理。
3. 首次安装harbor没有添加trivy安装参数
解决办法:如果第一次安装没有添加trivy安装参数,建议参考以下文档进行添加:
https://goharbor.io/docs/2.3.0/install-config/reconfigure-manage-lifecycle/
4. 是否配置邮件告警
目前docker harbor 没有扫描漏洞告警功能。需要二次开发。
同一个项目下,存在多个镜像,可能每个镜像的项目负责人都不一样。
同一个镜像多个tag,多个tag 同时使用:
个别项目根本无人下载:
5. 邮件告警分析
1.邮件多:同一个镜像存在多个tag,多个tag同时使用。
安全分析:因为同一个镜像,存在数个或者数十个tag,漏洞报告内容相近但以一定相同, 也就意味数十封,更常见的是一下子几百封邮件告警,造成项目负责人直接忽略。
2.人员涉及多:同一个项目下多个镜像,不同的镜像负责人都不一样。
分析:此处需要逐一核对每个镜像的负责人,此处工作量也大,因为账号使用者不一定都是每个镜像负责人,如果指定部门负责人,部门负责人也难以逐一确认每个镜像的每个tag的漏洞报告,最后看到如此多的告警邮件,也会选择忽略。
3.哪些漏洞优先修复:对于漏洞报告,涉及到组件漏洞和操作系统漏洞,并且有高中低危之分,漏洞数量一般也有数百个。
分析:这么多的漏洞,开发人员是无法全部修复,确实可行的是选择性修复,但我们缺乏规范标准,需要修复哪些漏洞。
最后建议:
1.目前镜像安全扫描会根据项目的内容和大小,扫描耗时会在2分钟到20分钟左右,考虑到发布流水线效率,暂不采用上传时自动扫描的功能,采用定时扫描功能,定时时间为周五凌晨0点。
2.因为考虑到邮件告警的方式只是粗暴的告警并且还额外增加工作量,也更好地无法完成漏洞修复工作,故暂目前不采用邮件告警的方式。
3.当前的推荐的方式:
4.若后续有足够人力和时间,则建议可以在充分研讨需求后,进行排期二次开发进行邮箱告警。
镜像安全扫描建设指南-管理员篇相关推荐
- 镜像安全扫描建设指南-用户篇
0x01 背景介绍 使用开源软件作为开发过程的一部分有很多好处,其中包括但不限于:避免重复工作.提高研发效率.成熟稳定.成本较低.加快产品上市时间等. 若开源软件存有安全漏洞.恶意代码.病毒等安全问题 ...
- 《企业私有云建设指南》-导读
内容简介 第1章总结性地介绍了云计算的参考架构.典型解决方案架构和涉及的关键技术. 第2章从需求分析入手,详细讲解了私有云的技术选型.资源管理.监控和运维. 第3章从计算.网络.存储资源池等方面讲解了 ...
- 76%都存在漏洞?!Docker镜像安全扫描应该这样做
在之前的文章<从自身漏洞与架构缺陷,谈Docker安全建设>中,我们介绍了Docker存在的安全问题.整套Docker应用架构的安全基线以及安全规则,重头戏是Docker安全规则的各种思路 ...
- 新书推荐 |《企业安全建设指南:金融行业安全架构与技术实践》
新书推荐 <企业安全建设指南:金融行业安全架构与技术实践> 点击上图了解及购买 金融行业资深信安专家十余年实战经验的结晶,安全领域多位专家联袂推荐. 编辑推荐 适读人群 :安全从业人员.金 ...
- 数据仓库规范建设指南
数据仓库规范建设指南 1.数仓公共开发规范 1.1 层次调用规范 稳定业务按照标准的数据流向进行开发,即ODS-> DWD-> DWS-> APP. 非稳定业务或探索性需求,可以遵循 ...
- Docker容器镜像安全最佳实践指南
文章目录: 0x02 Docker 容器安全最佳实践 1.主机安全配置 1.1 更新docker到最新版本 1.2 为容器创建一个单独的分区 1.3 只有受信任的用户才能控制docker守护进程 1. ...
- ClearCase指南-基础篇(连载一)
ClearCase指南-基础篇(连载一) 第1章 前言 . 本文档凡斜体字即代表高级内容.高级概念.或可选内容,仅作粗略了解用,暂不必深入理会. . 如下如无特别说明,缩写"CC& ...
- Harbor集成Clair镜像安全扫描原理探知
上一篇文章中我们简单了解了Harbor集成Clair的安装方案及内网模式下CVE漏洞数据的手动导入功能.本篇文章,我们再梳理下漏洞扫描的具体原理和实现. 关于clair Clair是CoreOS 20 ...
- Harbor集成Clair镜像安全扫描并手动导入漏洞数据
通过这篇文章,你会了解到: harbor启停方法 clair镜像扫描原理 harbor数据库(MySQL)一览 clair数据库(PostgreSql)一览 harbor手动导入漏洞数据方法 背景 先 ...
最新文章
- 网络编程中的缓冲区溢出
- 2*2矩阵训练集比例对BP神经网络分类性能影响
- php 文件管理系统_如何编写程序实现图书管理系统的个人图书借阅查询功能
- flex java 全局拦截_Flex CSS阻止底层内容
- python之使用numpy实现从二维数组中找出行(子数组)为特定值的索引
- 在虚拟DOM和Diff算法中为什么不建议使用index作为key值?
- pandas 之 set_index
- 类似地图比例尺钩子下边框实现
- c语言版本双人贪吃蛇
- 软件优先级优先于硬件优先级_一切都是必须有优先级的
- Tensorflow多输入模型构建以及Dataset数据构建
- vue不让双击执行单击事件
- 路由器WIFI密码忘记了怎么办
- EF CORE DELETE
- 云计算作为一种新型的IT服务资源,主要分为几种服务类型
- 百度搜索升级冰桶算法5.0
- 基于Android的班级同学录校友录系统app
- GeenMedical:文献查询、筛选、引用排序、相似文献、全文下载、杂志分区、影响因子、结果导出、杂志评述、直接投稿,一站服务
- scanf函数的返回值以及在while循环中的应用
- 两篇文章都是翻译了一半就翻不下去了,E文水平有待提高啊