前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Docker 容器真的安全吗?

Docker 容器真的安全吗?

作者头像
Hyman.W
发布于 2019-11-18 04:08:49
发布于 2019-11-18 04:08:49
1.4K0
举报
文章被收录于专栏:Beyond CodingBeyond Coding

本文基于我今年在DockerCon上的演讲。它将讨论 Docker 容器安全性,我们当前的位置以及未来的发展方向。

这是有关 Docker 安全性的系列文章的一部分,请阅读第二部分

Containsers do not contain

我听到并读到很多人以为 Docker 容器实际上是沙箱应用程序(sandbox-applications)的意思,这意味着他们可以使用 Docker 以 root 身份在系统上运行随机应用程序。他们认为 Docker 容器实际上将保护其主机系统。

  • 我听说有人说 Docker 容器与在单独的 VM / KVM 中运行进程一样安全。
  • 我知道人们正在下载随机的 Docker 映像,然后在其主机上启动它们。
  • 我甚至看到一些 PaaS 服务器(还不是 OpenShift )允许用户上载自己的映像以在多租户系统上运行。
  • 我有一个同事说:“ Docke r是要运行从 Internet 下载的随机代码并以 root 用户身份运行它。”

“你会走进我的客厅吗?” 蜘蛛对苍蝇说。(《蜘蛛与苍蝇》是玛丽·豪伊特( Mary Howitt,1799–1888)的一首诗,于1828年出版。这首诗的第一行是“'您会走进我的客厅吗?'”。蜘蛛对苍蝇说。” 故事讲述了一个狡猾的蜘蛛通过诱使和操纵将一只苍蝇捕获到其网中。这首诗是一个告诫性的故事,反对那些使用奉承和魅力掩饰其真实意图的人们。)

不要再假设 Docker 和 Linux 内核可以保护您免受恶意软件的侵害。

Do you care?

如果您不是在多租户系统上运行 Docker,并且对容器内运行的服务使用了良好的安全性实践,则可能不必担心。你只需假设在容器内运行的特权进程与在容器外运行的特权进程是相同的即可。

有些人错误地将容器视为一种更好,更快的运行虚拟机的方法。从安全的角度来看,容器(比虚拟机在安全方面)要脆弱得多,我将在本文后面进一步介绍。

如果您像我一样相信,则应将 Docker 容器视为“容器服务”,即被视为运行 Apache 的容器,就像对待系统上运行的Apache 服务一样。这意味着您将执行以下操作:

  • 尽快放弃特权
  • 尽可能以非 root 用户身份运行服务
  • 将容器内的根 root 视为容器外的 root

当前,我们告诉“ 通用标准(Common Criteria)”中的人员以与在容器外部运行的特权进程相同的标准来对待容器中的特权进程。

不要在系统上运行随机的 Docker 映像。在很多方面,我都认为 Docker 容器的革命与 1999 年左右的 Linux 革命相似。当时,当管理员听到新的酷炫 Linux 服务时,他们会:

  • 在 rpmfind.net 等网站或随机网站上的互联网上搜索软件包
  • 将程序下载到他们的系统上
  • 如果通过RPM安装或进行安装
  • 特权运行

What could go wrong?

两周后,管理员听说 zlib 漏洞,必须弄清楚他们是否希望自己的软件容易受到攻击,同时希望并祈祷这不是漏洞!

这是Red Hat发行版和其他一些受信任的各方介入的地方,以度过难关。红帽企业Linux为管理员提供:

  • 他们可以从其下载软件的受信任存储库
  • 安全更新以修复漏洞
  • 一个安全响应团队来查找和管理漏洞
  • 一组工程师来管理/维护软件包并致力于增强安全性
  • 通用标准认证,用于检查操作系统的安全性

仅运行来自受信任方的容器。我相信您应该继续从过去获得过代码的人那里获得代码/软件包。如果代码不是来自内部或受信任的第三方,请不要依赖容器技术来保护您的主机。

So what is the problem? Why don't containers contain?

最大的问题是 Linux 中的所有内容都没有命名空间。当前,Docker 使用五个命名空间来更改系统的进程视图:进程 Process,网络 Network,安装 Mount,主机名 Hostname,共享内存 Shared Memory。

尽管这些为用户提供了一定程度的安全性,但它绝不是像KVM那样全面的。在KVM环境中,虚拟机中的进程不会直接与主机内核对话。他们无权访问/ sys/ sys / fs/ proc / *之类的内核文件系统

设备节点用于与VM内核而非主机进行通信。因此,为了使VM上的特权升级,该过程必须对VM的内核进行子虚拟化,在 HyperVisor 中找到漏洞,突破 VM 上非常紧密的 SELinux 控件(sVirt),最后攻击主机核心。

在容器中运行时,您已经到了与主机内核对话的地步。

主要内核子系统的命名空间不像以下那样:

  • SELinux
  • Cgroups
  • / sys 下的文件系统
  • /proc/sys/proc/sysrq-trigger/proc/irq/proc/bus

设备未命名空间:

  • /dev/mem
  • /dev/sd* 文件系统设备
  • Kernel Modules 内核模块

如果您可以通过特权进程来通信或攻击其中之一,则可以攻陷该系统。

关于作者

Daniel J Walsh, 图片来自 opensource.com
Daniel J Walsh, 图片来自 opensource.com

Daniel J Walsh - Daniel Walsh在计算机安全领域工作了近30年。Dan于2001年8月加入RedHat。Dan自2013年8月以来一直领导RHEL Docker支持团队,但从事容器技术工作已有几年了。他领导了SELinux项目,专注于应用程序空间和策略开发。Dan帮助开发了sVirt,安全虚拟化。他还创建了SELinux Sandbox,Xguest用户和Secure Kiosk。Dan之前曾在Netect / Bindview工作...

更多关于Daniel J Walsh

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker安全入门与实战(一)
与其他介绍Docker的文章不同,由本文开启的系列文章将专注于Docker安全研究,一共分为6部分。
0xtuhao
2022/06/21
1.1K0
Docker安全入门与实战(一)
Docker容器安全性分析
Docker是目前最具代表性的容器技术之一,对云计算及虚拟化技术产生了颠覆性的影响。本文对Docker容器在应用中可能面临的安全问题和风险进行了研究,并将Docker容器应用环境中的安全机制与相关解决方案分为容器虚拟化安全、容器安全管理、容器网络安全三部分进行分析。
FB客服
2019/12/23
1.9K0
Docker容器安全性分析
Docker
与其他介绍Docker的文章不同,由本文开启的系列文章将专注于Docker安全研究,一共分为6部分。
扬起
2022/06/24
1.2K0
Docker
Docker安全性:保护Docker容器安全的14个最佳实践
应用程序的容器化涉及将应用程序代码及其依赖项(所需的库,框架和配置文件)打包在虚拟容器中。这种方法有助于可移植性,并且可以在各种计算环境和基础架构中一致地运行,而不会降低效率。
DevOps云学堂
2021/03/16
3.7K0
Docker安全性:保护Docker容器安全的14个最佳实践
浅析Docker运行安全
AppArmor 主要的作用是设置某个可执行程序的访问控制权限,可以限制程序 读/写某个目录/文件,打开/读/写网络端口等等。
FB客服
2020/04/18
2.9K0
(译)为容器提供更好的隔离:沙箱容器技术概览
既然主流 IT 工业都在采用基于容器的基础设施(云原生方案),那么了解这一技术的短板就很重要了。Docker、LXC 以及 RKT 等传统容器都是共享主机操作系统核心的,因此不能称之为真正的沙箱。这些技术的资源利用率很高,但是受攻击面积和潜在的攻击影响都很大,在多租户的云环境中,不同客户的容器会被同样的进行编排,这种威胁就尤其明显。主机操作系统在为每个容器创建虚拟的用户空间时,不同容器之间的隔离是很薄弱的,这是造成上述问题的根本原因。基于这样的现状,真正的沙箱式容器,成为很多研发工作的焦点。多数方案都对容器之间的边界进行了重新架构,以增强隔离。本文覆盖了四个项目,分别来自于 IBM、Google、Amazon 以及 OpenStack,几个方案的目标是一致的:为容器提供更强的隔离。IBM Nabla 在 Unikernel 的基础上构建容器;Google 的 gVisor 为运行的容器创建一个特定的内核;Amazon 的 Firecracker 是一个超轻量级的沙箱应用管理程序;OpenStack 将容器置入特定的为容器编排平台优化的虚拟机之中。下面对几个方案的概述,有助于读者应对即将到来的转型机会。
崔秀龙
2019/07/24
3.1K0
(译)为容器提供更好的隔离:沙箱容器技术概览
04 . Docker安全与Docker底层实现
跟其他添加Docker容器的第三方工具一样(比如网络拓扑和文件系统共享),有很多类似的机制,在不改变Docker内核情况下就可以加固现有的容器.
iginkgo18
2020/09/27
9930
04 . Docker安全与Docker底层实现
6.Docker镜像与容器安全最佳实践
描述: 在企业中信息系统安全与业务是同样重要, 随着传统运维方式向着容器化运维方式的转变,当下企业里通常都会采用Docker来进行容器化部署和承载业务, 由于运维人员或者开发人员对容器安全的关注较少, 只是简单认为容器是有隔离和限制的, 就算是容器被黑客攻击了, 也单单是容器内部受到影响, 而对宿主的 Linux 系统和网络都不会产生太大影响。其实不然Docker容器安全也是重中之重, 它关乎着应用与数据安全,其中也关乎着宿主机的安全。
全栈工程师修炼指南
2022/09/28
3.2K0
6.Docker镜像与容器安全最佳实践
云原生安全 | docker容器逃逸
随着云计算技术的不断发展,越来越多的企业开始上“云”。云原生计算基金会(CNCF)提出了云原生(Cloud Native)的概念,云原生包含了一组应用的模式,用于帮助企业快速,持续,可靠,规模化地交付业务应用。云原生由微服务架构,DevOps 和以容器为代表的敏捷基础架构组成。
tinyfisher
2020/08/13
2.3K0
云原生安全 | docker容器逃逸
浅谈Docker隔离性和安全性
介绍 相信很多开发者都默认Docker这样的容器是一种沙盒(sandbox)应用,也就是说他们可以用root权限在Docker中运行随便什么应用,而Docker有安全机制能保护宿主系统。 比如,有些人觉得Docker容器里面的进程跟虚拟机里面的进程一样安全;还有的人随便找个源就下载没有验证过的Docker镜像,看都不看内容就在宿主机器上尝试、学习和研究;还有一些提供PaaS服务的公司竟然允许用户向多租户系统中提交自己定制的Docker镜像。请注意,上述行为均是不安全的。 本文将介绍Docker的隔离性
FB客服
2018/02/06
3.4K0
浅谈Docker隔离性和安全性
Docker容器逃逸
由于传播、利用本公众号亿人安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号亿人安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
亿人安全
2023/12/25
7060
Docker容器逃逸
[docker](九)docker -- 容器安全
Docker目前已经在安全方面做了一定的工作,包括Docker daemon在以TCP形式提供服务的同时使用传输层安全协议;在构建和使用镜像时会验证镜像的签名证书;通过cgroups及namespaces来对容器进行资源限制和隔离;提供自定义容器能力(capability)的接口;通过定义seccomp profile限制容器内进程系统调用的范围等。如果合理地实现上述安全方案,可以在很大程度上提高Docker容器的安全性。
baron
2019/12/03
2.4K0
【随笔小记】提高Docker容器的安全性
随着 Docker 的兴起,越来越多的项目采用 Docker 搭建生产环境,因为容器足够轻量化,可以快速启动并且迁移业务服务,不过在使用的过程中,我们很容易就忽略了项目的安全问题,容器虽然有隔离的作用,但是我们知道,他与虚拟机的架构差距还是比较大的。
Balliol Chen
2022/04/21
5650
docker容器的概念
软件应用(例如数据库服务器或 HTTP 服务器)通常部署到虚拟 机或物理主机的运行有一组服务的操作系统中软件应用受运行环境限制,操作系统的任何更新或补丁都可能会 破坏该应用 对于开发应用的公司,对运行环境的任何维护都需要进行测试, 保证任何系统更新不会影响到应用 根据应用的复杂性,测试并不容易。而且更新通常要停止应用, 需在环境中启用高可用,增加了复杂性
胡齐
2019/09/23
1.3K0
docker容器的概念
在Docker容器中实现安全与隔离
随着容器技术的发展,它的安全、隔离和资源控制的功能也在不断进步。本文中,我们将回顾Docker容器如何仅仅使用linux的原始功能来实现安全与隔离,比如namespaces, cgroups, capabilities等。 虚拟化和隔离 操作系统级的虚拟化、容器、空间以及“chroot with steroids”,其实都定义了同一个概念:用户空间隔离。类似Docker的产品都使用了操作系统级的虚拟化,通过用户空间隔离可以提供额外的安全性。 0.9版本起,Docker包含了libcon
CSDN技术头条
2018/02/11
1.6K0
在Docker容器中实现安全与隔离
什么是标准容器(2021 版)
有很多方法可以创建容器,尤其是在 Linux 等上。除了超级广泛的 Docker 实现,您可能听说过 LXC、systemd-nspawn,甚至 OpenVZ。
用户5166556
2023/03/18
7500
什么是标准容器(2021 版)
Docker容器实战(六) - Docker是如何实现隔离的?
Linux 命名空间对全局操作系统资源进行了抽象,对于命名空间内的进程来说,他们拥有独立的资源实例,在命名空间内部的进程可以实现资源可见。 对于命名空间外部的进程,则不可见,实现了资源的隔离。这种技术广泛的应用于容器技术里。
JavaEdge
2021/02/22
1.5K0
Docker容器实战(六) - Docker是如何实现隔离的?
经验分享:Docker安全的26项检查清单(checklist)
容器以及编排工具(例如Kubernetes)开创了应用开发的新时代,让微服务架构以及CI/CD的实现成为了可能。Docker是迄今为止最主要的容器运行时引擎。然而,使用Docker容器构建应用也引入了新的安全挑战和风险。
Jintao Zhang
2022/12/07
8470
经验分享:Docker安全的26项检查清单(checklist)
【云原生攻防研究】一文读懂runC近几年漏洞:统计分析与共性案例研究
runC是一个开源项目,由Docker公司(之前称为Docker Inc.)主导开发,并在GitHub上进行维护。它是Docker自版本1.11起采用的默认容器运行时(runtime),也是其他容器编排平台(如Kubernetes)的基础组件之一。因此在容器生态系统中,runC扮演着关键的角色。runC是一个CLI工具,用于根据Open Container Initiative(OCI)规范在Linux系统上生成和运行容器。它是一个基本的容器运行时工具,负责启动和管理容器的生命周期,包括创建、运行、暂停、恢复和销毁容器。通过使用runC,开发人员和运维人员可以更加灵活地管理容器,并且可以在不同的容器平台之间实现容器的互操作性。
绿盟科技研究通讯
2024/04/10
6730
【云原生攻防研究】一文读懂runC近几年漏洞:统计分析与共性案例研究
如何提升docker容器安全性
原创文章,转载请务必将下面这段话置于文章开头处。 本文转发自:字母哥博客,原文链接 http://www.zimug.com/463.html
字母哥博客
2020/09/23
1.1K0
相关推荐
Docker安全入门与实战(一)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文