1. 程式人生 > >docker remote api 的安全隱患

docker remote api 的安全隱患

利用 sin -a ima http dir 綁定 tex mage

開啟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 的安全隱患