【转载】从Docker容器漏洞谈Docker安全

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

近日,一篇在Docker博客上发表的文章显示,Docker的容器已经被突破,并且能够遍历宿主机的文件了。由于Docker的轻量,快速等等优点,让Docker在PaaS[注]领域愈发火热,自然也就吸引了安全人员对其进行研究。这篇文章无疑将Docker推进了一个新纪元:放开应用,想想安全。

不要给用户root权限

该文章的作者强调:只有在容器内以 root 权限运行不受信任的应用程序,才有可能触发这个漏洞。而这是我们不推荐的运行 Docker Engine 的方式。

这句话可以分两个层次来解读,首先就是root权限的使用,其次是何为不受信任的应用程序。

Docker并不是虚拟机,Docker本来的用法也不是虚拟机。举个简单的例子,普通的虚拟机租户root和宿主root是分开的,而Docker的租户root和宿主root是同一个root。一旦容器内的用户从普通用户权限提升为root权限,他就直接具备了宿主机的root权限,进而进行几乎无限制的操作。这是为什么呢?因为Docker原本的用法是将进程之间进行隔离,为进程或进程组创建隔离开的运行空间,目的就是为了隔离有问题的应用,而进程之间的限制就是通过namespace和cgroup来进行隔离与配额限制。每一个隔离出来的进程组,对外就表现为一个container(容器)。在宿主机上可以看到全部的进程,每个容器内的进程实际上对宿主机来说是一个进程树。也就是说,Docker是让用户以为他们占据了全部的资源,从而给用户一个“虚拟机”的感觉。

第二,何为不受信任的应用程序?来源不明的应用程序,或者二进制代码等等,以及有漏洞的应用程序,都可以称为不受信任的应用程序。举个例子,在Docker容器中只运行基础的Apache服务器和MySQL数据库,可能大家认为这样的环境用root也没问题,但是如果Apache或者MySQL有不为人所知的漏洞被利用,那么这两个应用也就成为了不受信任的应用。因此在以root运行应用程序,或是在考虑安全环境的时候,需要以一切皆不可信的态度来对Docker环境进行安全加固。

Docker安全要依靠辅助机制

该作者还强调,如果坚持要root权限使用 Docker Engine ,系统的安全性可能会受到一系列众所周知的内核安全漏洞的影响。因此特别建议:

· 在运行 Docker Engine 的系统中同时运行 AppArmor 或者 SELinux。

· 将机器分成不同的组,相互信任的容器划在一组。

· 不要以 root 权限运行任何不受信任的应用程序。

在上述三条建议之上,还应该有一种机制,就是保障机制。要不停的轮序去检测,要能够发现可疑的行为,并且对任何可疑的行为进行反应。比如进程A并未给root权限,但是后来通过检测机制发现它变成了root权限,我们就可以怀疑它是进行了非法提权的操作。也就是说,我们允许你逃逸,但是我们也能够在最短的时间内发现你的逃逸行为,并且制止你。

此外,Docker在安全方面还存在亟待加固的点:login过程使用明文传输用户名和密码,Image分发认证、Docker对Host的逃逸(已公布的那个漏洞)、Docker内给租户的root账号能否提供、Docker的配额限制(磁盘、网络)、Docker内万一提权后的限制(SELinux/AppArmor/GRSecurity)、出入Docker流量的监控和审计、AUFS存在的攻击点。

由于Docker需要把若干个container组一个虚拟的私有内网,解决租户之间的网络隔离。目前缺乏完整方案。从网络性能来分析,现状一般通过Docker Bridge或OVS实现NAT、用IPtable做隔离,性能堪忧,需要测试和验证。也有同仁表示性能衰减在50%以上。因此性能衰减严重也就可能成为一个新的攻击平面。在网络方面的攻击点存在container之间的嗅探、ARP攻击,IPtable的漏洞利用、对IPtable饱和攻击等等。

当然,绝大多数的Docker安全问题都是建立在被用在公有云环境下的,如果Docker被使用在私有云环境中,那么它所带来的好处要远远多于他带来的问题。

 

转载自:http://www.d1net.com/security/news/270982.html

转载请注明:旅途@KryptosX » 【转载】从Docker容器漏洞谈Docker安全

目录
打赏
0
0
0
0
23
分享
相关文章
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
32 16
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
93 30
揭秘 Microsoft.Docker.SDK:让容器开发更轻松的强大工具揭秘
随着云计算和容器技术的快速发展,`Docker` 已经成为容器化技术的事实标准。`Microsoft` 作为 `Docker` 的主要支持者和参与者,推出了 `Microsoft.Docker.SDK`,旨在帮助开发者更轻松地进行容器开发。本文将深入揭秘 Microsoft.Docker.SDK 的功能、使用方法以及它在容器开发中的应用。
45 12
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
78 23
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
423 15
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
334 93
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
372 78
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等