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

更新日期: 2019-12-03阅读: 2.3k标签: Docker

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

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

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

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


1 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。


2 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 调用来审计特定的容器镜像是一种漂亮的、机器驱动的替代方法,可以代替对大量的日志报告进行搜索的方法。


3 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 频道,甚至还有每周与项目维护者的聚会。


4 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。


5 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 是一个很好的选择。


6 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 来控制它。


7 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 语言,可以验证容器应用程序镜像的加密完整性。


8 Grafaes

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

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

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

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

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


9 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 提供了更多的容器故障排查资料。

10 Banyanops Collector

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

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

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


11 其他优秀开源工具

  • Dockerscan:一个 Git 提交次数不多的安全漏洞扫描器。

  • Batten:一个类似于 Docker Bench 的审计工具包,但是他们提供的支持并不活跃。

  • BlackDuck Docker security:一个以 Web 服务形式构建的容器镜像安全扫描工具。遗憾的是,目前不建议以 Web 的形式使用该产品。

  • Inspec:一个具有 Docker 容器测试功能的审核、测试框架。


12 具体情况,具体分析

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

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

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

原文链接:https://techbeacon.com/security/10-top-open-source-tools-docker-security
作者 | Bill Doerrfeld
译者 | 罗远航

链接: https://www.fly63.com/article/detial/7153

npm私有仓库 配置verdaccio在docker环境

前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的。在这里简单介绍如何使用 verdoccio 在docker环境下的配置。verdoccio,轻量级私有npm代理注册表。

ASP.NET Core 如何在运行Docker容器时指定容器外部端口(docker compose)

所以我们可以通过修改docker compose的配置文件来完成我们的需求。熟悉Docker的都应该知道容器运行时其内部会有一个端口以映射到我们外部的端口,我们需要固定的就是这个外部端口。

DOCKER上运行DOTNET CORE

下载microsoft/dotnet镜像、创建.NET Core MVC项目、上面dotnet restore这一步可能会卡很久遇到超时的状况,因为Nuget在国外的原因,博客园有提供加速镜像,参照设定好之后,速度会快很多

Docker---大型项目容器化改造

虚拟化和容器化是项目云化不可避免的两个问题。虚拟化由于是纯平台操作,一个运行于linux操作系统的项目几乎不需要做任何改造就可以支持虚拟化。而项目如果要支持容器化则需要做许多细致的改造工作。

开发人员爱Docker的10个理由

Stack Overflow开发人员调查中,开发人员将Docker评为:最受欢迎的平台,最喜欢的平台,最常用的平台。来自世界各地的近90,000名开发人员对调查做出了回应。

Docker部署网站之后映射域名

Docker中部署tomcat相信大家也都知道,不知道的可以google 或者bing 一下。这里主要是为了记录在我们启动容器之后,tomcat需要直接定位到网站信息,而不是打开域名之后,还得加个blog后缀才能访问到我们的网站首页。

微服务架构之「 容器技术 」

现在一聊到容器技术,大家就默认是指 Docker 了。但事实上,在 Docker 出现之前,PaaS社区早就有容器技术了,以 Cloud Foundry、OpenShift 为代表的就是当时的主流。那为啥最终还是 Docker 火起来了呢?

Docker部署ngnix静态网站

首先获取ngnix镜像(默认的是最新版),先来编写一个最简单的Dockerfile,一个Dockerfile修改该Nginx镜像的首页.Dockerfile是一个文本文件,其中包含了若干条指令

如何从单独的容器调试运行中的Docker容器?

容器非常适合封装软件,但是有时一味地改造容器镜像以使其尽可能小时,您可能走得太远。我们需要在“简洁”的镜像和无法调试的镜像之间找到很好的平衡。看到人们调试正在运行的容器的正常方法

内部集群的 DNS server 搭建

当我们使用 traefik 反向代理和自动服务发现后,我们对集群内部的服务分为两类:公有服务。如我的博客,网站,以及为它们提供服务的 API。我们可以通过公有的域名去映射服务使得外网能够访问

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!