近日,一篇在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安全

【转载】从Docker容器漏洞谈Docker安全相关推荐

  1. Docker容器虚拟化技术---Docker运维管理(Docker Compose)4

    Docker容器虚拟化技术-Docker运维管理(Docker Compose)4 Docker Compose 通过前面的讲解我们知道使用一个Dockerfile模板文件,可以很方便地定义一个单独的 ...

  2. Docker容器虚拟化技术---Docker运维管理(Swarm集群管理)3

    Docker容器虚拟化技术-Docker运维管理(Swarm集群管理)3 Swarm集群管理 docker swarm是docker官方提供的一套容器编排系统,是Docker公司推出的官方容器集群平台 ...

  3. Docker容器虚拟化技术---Docker高级实战(DockerFile)2

    Docker容器虚拟化技术-Docker高级实战(DockerFile) DockerFile是一个文本格式的配置文件,用户可以使用DockerFile来快速创建自定义的镜像. 1. DockerFi ...

  4. 如何从Docker容器内部获取Docker主机的IP地址

    本文翻译自:How to get the IP address of the docker host from inside a docker container As the title says. ...

  5. 如何在Docker容器中运行Docker [3种方法]

    在本博客中,我将向您介绍在docker中运行docker所需的三种不同方法. Docker In Docker的用处 dockerIndocker的一个潜在用处是CI管道,在代码成功构建后,您需要在其 ...

  6. Docker 容器中运行 Docker 命令

    Docker 容器中运行 Docker 命令 在使用 GitLab/Jenkins 等 CI 软件的时候需要使用 Docker 命令来构建镜像,需要在容器中使用 Docker 命令:通过将宿主机的 D ...

  7. docker容器内漏洞_如何在2020年发现和修复Docker容器漏洞

    docker容器内漏洞 Containerization allows engineering teams to create a sandbox environment in which to ru ...

  8. Docker容器虚拟化技术---Docker安装和操作1

    一.Docker安装 Docker在主流的操作系统和云平台上都可以使用,包括Linux操作 系统(如Ubuntu.Debian.CentOS.Redhat等).MacOS操作系统和 Windows操作 ...

  9. Docker容器基础(二) - Docker公司的入场

    一天天的,PaaS深入人心,Cloud Foundry为首的传统PaaS,开始蓄力基础设施领域的 平台化和PaaS化,于是发现了PaaS中的问题 1 如何给应用打包 Cloud Foundry/Ope ...

最新文章

  1. AAAI 2020| 一文看尽腾讯优图10篇入选论文
  2. border和图片之间有缝隙_院子里现浇水泥板,每块之间留7公分的缝,铺出来的效果漂亮大气...
  3. SharePoint2016如何使用策略进行文档归档
  4. java 图片压缩100k_java实现图片压缩
  5. 人生的许多不经意-致51CTO
  6. 【HBase】学习笔记
  7. 将ini文件内容读出
  8. Linked List Sorting (链表)
  9. 最速下降法matlab全局最小值_最速下降和Newton法:Matlab实现
  10. 收藏 | 电子元器件图片、名称、符号图形对照
  11. **一些常用的字体英文名**
  12. (转)cocos2d-x学习笔记(五)仿真树叶飘落效果的实现(精灵旋转、翻转、钟摆运动等综合运用)
  13. OSChina 周五乱弹 —— 有一个朝代红薯不能去
  14. Pandas知识点-绘制统计图
  15. 【第一组】第十四次冲刺例会纪要
  16. cnn图像风格转换原理论文整理(一)
  17. Node.js中的npm与包
  18. 如何优化你在百度搜索中的排行
  19. 使用beecloud和easychat 做微信H5 微信公众号支付遇到的坑
  20. 《装甲战》的主要原则

热门文章

  1. js中获取对象属性的3种方式
  2. mysql function怎么创建_mysql,function_mysql创建函数出现问题?,mysql,function - phpStudy
  3. mysql数据类型支持比较运_Mysql支持的数据类型(总结)
  4. 廖雪峰讲python高阶函数求导公式_高阶函数 - 廖雪峰 Python 2.7 中文教程
  5. win7 mysql添加到服务_MySQL服务添加到Windows系统服务中
  6. ios13苹方字体ttf_字体 | iOS1013 SF Compact Rounded 英文 By alex
  7. ora 00900 已编译但有错误_技术分享|万万没想到!编译错误竟然还没灭绝???
  8. 最优化学习笔记(十七)——拟牛顿法(3)
  9. 机器学习笔记(九)——决策树的生成与剪枝
  10. 微信上了一个新功能,吐槽的人有点多