一、Docker存在的安全问题
1.1 Docker自身漏洞
1.作为一款应用Docker本身实现上会有代码缺陷。CVE官方记录Docker历史版本共有超过20项漏洞,可参见Docker官方网站。
2.黑客常用的攻击手段主要有代码执行、权限提升、信息泄露、权限绕过等。目前Docker版本更迭非常快,Docker用户可将Docker升级为最新版本
1.2 Docker源码问题
Docker提供了Docker hub,可以让用户上传创建的镜像,以便其他用户下载,快速搭建环境。但同时也带来了一些安全问题
例如下面三种方式:
(1)黑客上传恶意镜像
如果有黑客在制作的镜像中植入木马、后门等恶意软件,那么环境从一开始就已经不安全了,后续更没有什么安全可言
(2)镜像使用有漏洞的软件
DockerHub上能下载的镜像里面,75%的镜像都安装了有漏洞的软件。所以下载镜像后,需要检查里面软件的版本信息,对应的版本是否存在漏洞,并及时更新打上补丁
(3)中间人攻击篡改镜像
镜像在传输过程中可能被篡改,目前新版本的Docker已经提供了相应的校验机制来预防这个问题
二、Docker架构缺陷与安全机制
Docker本身的架构与机制就可能产生问题,例如这样一种攻击场景,黑客已经控制了宿主机上的一些容器,或者获得了通过在公有云上建立容器的方式,然后对宿主机或其他容器发起攻击
1.容器之间的局域网攻击
主机上的容器之间可以构成局域网,因此针对局域网的ARP欺骗、端口扫描、广播风暴等攻击方式便可以用上。所以,在一个主机上部署多个容器需要合理的配置网络安全,比如设置iptables规则
2.DDoS攻击耗尽资源
Cgroups安全机制就是要防止此类攻击的,不要为单一的容器分配过多的资源即可避免此类问题
3.有漏洞的系统调用
Docker 与虚拟机的一个重要的区别就是Docker与宿主机共用一个操作系统内核
一旦宿主内核存在可以越权或者提权漏洞,尽管Docker使用普通用户执行,在容器被入侵时,攻击者还可以利用内核漏洞跳到宿主机做更多的事情
4.共享root用户权限
如果以root用户权限运行容器(docker run --privileged),容器内的root用户也就拥有了宿主机的root权限
三、Docker安全基线标准
3.1 内核级别
ÿ