镜像安全扫描建设指南-管理员篇

煜铭2011 煜铭2011     2022-12-03     355

关键词:

0x00 产品介绍

Trivy是一种适用于CI的简单而全面的容器漏洞扫描程序。软件漏洞是指软件或操作系统中存在的故障、缺陷或弱点。

 

Trivy检测操作系统包(Alpine、RHEL、CentOS等)和应用程序依赖(Bundler、Composer、npm、yarn等)的漏洞

Trivy 扫描器主要有以下几个特点:

  1. 检测面很全,能检测全面的漏洞,操作系统软件包(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);
  2. 使用简单,仅仅只需要指定镜像名称;
  3. 扫描快且无状态,第一次扫描将在10秒内完成(取决于您的网络)。随后的扫描将在一秒钟内完成。与其他扫描器在第一次运行时需要很长时间(大约10分钟)来获取漏洞信息,并鼓励您维护持久的漏洞数据库不同,Trivy是无状态的,不需要维护或准备;
  4. 易于安装,支持独立安装或者集成到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背景介绍使用开源软件作为开发过程的一部分有很多好处,其中包括但不限于:避免重复工作、提高研发效率、成熟稳定、成本较低、加快产品上市时间等。若开源软件存有安全漏洞、恶意代码、病毒等安全问题,... 查看详情

7.企业安全建设指南(金融行业安全架构与技术实践)---外包安全管理(代码片段)

第7章 外包安全管理7.1 外包安全管理的问题与“痛点” 7.1.1 几个教训深刻的外包风险事件 7.1.2 外包安全管理的必要性 7.1.3 外包管理中的常见问题7.2 外包战略体系 外包战略由以下几部分组成: 1.外包管理目标 2.外... 查看详情

maxcompute安全管理指南-基础篇

背景及目的方便和辅助MaxCompute的projectowner或安全管理员进行project的日常安全运维,保障数据安全。MaxCompute有安全模型,DataWorks也有安全模型,当通过DataWorks使用MaxCompute,而DataWorks的安全模型不满足业务安全需求时,合理的将... 查看详情

maxcompute安全管理指南-基础篇(代码片段)

背景及目的方便和辅助MaxCompute的projectowner或安全管理员进行project的日常安全运维,保障数据安全。MaxCompute有安全模型,DataWorks也有安全模型,当通过DataWorks使用MaxCompute,而DataWorks的安全模型不满足业务安全需求时,合理的将... 查看详情

8.企业安全建设指南(金融行业安全架构与技术实践)---安全考核(代码片段)

第8章 安全考核8.1 考核评价体系与原则 1.考核评价体系 2.奖惩机制 3.人才选拔机制 4.管理者的权利与义务8.2 安全考核对象 1.考核团队 信息安全考核内容通常既包括结果指标,又包括过程指标: 1.安全事件数 a)区... 查看详情

maxcompute安全管理指南-案例篇(代码片段)

通过《MaxCompute安全管理-基础篇》了解到MaxCompute和DataWorks的相关安全模型、两个产品安全方面的关联,以及各种安全操作后,本篇主要给出一些安全管理案例,给安全管理的成员作为参考。项目创建案例前面了解了MaxCompute和DataW... 查看详情

互联网企业安全高级指南读书笔记之分阶段的安全体系建设

宏观过程第一阶段是基础安全策略的实施,ROI最高,大多属于整改项,不需要太多额外的投入就能规避80%的安全问题第二阶段是系统性整体建设,如果是大型互联网公司,应该直接进入自研之路第三阶段是业... 查看详情

11.企业安全建设指南(金融行业安全架构与技术实践)---互联网应用安全(代码片段)

第11章 互联网应用安全 传统企业会用防火墙进行隔离,将应用部署在隔离区(DMZ)。11.1 端口管控 首先要做的就是端口管控,即在防火墙上严格限制对外开放的端口。原则上DMZ服务器只允许对外开放80,443端口,... 查看详情

互联网企业安全高级指南读书笔记之安全管理体系

外部评价指标攻防能力——如果安全团队没几个懂攻防的骨干,那像样的安全团队这件事就无从谈起、对攻防的理解是做安全的基础,业界普遍的状况是整体实力强的安全团队攻防能力必然不弱,而攻防能力弱的团队... 查看详情

9.企业安全建设指南(金融行业安全架构与技术实践)---安全认证(代码片段)

第9章 安全认证9.1 为什么要获得认证9.2 认证概述 9.2.1 认证分类 9.2.2 认证机构9.3 选择什么样的认证9.4 如何通过认证                       查看详情

化工厂人员定位保障安全管理

近年来,化工行业重特大安全事故时有发生,不仅严重损害人员群众生命财产安全、影响经济高质量发展和社会稳定,同时还严重制约了化工行业的发展因此:国家应急部2021年9月10日发布关于印发《“工业互联网... 查看详情

harbor镜像仓库使用精简指南(代码片段)

一、使用管理员分配用户使用管理员登录harbor控制台,进入“系统管理”--“用户管理”,点击创建用户:填写创建用户表单,即分配一个用户账号:二、新建项目使用刚才创建的testuser登录harbor控制台,点击右侧“新建项目”... 查看详情

harbor镜像仓库使用精简指南(代码片段)

一、使用管理员分配用户使用管理员登录harbor控制台,进入“系统管理”--“用户管理”,点击创建用户:填写创建用户表单,即分配一个用户账号:二、新建项目使用刚才创建的testuser登录harbor控制台,点击右侧“新建项目”... 查看详情

数据安全态势感知运营中心建设参考指南

声明本文是学习​​数据安全态势感知运营中心建设桔皮书.下载地址http://github5.com/view/471​​而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们前言进入21世纪以来,全球科技创新进入空前活跃时期,新... 查看详情

容器云paas平台建设中应关注的重点和难点

...析和设计实现。主要包含安全集中控制、资源统一管理、镜像统一管理、应用统一管理、配置统一管理、统一的监控管理和智能运维,以及企业基础服务的提供。1、安全治理在容器云PaaS平台中,通过租户、集群、用户三级安全... 查看详情

6.企业安全建设指南(金融行业安全架构与技术实践)---安全培训(代码片段)

第6章 安全培训6.1 安全培训的问题与“痛点” 安全意识就是"对风险的感知和主动规避"。 6.1.1 信息安全意识不足的真实案例 6.1.2 信息安全培训的必要性 金融企业信息安全培训的必要性体现在三个方面: 1.金融... 查看详情

10.企业安全建设指南(金融行业安全架构与技术实践)---安全预算总结与汇报(代码片段)

10.1 安全预算 1.安全预算比例 占用IT投入的3%~10%。 2.预算分配 投入前三名为:保护和预防,检测和响应,合规和审计。 "三三三原则": 1/3投入到外部情报收集,这是来自于外部的红军,包括众... 查看详情

工业企业的工控安全现在做的怎么样了?

1、       工控企业在信息安全领域的现状: 1)、目前工业企业在工控安全建设中,没有具体对应的企业分级建设指南或标准,企业无从知道安全建设的临界点,并且各部委安全管理职能相互交叉,... 查看详情