设为首页收藏本站

安徽论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 25827|回复: 0

Docker安全第一话--镜像安全

[复制链接]

77

主题

530

回帖

1044

积分

金牌会员

Rank: 6Rank: 6

积分
1044
发表于 2022-3-26 10:27:51 | 显示全部楼层 |阅读模式
网站内容均来自网络,本站只提供信息平台,如有侵权请联系删除,谢谢!
Docker镜像安全


概述

Docker提供了docker hub可以让用户上传创建的镜像,以便其他用户下载,快速搭建环境。但同时也带来了一些安全问题:
1. 下载的镜像是否被恶意植入后门?
2. 镜像所搭建的环境是否本身就包含漏洞?
3. ……

Docker容器基于镜像搭建,那么镜像安全则直接决定了容器安全。
所以,对镜像进行安全扫描就变得尤其重要了,接下来,我们docker的镜像安全

1. Clair

Clair是目前最流行的镜像扫描工具,主要模块分为Detector、Fetcher、Notifier和Webhook,Clair首先对镜像进行特征的提取,然后再将这些特征匹配CVE漏洞库,若发现漏洞则进行提示及修补,其功能侧重于扫描容器中的OS及APP的CVE漏洞。

• Fetcher(获取器)- 从公共源收集漏洞数据
• Detector(检测器)- 指出容器镜像中包含的Feature
• Notifier+WebHook(通知钩子)- 当新的漏洞被发现时或者已经存在的漏洞发生改变时通知用户/机器
• Databases(数据库)- 存储容器中各个层以及漏洞
• Worker(主进程) - 每个Post Layer都会启动一个worker进行Layer Detect
安装Clair(docker-compose):
  1. $ curl -L https://raw.githubusercontent.com/coreos/clair/master/contrib/compose/docker-compose.yml -o $HOME/docker-compose.yml$ mkdir /usr/src/clair-2.0.1/clair_config$ curl -L https://raw.githubusercontent.com/coreos/clair/master/config.yaml.sample -o /usr/src/clair-2.0.1/clair_config/config.yaml$ $EDITOR /usr/src/clair-2.0.1/clair_config/config.yaml # Edit database source to be postgresql://postgres:password@postgres:5432?sslmode=disable$ diff /usr/src/clair-2.0.1/clair_config/config.yaml /usr/src/clair-2.0.1/clair_config/config.yaml.org 23,24c23<       #source: host=localhost port=5432 user=postgres sslmode=disable statement_timeout=60000<       source: postgresql://postgres:password@postgres:5432?sslmode=disable--->       source: host=localhost port=5432 user=postgres sslmode=disable statement_timeout=60000$ $EDITOR $HOME/usr/src/clair-2.0.1/docker-compose.yml # Edit image source to be quay.io/coreos/clair:v2.0.1$ diff /usr/src/clair-2.0.1/docker-compose.yml /usr/src/clair-2.0.1/docker-compose.old.yml<     image: quay.io/coreos/clair-git:latest--->     image: quay.io/coreos/clair:v2.0.1$ docker-compose -f /usr/src/clair-2.0.1/docker-compose.yml up –d
复制代码
输入 docker-compose ps 命令发现clair以及用于存储clair数据的postgres已经处于运行状态

Clairctl

Clair的功能通过Restful API实现,但是每个API参数很多,而且上传镜像时还有很多复杂的处理。所以CoreOS为我们提供了Clairctl这款工具。Clairctl是一个Clair客户端,
让用户可以通过简单的命令就能实现镜像的上传、扫描、输出报告等等。
安装clairctl:
  1. # curl -L https://raw.githubusercontent.com/jgsqware/clairctl/master/install.sh | sh
复制代码
输入clairctl version查看clairctl版本

输入clairctl health查看是否连接上clair

使用clairctl检测本地的centos镜像

发现有3个高危漏洞,想看详细信息的话就把检测结果输出成报告形式

可以看到详细的漏洞介绍,以及漏洞的CVE链接


2. Anchore

Anchore也是一个强大的镜像扫描工具,与Clair不同,Anchore侧重于对镜像的审计,其有强大的对镜像的解析能力。
安装anchore:
  1. $ apt-get install python-pip python-rpm yum$ git clone https://github.com/anchore/anchore.git$ cd anchore$ pip install --upgrade --user .$ export PATH=~/.local/bin:$PATH
复制代码
初始的时候先输入anchore feeds sync更新漏洞库

扫描本地恶意镜像evil


输入 anchore query –image evil show-file-diffs base 查看恶意镜像跟纯净镜像相比有什么不同的地方


如图,跟原始镜像对比,evil镜像上新增了wget和openssl等软件和一个后门文件 backdoor.apk.sh,那么我们就可通过这些信息推测出此镜像下载了wget然后从网上下载一个sh后门,执行恶意命令了。

3. dockerscan

http://github.com/cr0hn/dockerscan
Dockerscan也是一款恶意镜像扫描的利器,其通过扫描镜像中的环境变量、操作命令以及端口开放信息来识别其是否为恶意镜像

我们通过几个环境变量(LD_PRELOAD、REMOTE_PORT、REMOTE_ADDR)和运行run.sh的操作识别出evil镜像有一个连接C&C服务器的行为,从而断定这是一个恶意镜像。

镜像安全决定了容器安全,而目前Docker Hub上的镜像75%都存在漏洞,所以我们使用镜像运行容器前,一定要对镜像镜像进行扫描,从而提高安全性。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
免责声明
1. 本论坛所提供的信息均来自网络,本网站只提供平台服务,所有账号发表的言论与本网站无关。
2. 其他单位或个人在使用、转载或引用本文时,必须事先获得该帖子作者和本人的同意。
3. 本帖部分内容转载自其他媒体,但并不代表本人赞同其观点和对其真实性负责。
4. 如有侵权,请立即联系,本网站将及时删除相关内容。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表