文档章节

数人云|20种终极工具,为你的Docker搭建安全防火墙

数人云
 数人云
发布于 2017/08/28 19:04
字数 4213
阅读 9
收藏 0
点赞 0
评论 0

数人云:随着越来越多的企业将生产工作负载迁移到容器当中,关于Docker的安全性,成了普遍关注的问题。

这是一个简单却又没有答案的问题,不要试图用二进制的方式去考虑Docker安全性,最好深入地去了解Docker的工作细节,以了解Docker安全模式的运行方式。

先来看看Docker是如何工作的,以及这对容器安全意味着什么。

image

Docker有两个关键部分:Docker Engine、Docker Hub。后者是Docker的官方注册中心,这两个部分都非常重要,需要了解每个组件的组成,哪些需要被保护以及如何操作,先从Docker Engine引擎说起:

〓 Docker Engine

Docker Engine 从容器镜像文件中运行容器,以及管理网络和存储容量,保护Docker Engine需要从两个方面——Namespaces 和 Control Groups。

Namespaces是Docker从Linux内核继承的特性,将容器进行隔离,这样容器中的每个进程都无法看到相邻容器中运行的进程。

最初,Docker容器默认是根用户运行,但自V1.10依赖,Docker支持Namespaces允许以非Root用户的身份运行容器,但因其实关闭的,所以在使用之前需要激活。

Docker中支持Control Groups或Cgroups,允许设置CPU、内存、网络和Block IO的限制,容器默认可以使用无限数量的系统资源,所以设置限制非常重要,否则整个系统可能会受到Hungry 容器的影响。

除了Namespaces和Control Groups外,Docker Engine还可以通过使用SELinux和AppArmor等附加工具进一步加强。

  • SELinux为内核提供访问控制,根据用户为主机设置的策略,可以基于在容器中运行的流程类型或级别来管理访问,基于此,它可以启动或限对主机的访问。

  • AppArmor在主机上运行的每个进程都有一个安全配置文件,定义了流程可以利用的资源,Docker将默认配置文件应用到流程中,同时用户也可以应用自定义文件。

  • Similar与AppArmor类似,使用安全配置文件限制进程调用的数量,这是Docker Engine提供的基于Linux的内核安全特性列表。

〓 Docker Hub

虽然Docker Engine可以对容器进行管理,但它需要Docker栈的另外一半来拉取容器镜像,即Docker Hub容器注册表,存储和共享着容器镜像。

任何人都可以创建容器镜像,并将其公开供人下载,这既是一件好事,但同时也是一件坏事,好是因为支持开发者之间的协作,只需点击即可容易地将操作系统或应用实例化,但如果下载一个具有脆弱性的公共容器镜像,就会很糟糕。

根据经验法则,下载官方存储库,大多数常用工具都可以使用,并且不从未知的作者那里下载存储库,最重要的是,每个下载的容器镜像都应该扫描到漏洞。

对于私有存储库的用户,Docker Hub将扫描下载的容器镜像,它可以扫描一些免费的存储库,而后如果将扫描作为一个附加组件的话,需要付费。

Docker Hub并不是Docker容器的唯一注册服务,其他受欢迎的注册中心包括:Quay、AWS ECR、和GitLab Container Registry,这些工具也具备扫描的功能,另外Docker Trusted Registry(DTR)可以在付费后,安装在防火墙之后。

Docker是一个错综复杂的有着各种移动和静态部件的网络,显然插入这些安全工具中的任何一个都不会立即使整个堆栈安全,在所以层面上,都需要结合这些方法来确保Docker的安全。

因此,下次有人问Docker是否安全时,应该反问他们,是指的Docker的哪一个部分?然后,向其解释影响该层的各种安全注意事项。

尽管上面的安全功能为Docker Engine和Docker Hub提供了基本的保护,但它们缺乏专用容器安全工具的强大功能,像Twistlock这样的工具可以完全保护你的Docker栈,它超越了任何一个部分,并且可以让用户对系统有一个整体的看法,下面介绍一些Docker 安全工具:

在生态系统中有非常多的Docker安全工具,这里有一个全面的Docker安全工具列表供以参考。

Docker安全工具的索引

BlackDuck Docker security

Docker capabilities and resource quotas

Docker-bench security

1 Anchore Navigator

image

主页:https://anchore.io/

授权:商用,一些服务是免费使用的。

场景:预生产分析、漏洞新闻提要。

Anchore Navigator提供了一项免费服务:可以对Docker镜像进行深度检查。还可以探索其丰富的剖析公共映像库,充分了解其内容、构建过程和发现CVE威胁,以及已知修复相关的链接。

可以对自己的镜像进行深度分析,并订阅您经常使用的镜像,以便在升级到商业版本时接收安全警告。

2 AppArmor

image

主页:http://wiki.apparmor.net

授权:开源。

场景:运行时保护、强制访问控制(MAC)。

AppArmor让管理员为系统中的每个程序分配一个安全概要文件:文件系统访问、网络功能、链接和执行规则等等。

它是一个强制性的访问控制(或MAC)系统,防止任何被禁止的行为发生,同时还可报告违反概要文件的访问尝试等。

只需要了解概要文件的语法,并可以根据喜欢的编辑器去编写AppArmor规则。

Docker context:Docker可以自动生成和加载一个默认的文件,用于名为docker-default AppArmor的容器,可以为容器或其中的应用创建特定的安全配置文件。

3 AquaSec

image

主页:https://www.aquasec.com/

授权:商用。

场景:预生产分析、运行时保护、法规遵循和审核等。

AquaSec为容器设计的商业安全套件,功能包括:安全审计、容器镜像验证、运行时保护、自动策略学习或入侵预防。

4 BlackDuck Docker Security

image

主页:https://www.blackducksoftware.com

授权:商用。

场景:预生产分析、漏洞报告、许可/法律风险。

Black Duck Hub专门负责容器库存和报告镜像库存,将已知的安全漏洞映射到镜像索引和跨项目风险报告。可以轻松地查明导致安全风险的特定库、软件包或二进制文件,自动提供已知修复的列表。

5 Cilium

image

主页:https://www.cilium.io/

授权:开源。

场景:http层网络安全性、网络层安全性。

Cilium在容器应用之间提供透明的网络安全性。基于一种称为eBPF的新Linux内核技术,允许根据容器/pod身份定义并执行网络层和http层安全策略。

Cilum利用BPF执行核心数据路径过滤、管理、监视和重定向。这些BPF功能可以在任何Linux4.8.0内核版本或更新版本中使用。

6 CoreOS Clair

image

主页:https://coreos.com/clair/docs/latest/

授权:开源。

场景:预生产分析、漏洞新闻提要。

Clair是一个开源项目,用于静态分析容器中的漏洞(目前支持AppC和Docker)。定期从一组配置的CVE源中刷新其漏洞数据库,对可用的容器映像进行仔细检查,并对安装的软件包进行索引。如果检测到任何不安全的应用,它可以警告或阻止部署到生产。

由于Clair的镜像分析是静态的,容器永远不需要实际执行,所以可以在系统中运行之前检测到安全威胁。Clair是CoreOS Quay容器注册中心的安全引擎。

7 Docker Capabilities & Resource Quotas

image

主页:https://www.docker.com

授权:开源。

场景:运行时保护、资源保护。

资源滥用和拒绝服务是一个经常被忽视的问题,但在拥有大量软件实体竞争主机资源的环境中,这是一个切实存在的安全问题,所以不应该忘记已经与操作系统和Docker引擎捆绑在一起的基本安全措施。

Control Groupscgroups)是Linux内核的一个特性,允许您限制访问进程和容器对CPU、RAM、IOPS和网络等系统资源的限制。

允许将完整的根权限分解为多个分割权限,因此可以从根帐户中删除特定的功能,或者在更细粒度的级别上增加用户帐户的功能。

8 Docker-bench security

image

主页:https://github.com/docker/docker-bench-security

授权:开源。

场景:合规审计。

Docker用于安全的工作台是一个元脚本,用于检查生产中部署Docker容器的数十种常见的最佳实践。

此脚本很方便地打包为Docker容器,只需在其主页上复制和粘贴一行代码,就可以立即看到Docker容器和运行Docker引擎的主机(Docker CE或Docker Swarm)的250个检查结果。Docker Bench测试的灵感来自于CIS Docker Community Edition v1.1.0。

9 Dockscan

image

主页:https://github.com/kost/dockscan

授权:开源。

场景:合规审计。

简单的Ruby脚本,用于分析Docker安装和运行容器,既针对本地主机,也针对远程主机。

安装和运行只需一个命令即可,并且会生成HTML报告文件。Dockscan reports配置了资源限制,若容器生成了太多的进程,或者有大量修改过的文件,或者Docker主机允许容器直接将流量转发到主机网关,即可命名几个检查。

10  Sysdig Falco

image

主页:https://www.sysdig.org/falco/

授权:开源。

场景:运行时报警、取证。

Sysdig Falco是一种开源的行为监测应用,旨在检测基于其技术的异常活动。Sysdig Falco在任何Linux主机上都是一种入侵检测系统。

Falco是一种与众不同的审计工具,它在用户空间中运行,使用内核模块来拦截系统调用,而其他类似的工具在内核级执行系统调用过滤/监视。用户空间实现的优点是能够与Docker、Docker Swarm、Kubernetes、Mesos等外部系统集成,并导入其资源知识和标签。

Docker上下文:Falco支持特定于容器的上下文。可以监视容器的行为,不必修改它们。定制规则的创建很容易掌握,默认的规则文件以正常的默认值填充。

11 HashiCorp Vault

image

主页:https://www.vaultproject.io/

授权:免费企业版。

场景:安全容器的凭证存储,信任管理。

Hashicorp的密码库是用于管理密码的高级套件:密码、Ssl/Tls证书、API密钥、访问令牌、SSH证书等等。支持基于时间的 Secrets租赁、细粒度的 Secrets访问、新Secrets的生成、关键的滚动(更新密钥,而不使用旧的密钥生成的秘密)等等。

Vaults Keeps保存了详细的审计日志,记录每个用户/实体执行的所有 Secrets和访问及操作,因此操作人员可以很容易地跟踪任何可疑的交互。

Docker上下文:在新的微服务和容器环境中,安全的分发和可跟踪性是一个核心问题,在此环境中,软件实体不断地被派生和删除。Vaults本身可以作为Docker容器进行部署。

12 NeuVector

image

主页:http://neuvector.com/

授权:商用。

场景:运行时保护、遵从性和审计。

NeuVector专注于运行时的实时安全保护。自动发现应用程序、容器和服务的行为,以及与其他Linux Id类似方式检测安全升级和其他威胁。NeuVector“强制”容器部署在每个物理主机上,并完全访问本地的Docker守护进程,所使用的内部技术在公开可访问的文档中并没有详细地详细说明。

NeuVector的目标是非侵入式、插装式安全套件、自动发现运行的容器以及它们的默认行为,帮助和建议操作人员设计他们的基础设施安全配置文件。

13 Notary

image

主页:https://github.com/docker/notary

授权:开源。

用例:可信的映像库、信任管理和可验证性。

镜像伪造和篡改是基于文档的部署的一个主要安全问题,Notary是一种发布和管理受信任的内容集合的工具,可以通过与Linux系统中提供的软件存储库管理工具类似的方式批准可信发布和创建签名的集合。

一些Notary目标包括保证图像的新鲜度(大部分是最新的内容,避免已知的漏洞),用户之间的信任委托,或可信的分布在不可信的镜像或传输通道上。

14 OpenSCAP

image

主页:https://www.open-scap.org/

授权:开源。

场景:法规遵循和审核,认证

OpenSCAP提供了一套自动化的审计工具,以检查应用中的配置和已知的漏洞,遵循了Nist认证的安全内容自动化协议(SCAP)。

可以创建自己的自定义规则,并定期检查部署在公司中的任何软件是否严格遵守规则。

这些工具集不仅关注于安全性本身,还提供了测试和报告。

Docker上下文:OpenSCAP套件提供了一个特定于docdocker的工具——Oscap-Docker,来审计镜像,同时评估运行的容器和云端镜像。

15 Remnux

image

主页:https://remnux.org/

许可:开源。

场景:取证。

基于Ubuntu的安全发行版。REMnux是一个免费的Linux工具包,帮助恶意应用分析人员使用逆向工程的应用,通常称为取证。系统绑定了大量预先安装的分析和安全工具:Wireshark, ClamAV, Tcpextract, Rhino Debugger, Sysdig, Vivisect。

16 SELinux

image

主页:https://selinuxproject.org

授权:开源。

场景:运行时保护、强制访问控制(MAC)。

SELinux是Linux内核安全模块。也是一个强制性的访问控制系统。从强制访问控制到强制性的完整性控制、基于角色的访问控制(RBAC)和类型强制架构。

Docker上下文:类似于AppArmor,SELinux提供了一层额外的访问策略,并在主机和容器应用之间进行隔离。

17 Seccomp

image

主页:https://www.kernel.org

授权:开源。

场景:运行时保护、强制访问控制(MAC)。

Seccomp是Linux内核中的一个沙箱化工具,可以将其看做基于规则的防火墙,但对于系统调用,使用Berkeley包过滤(BPF)规则来过滤Syscall API,并控制它们的处理方式。

有了Seccomp,可以选择哪些系统是禁止的,哪些是允许的,如,您可以禁止在容器内进行文件权限操作。

18 Sysdig

image

主页:https://www.sysdig.org/

许可证:开放源码,商业产品建立在免费技术之上。

场景:异常行为调试,取证。

Sysding是针对Linux系统的全系统的探索、故障排除和调试工具。它记录任何进程所做的所有系统调用,允许系统管理员在操作系统或运行在它上的任何进程中查找BUG。

19 Tenable Flawcheck

image

主页:https://www.tenable.com/flawcheck

授权:商用。

场景:预生产分析、漏洞新闻提要。

与此列表中的其他商业工具一样,缺陷检查可以存储容器映像,并在它们构建之前进行扫描,然后才能推到生产环境。缺陷检查利用了漏洞/Nessus的技术和数据库漏洞,恶意软件和入侵载体,并将其调整为容器化和敏捷/CD的环境。

20 Twistlock

image

主页:https://www.twistlock.com/

授权:商用。

场景:预生产分析、运行时保护、法规遵循和审核等。

用于支持容器化环境的商业安全套件:漏洞管理、访问控制、分析和对安全标准遵从性的取证。

Twistlock与CI/CD集成,为像Jenkins或TeamCity和可调用的Webhooks这样的工具提供原生插件,这样即可为每一个构建和测试环境触发索引和扫描过程。

Docker是一个错综复杂的有着各种移动和静态部件的网络,显然插入这些安全工具中的任何一个都不会立即使整个堆栈安全,在所有层面上,都需要将这些工具结合起来确保Docker的安全。

© 著作权归作者所有

共有 人打赏支持
数人云
粉丝 16
博文 101
码字总数 328110
作品 0
朝阳
架构师
基于Docker+Seafile搭建私人云存储

在墙里的同学们不难发现,现在除了百度云以外,国内几乎没有什么公开的云盘服务了,有时我们想在自己的不同设备之间、或者给客户共享点资料非常困难,试想一下如果能有自己私有云存储,并且能...

半夜菊花茶 ⋅ 2017/11/14 ⋅ 0

如期而至的 Swarm 新工具 Crane 开源解读

中秋节前,数人云技术团队推出了一款新的基于SwarmKit技术栈的工具。大家可能都了解到数人云的容器技术栈是用Mesos驱动的,为什么在Docker刚发布最新的1.12版之后,我们要做出这个工具呢?在...

达尔文 ⋅ 2016/10/17 ⋅ 2

数人云容器管理工具 Crane v1.0.5 发布,优化相关功能

数人云容器管理工具 Crane v1.0.5 发布了。Crane 是数人云推出的容器管理工具,它根据 Docker 的原生编排功能,采用轻量化架构,帮助开发者快速搭建 DevOps 环境,体验 Docker 的各种最新功能...

凝小紫 ⋅ 2016/10/01 ⋅ 9

Meetup北京报名开启|一起吹响Container+集结号

Meetup北京报名开启|一起吹响Container+集结号 数人云博客2017-08-0112 阅读 container开启 Container技术在国内的落地实践, 已进阶Container+ 8月阅兵仪式,一睹超强装备的风采, 技术圈也...

数人云博客 ⋅ 2017/08/01 ⋅ 0

当容器与CI/CD相遇,7个建议送给你

当容器与CI/CD相遇,7个建议送给你 数人云博客2017-09-193 阅读 ci 数人云: Docker是CI/CD的早期采用者,通过利用如GIT等源代码控制机制的正确集成,Jenkins可以在开发者每次提交代码时启动...

数人云博客 ⋅ 2017/09/19 ⋅ 0

数人云推出的容器管理工具--Crane

Crane 是数人云推出的容器管理工具,它根据 Docker 的原生编排功能,采用轻量化架构,帮助开发者快速搭建 DevOps 环境,体验 Docker 的各种最新功能。 主要功能: Swarm特性:强调了Swarm的通...

匿名 ⋅ 2016/09/13 ⋅ 0

微服务架构企业级增强产品,数人云推出统一配置中心Hawk

微服务架构企业级增强产品,数人云推出统一配置中心Hawk 数人云博客2017-11-221 阅读 架构服务产品配置 11月16日,数人云在PaaS Innovation大会上,正式发布企业应用架构管理体系EAMS,这是数...

数人云博客 ⋅ 2017/11/22 ⋅ 0

Docker的终极进化

伴随着容器的安全,存储以及编排问题,在过去几个月整个生态系统发生了快速的变化。在春季你所知道的关于Docker的内容,现在或许已经不再属实。如下是从那以后整个容器生态系统变化的摘要。 ...

linuxprobe ⋅ 2016/10/23 ⋅ 0

OSC 第 100 期高手问答 —— Apache Mesos

OSCHINA 本期高手问答( 11月25 日- 12月1日)我们请来了数人云平台负责人 @wtzhou 来解答 集群管理器 Apache Mesos 方面的问题。 周伟涛,@wtzhou ,现数人科技云平台负责人,曾就职于国际开源...

叶秀兰 ⋅ 2015/11/25 ⋅ 21

Harbor私有仓库中如何彻底删除镜像释放存储空间?

简介: Harbor私有仓库运行一段时间后,仓库中存有大量镜像,会占用太多的存储空间。直接通过Harbor界面删除相关镜像,并不会自动删除存储中的文件和镜像。需要停止Harbor服务,执行垃圾回收...

猫猫maomao ⋅ 04/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Boot整合模板引擎thymeleaf

项目结构 引入依赖pom.xml <!-- 引入 thymeleaf 模板依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId......

yysue ⋅ 6分钟前 ⋅ 0

ConstraintLayout使用解析

AndroidStudio3.0创建Project默认的布局就是ConstraintLayout。 AndroidStudio3.0前的可以自己修改,使用ConstraintLayout。 为了要使用ConstraintLayout,我们需要在app/build.gradle文件中...

_OUTMAN_ ⋅ 18分钟前 ⋅ 0

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 51分钟前 ⋅ 8

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 57分钟前 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部