docker remote api 的安全隐患

Posted 时光不改

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker remote api 的安全隐患相关的知识,希望对你有一定的参考价值。

 

 

开启docker的api,首先要知道docker的守护进程daemon,在下认为daemon作为Client和service连接的一个桥梁,负责代替将client的请求传递给service端。

默认情况daemon只由root控制,但我们可以通过-H绑定到端口上,这样通过端口访问的方式执行命令。

我用的是Ubuntu17的虚拟机+docker17.03.0-ce,网上介绍两种方法

1、  直接执行 docker -d -H unix:///var/run/docker.sock -H 0.0.0.0:4243 ,在我虚拟机里并不行,没有-d参数

2、  修改配置文件,在Ubuntu环境下修改其配置文件 /etc/default/docker,加入 DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:4232",同样没有启动进程。

查看原因是修改的配置文件没有生效,这是因为/etc/default/docker文件是为upstart和SysVInit准备的,而使用service命令时并不会读取它,因此我们还需要做如下更改:

sudo mkdir -p /etc/systemd/system/docker.service.d

sudo vim /etc/systemd/system/docker.service.d/Using_Environment_File.conf

[Service]

EnvironmentFile=-/etc/default/docker

ExecStart=

ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS

~~~~~~~~~~

sudo systemctl daemon-reload

sudo service docker restart

这样我们就可以看到,成功开启的docker的api

 

但经过我测试并不能直接通过http访问,操作容器。但如果未设置访问控制,可以利用docker client远程连接到对方docker service里

通过docker -H tcp://127.0.0.1:2375 +command 直接操作容器

 

这样的话可以通过命令直接连进去

 

造成安全隐患。

 

防护方式:最主要的不要从外网能访问到这个api。无论是设置认证,或是访问控制。

 

参考文章:修改/etc/default/docker文件不生效的解决办法 http://blog.csdn.net/sch0120/article/details/53160885

以上是关于docker remote api 的安全隐患的主要内容,如果未能解决你的问题,请参考以下文章

常见的容器安全威胁都有哪些?

云原生安全 | docker容器逃逸

Docker容器实战十三:容器安全的最佳实践

多线程 线程的安全隐患

Docker 暴重大安全漏洞:外部网络可直接访问 127.0.0.1 服务。。。

多线程的安全隐患