码迷,mamicode.com
首页 > Windows程序 > 详细

docker remote api 的安全隐患

时间:2017-07-27 14:29:43      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:默认   问控制   man   控制   更改   upstart   生效   client   需要   

 

 

开启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 的安全隐患

标签:默认   问控制   man   控制   更改   upstart   生效   client   需要   

原文地址:http://www.cnblogs.com/zhaijiahui/p/7244396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!