欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

关于Docker的几点安全解析

来源:本站整理 作者:change 时间:2017-01-08 TAG: 我要投稿

 Docker简介

Docker是目前非常流行的应用程序执行容器,能够让用户通过创建或者下载镜像快速部署执行环境,可以在docker hub分享自己的镜像。与虚拟机相比,docker非常轻量,其架构对比如下。

图片1.png

虚拟机通过添加hypervisor层,虚拟出网卡,内存,CPU等虚拟硬件,再在其上建立guest机。每个guest机都有自己的系统内核。

而docker容器则是通过隔离的方式,将文件系统,进程,设备,网络等资源进行隔离,再对权限,CPU资源等进行控制,最终让容器之间互不影响,容器无法影响宿主机。容器与宿主机共享内核,文件系统,硬件等资源。

与虚拟机相比,容器资源损耗要小得多。 同样的宿主机下,能够建立容器的数量要比虚拟机多得多。但是虚拟机的安全性要比容器好一些,要从虚拟机突破到宿主机或其他虚拟机,需要先突破hypervisor层,这是极其困难的。 而docker容器与宿主机共享内核,文件系统等资源,更有可能对其他容器,宿主机产生影响。

Docker的安全问题主要可能来源于这三个方面:1. Docker本身的架构与安全机制不完善;2.docker镜像源污染; 3.docker本身的漏洞。

Docker安全机制

Docker容器与LCX非常相似,它们的安全保障主要来源于三个机制:namespaces,cgroups,capabilities。运行一个新的容器时,docker会为这个容器创建一个命名空间和控制组的集合。

内核命名空间(kernel namespaces)

Kernel namespaces提供最基本的隔离机制。

进程隔离

这使得容器内的进程无法看到,无法影响到宿主机的进程和其他容器的进程。

文件隔离

文件系统命名空间用于限制容器内的事件影响到容器外的文件系统。但有一些内核文件没有包含在内。

设备隔离

隔离设备,使容器不能访问其他容器的虚拟设备。

IPC隔离

Dokcer用IPC命名空间实现IPC隔离。保证一个IPC命名空间下面无法获取到其他IPC命名空间的信息,如信号量,消息队列,共享内存等。

网络隔离

Docker会为每个容器创建独立的网络协议栈。每个容器都有私有的IP地址,IP路由表,网络设备。宿主机拥有一个外网地址,这之间通过NAT进行转换。一组容器可以组成一个局域网,可以设置iptable规则对其进行管理。

控制组(contrl groups)

控制组实现资源的统计与限制。这一机制保证每个容器获得公平的内存,CPU,磁盘I/O分配权限。 并防止单一的容器通过耗尽某一项资源导致系统崩溃。控制组按照分配权重,竞争的机制对资源进行管理。 如容器A,容器B各分配权重100, 当容器A单独运行时,最多可占100%的资源,当A和B同时运行,并都满负荷运行时,双方各获得50%的资源。

如果A分配权重100,B权重50,同时满负荷运行时,A分配66%资源,B分配33%资源。同时启动容器时还有选项可对使用的最大资源进行限制。

Capabilities机制(linux kernel capabilities)

传统的unix权限分级方式将进程分为两种级别:超级用户root的特权级别和普通用户的非特权级别。特权级别下,内核会省略所有的权限检查。

Linux 内核2.2以后将超级用户的权限分割成一项项的能力(29项),每项能力都能单独的开启或者关闭。比如CAP_NET_ADMIN能力提供了修改系统网络的权限,进程拥有这个能力就能够修改系统的网络配置。容器与宿主机共享内核,因此为了保证容器不会拥有超级权限,docker默认关闭一些容器所不需要的能力,部分关闭的能力如下:

图片3.png

其他一些机制

1. 容器与宿主机共享内核
2. 用户之间可以通过hub共享镜像
3. 容器共享docker守护进程的权限

可能的攻击方式

通过对docker构架与安全机制的分析,可以整理出下面这么一些可能的攻击方式

1483694371687335.png

1.Docker自身漏洞

Docker作为一款软件,自然也跟其他软件一样,本身实现上会有代码缺陷。CVE官方记录docker历史版本共有9项漏洞。 主要有代码执行,权限提升,信息泄露,绕过这几类。 高危漏洞1个,中危漏洞4个。基本出现在1.6.1及以前的版本中,目前docker最新版本为1.10.2暂未被发现cve漏洞。 因此docker用户最好将docker升级为最新版本,CVE详情如下:

http://www.cvedetails.com/vulnerability-list/vendor_id-13534/product_id-28125/Docker-Docker.html

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载