您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

值得推荐的 Docker 安全开源工具

时间:2020-01-02 16:06:19  来源:  作者:

在容器安全方面,有很多使用开源工具阻止安全灾难的故事,例如前不久发生的特斯拉 Kubernetes 集群入侵事件。容器的安全性一直是一件很棘手的事情,因此如何巧妙使用开源工具就成为一件重要的事情。

如果你已经花了大量精力找到了最佳的应用程序安全性测试工具,并确保你的应用程序尽可能安全,那么你肯定不希望运行它的容器是不够安全的。幸运的是,有一些商业版的容器安全产品可供选择,但是有许多开源项目也很不错。其中有许多项目侧重于审计、跟踪公共漏洞和通用披露数据库(CVE)以及由 CIS 网络安全智能系统、国家漏洞数据库和其他机构建立的安全基准。这些工具会对容器镜像进行扫描,并将扫描后的结果与这些已知的漏洞清单进行交叉比对。

通过使用自动化容器审计或者容器安全流程,可以帮助团队在项目早期捕获问题,从而为企业带来巨大的好处。

目前有很多开源容器安全工具,这里列出了一些最好的、最成熟的、拥有广大用户群体的工具。

Docker Bench for Security(Docker 安全工作台)

Docker Bench 是一个根据安全基准对 Docker 容器进行审计的脚本。

该工具面向的是使用 Docker 社区版本进行容器管理的开发者,Docker Bench for Security 是一个根据通用的安全最佳实践设计的开源脚本,用于对 Docker 容器进行安全审计。

Docker Bench 的测试基于行业的 CIS 基准,可以自动完成繁琐的手工漏洞测试过程。

Docker 安全主管 Diogo Mónica 将其描述为“一个测试容器的容器”。你可以按照如下操作对容器进行初始化:

复制代码

docker run -it --net host --pid host --userns host --cap-add audit_control  -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST  -v /var/lib:/var/lib  -v /var/run/docker.sock:/var/run/docker.sock  -v /usr/lib/systemd:/usr/lib/systemd  -v /etc:/etc --label docker_bench_security  docker/docker-bench-security

运行结果会将每个安全配置基准的日志分为普通信息、警告信息以及通过信息。你可以直接在 Docker 容器中运行这个工具,也可以通过 Docker Compose 来克隆或者直接在你的 Docker 宿主机上运行这个脚本。

这个工具有一个缺点,它的输出结果在机器可读性上有所欠缺。社区有许多工具包实现了对 Docker Bench 的改进,比如,Docker Bench Test、drydock 以及 Actuary。

Clair

Clair 是一个 API 驱动的基于庞大的 CVE 数据库的静态容器安全分析工具。

Clair 是由 CoreOS 开发的静态容器漏洞分析工具。在 Quay.io 上也可以使用这个工具,Quay.io 是一个公共容器注册中心,是 Docker Hub 的一个 替代品。

Clair 从许多漏洞数据源获取信息,比如 Debian 安全漏洞跟踪库、Ubuntu CVE 跟踪库以及 Red Hat 安全数据库。由于 Clair 涵盖了大量的 CVE 数据库,所以它的审计是非常全面的。

Clair 首先会为容器镜像中的特性列表建立索引。然后通过 Clair API,开发人员可以查询与特定镜像相关的漏洞数据库。

你可以通过 Clair 入门文档来开始使用 Clair。在 Kubernetes 集群上部署也是很简单的:

复制代码

git clone https://github.com/coreos/clair cd clair/contrib/helm cp clair/values.yaml ~/my_custom_values.yaml vi ~/my_custom_values.yaml helm dependency update clair helm install clair -f ~/my_custom_values.yaml

Clair 的一大特性就是它的灵活性。它允许你为一些行为添加自己的驱动。此外,通过单独的 API 调用来审计特定的容器镜像是一种漂亮的、机器驱动的替代方法,可以代替对大量的日志报告进行搜索的方法。

Cilium

Cilium 是一个内核层的 API 感知网络和安全工具。

Cilium 专注于解决安全网络连接,与 Docker、Kubernetes 等 linux 容器平台有良好的兼容性,它增加了安全可视化以及控制逻辑。

它基于 Linux 内核技术 BPF(以前被称为 Berkeley packet filter)。其功能在底层进行实现的有趣之处在于,你可以直接应用和更新 Cilium 安全策略,无需更改应用程序代码或容器配置。CoreOS 开发 Cilium 的目的是为了响应现代微服务开发和快速容器部署的易变生命周期。它可以与 Kubernetes 直接进行集成,你可以使用下面的命令进行部署:

复制代码

$ kubectl create -f ./cilium.yaml clusterrole "cilium" created serviceaccount "cilium" created clusterrolebinding "cilium" created configmap "cilium-config" created secret "cilium-etcd-secrets" created daemonset "cilium" created $ kubectl get ds --namespace kube-system NAME DESIRED CURRENT READY NODE-SELECTOR AGE cilium 1 1 1 <none> 2m

Cilium 的周边支持和开发社区非常棒。你能找到大量的指南和文档、一个 Slack 频道,甚至还有每周与项目维护者的聚会。

Anchore

Anchhore 是一个使用 CVE 数据库和用户定义策略检查容器安全性的工具。

Anchore Engine 是一个分析容器镜像的工具。不仅仅加入了 CVE 的安全漏洞报告,Anchore 引擎还可以使用自定义策略来对 Docker 镜像进行评估。

不同策略会导致通过或失败的结果。策略可以基于白名单 / 黑名单、安全凭证、文件内容、配置类型或其他用户提示。

Anchore 打包成 Docker 容器镜像后,既可以独立运行,也可以在 Kubernetes 这样的容器编排平台上运行。它也可以集成 Jenkins 和 GitLab 实现 CI/CD。

使用 Anchore 命令行工具(CLI)是操作 Anchore 引擎的好方法。例如,你可以使用如下命令来查看镜像内容的详细信息:

复制代码

anchore-cli image content INPUT_IMAGE CONTENT_TYPE

再例如,你可以使用如下命令来对一个镜像进行漏洞扫描:

复制代码

anchore-cli image vuln docker.io/library/debian:latest os

Anchore 能够输出漏洞细节、威胁级别、CVE 标识符和其他相关信息的列表。由于用户定义的规则是通过 Anchore 云服务图形用户界面(GUI)创建的,所以它的操作类似于 SaaS。

OpenSCAP Workbench

OpenSCAP Workbench 是一个为各种平台创建和维护安全策略的环境。

OpenSCAP 是一个 IT 管理员和安全审计员的生态系统,其中包括许多开放的安全基准指南、安全配置基准和开源工具。

使用 Fedora、Red Hat Enterprise Linux、centos 或 Scientific Linux 的用户可以将 OpenSCAP 工作台安装为 GUI 的形式,以便在虚拟机、容器和容器镜像上运行扫描。你可以使用如下命令安装 OpenSCAP 工作台:

复制代码

# yum install scap-workbench

如果要根据 SCAP 策略指南和 CVE 来评估容器,请使用 OpenSCAP 附带的 oscap-docker 程序。

OpenSCAP 以 NIST 认证的安全内容自动化协议(SCAP)为核心,提供了许多机器可读的安全策略。OpenSCAP 安全指南指出,该项目的目标是允许多个组织通过避免冗余来有效地开发安全内容。

由于 OpenSCAP 比列表中的其他工具应用范围更广泛,所以对于希望为整个平台创建安全策略的团队来说,OpenSCAP 是一个很好的选择。

Dagda

Dagda 是一个扫描 Docker 容器中漏洞、木马、病毒和恶意软件的工具。

Dagda 是又一个用于容器安全性静态分析的工具。它的 CVE 来源包括 OWASP 依赖项检查、Red Hat Oval 以及 Offensive Security 数据库。

要使用 Dagda 扫描 Docker 容器,首先要建立一个包含漏洞数据的 Mongo 数据库。之后,执行此命令来分析单个 Docker 镜像:

复制代码

Python3 dagda.py check --docker_image jboss/wildfly

你可以在远程运行它,或者不断地调用它来监视活动的 Docker 容器。结果输出能够显示出漏洞的数量、严重性级别以及其他细节,可以帮助开发者进行安全修复。

Dagda 的优势之一是它广泛覆盖了各种漏洞数据。这意味着你可以直接访问大量最新的、全面的漏洞数据。同时,它也很灵活,你可以通过 CLI 命令行工具以及 REST API 来控制它。

Notary

Notary 是一个增强容器安全性的框架

Notary 实际上是一个 Docker 的镜像签名框架,现在开源用于其他实现。Docker 开发了它,然后在 2017 年将其捐赠给了云原生计算基金会。

Notary 主要是用于职责分离的。使用 Notary,开发人员可以委派角色并在容器之间定义职责。该工具提供了服务端工具和客户端工具,提供了一种内容发布和验证的加密安全方法。

如果要在本地部署 Notary,你需要先把代码仓库克隆到本地。之后使用 Docker Compose 来部署一个本地配置项:

复制代码

$ docker-compose build $ docker-compose up -d $ mkdir -p ~/.notary && cp cmd/notary/config.json cmd/notary/root-ca.crt ~/.notary

它依赖于 The Update Framework 以及 Go 语言,可以验证容器应用程序镜像的加密完整性。

Grafaes

Grafaes 是一个用于帮助管理内部安全策略的元数据 API。

Grafaes 可以帮助你创建自己的容器安全扫描项目。该容器安全工具是由 IBM 和谷歌于 2017 年底发布的。

开发人员可以使用 Grafaes 组件元数据 API 来定义虚拟机和容器的元数据。IBM 的 Vulnerability Advisor 也集成到了该项目中。

如果需要参考一个可靠的案例研究,请参见 Shopify 是如何使用 Grafaes 管理 500,000 个容器镜像的元数据的。与 Kritis 合作,该团队对使用 Grafeas 元数据的 Kubernetes 集群实施安全策略管理。

Grafaes 能够快速获取容器元数据,这有助于加快补救安全问题,减少漏洞被暴露以及被利用的窗口期。虽然 Grafaes 是开源的,但它是由大型软件供应商维护的,这对工具的长期支持是有好处的。

Sysdig Falco

Sysdig Falco 是一个可以提供深度容器可见性的行为活动监视工具。

Falco 是一个 Kubernetes 感知安全审计工具,它是由 Sysdig 开发的,强调对容器、主机和网络活动的行为监视。使用 Falco,开发人员可以对其基础设施进行持续检查、异常检测,并为任何类型的 Linux 系统调用设置警报通知。

Falco 文档建议用户将 Falco 作为 Docker 容器运行。你可以使用这些命令安装它。安装完成后,Falco 警报标准输出如下所示:

复制代码

stdout_output: enabled: true 10:20:05.408091526: Warning Sensitive file opened for reading by non-trusted program

通过 Falco 可以监视 shell 何时在容器中运行、容器在哪里挂载、对敏感文件的意外读取、出站网络尝试以及其他可疑调用。Sysdig 提供了更多的容器故障排查资料。

Banyanops Collector

Banyanops Collector 是一个 Docker 容器镜像静态分析框架。

Collector 是一个 Banyanops 提供支持的开源实用程序,它可以用来查看 Docker 容器中的镜像文件。开发人员可以使用 Collector 收集容器数据,执行安全策略等等。

首先,Banyanops 既支持私有容器注册中心,也可以作为 Docker Hub 上的容器运行。Banyanops 还提供 SaaS 产品,可以提供更深入的数据分析,因此,如果遇到功能受限的情况,你可能需要购买其服务。

其他优秀开源工具

  • Dockerscan:一个 Git 提交次数不多的安全漏洞扫描器。
  • Batten:一个类似于 Docker Bench 的审计工具包,但是他们提供的支持并不活跃。
  • BlackDuck Docker security:一个以 Web 服务形式构建的容器镜像安全扫描工具。遗憾的是,目前不建议以 Web 的形式使用该产品。
  • Inspec:一个具有 Docker 容器测试功能的审核、测试框架。

具体情况,具体分析

由于容器化已经发展成为一种流行的部署方式,因此最重要的是需要使用适当的安全控制来增强这些容器。值得庆幸的是,你会发现一个强大的开源安全解决方案生态系统,这些解决方案是为许多不同的环境定制的。

这些工具的整体强度取决于检查的深度。有效性还取决于 CVE 数据库和基准本身是否及时进行漏洞更新并发布新的最佳实践。值得庆幸的是,各种工具现在正在努力减少零日漏洞的利用以及容器漏洞被利用的窗口期。

开发人员也会被那些具有更好体验的工具所吸引,这些体验更好的工具能够减少无效日志以及重复数据。这类偏好只能通过反复试验和试错来确定,这取决于你的构建活动和个人偏好。



Tags:Docker   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  Tags: Docker  点击:(11)  评论:(0)  加入收藏
第一步yum install -y yum-utils device-mapper-persistent-data lvm2第二步yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce....【详细内容】
2021-06-28  Tags: Docker  点击:(118)  评论:(0)  加入收藏
前言最近在工作中,接手了不少历史遗留的项目,有一些依赖是使用的docker启动,可以正常使用。但是由于优化服务器资源的缘故,需要将这些依赖迁移到其他服务器,这时候问题出现了。此...【详细内容】
2021-06-02  Tags: Docker  点击:(254)  评论:(0)  加入收藏
近几年以来,容器生态的增长和发展比以往任何时候都要快,Docker 相关的工具及服务也随之越来越多,以至于想弄明白其中的几个工具或服务就成了一项非常艰巨的任务。无论你是初学...【详细内容】
2021-02-07  Tags: Docker  点击:(220)  评论:(0)  加入收藏
简介在平时的工作中,docker接触很多,除了经常使用的docker run ,docker stop等命令,docker还有很多十分有用但是却不经常使用的命令,下面我就总结一下。操作1、docker top这个命...【详细内容】
2021-01-14  Tags: Docker  点击:(118)  评论:(0)  加入收藏
第一个:端口映射 第二个:指定内存大小 第三个:读取、写入物理文件 第四个:日志文件 第五个:多个容器内部网络访问 第六个:遇到的问题 第一个:端口映射Nginx使用的是转发,那么这个是...【详细内容】
2020-12-15  Tags: Docker  点击:(121)  评论:(0)  加入收藏
前言不知道这个小伙伴有多久没用过 Docker 了, 突然对我说 Docker 命令怎么发生变化了docker run ...#变成了docker container run ...他说,本来对 Docker 命令就不熟悉,这下感...【详细内容】
2020-12-09  Tags: Docker  点击:(171)  评论:(0)  加入收藏
以下文章来源于转角遇到GitHub ,作者欧盆索思当前 Docker 的火热程度毋庸置疑。我们都知晓 Docker 的镜像是基于层的概念构建的。如何让镜像更小,一直是大家关注的,网上也有很...【详细内容】
2020-09-28  Tags: Docker  点击:(111)  评论:(0)  加入收藏
对于开发人员来说,要学习很多的容器、缓存、消息中间件、数据库等。比如:tomcat,jboss,websphere,redis,mongoDB,mq,mysql等。但是在自己项目中不一定都会用到,为了学习,经常会在自己...【详细内容】
2020-09-10  Tags: Docker  点击:(83)  评论:(0)  加入收藏
Compose 简介    通过前面几篇文章的学习,我们可以通过 Dockerfile 文件让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成...【详细内容】
2020-09-08  Tags: Docker  点击:(88)  评论:(0)  加入收藏
▌简易百科推荐
一、前因闲来没事,想着升级下树莓派中的应用,没曾想,全是最新的,害我以为被黑客眷顾,帮我升级了。多方查证,才知道,是上次搭建的photoprism搞的鬼,不过也不全是它的锅,只是它的yml文...【详细内容】
2021-12-28  闲余悟道    Tags:Docker   点击:(2)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  实战Java    Tags:Docker   点击:(12)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  编程菌zfn    Tags:Docker   点击:(11)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  无    Tags:docker   点击:(48)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  小码哥聊软件测试    Tags:Docker   点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  抓蛙程序猿    Tags:docker   点击:(48)  评论:(0)  加入收藏
环境:Spring5.3.10通常,应用程序开发人员不需要对ApplicationContext实现类进行子类化。相反,SpringIOC容器可以通过插入特殊集成接口的实现来扩展。使用BeanPostProcessor自定...【详细内容】
2021-10-26  Java网络研发架构师    Tags:Spring   点击:(34)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  运维贼船    Tags:docker   点击:(62)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  程序狗爱化妆    Tags:Nacos   点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  晋升奶爸的垃圾佬    Tags:Docker   点击:(168)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条