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

时间: 2024-11-06 03:40:44

docker remote api 的安全隐患的相关文章

关于docker rest api接口组件docker remote api的使用

前提: docker remote api 是docker自带的一个rest api 管理. 只要在配置文件里面申明下就可以了. 下面是docker remote api的官方的功能目录: Docker Remote API v1.3 3.1 Inside 'docker run' 3.2 Hijacking 3.3 CORS Requests 2.1 Containers 2.2 Images 2.3 Misc List containers Create a container Inspec

[开源夏令营][四] Docker remote API 之 镜像篇

列出镜像 列出镜像,有两个可选參数,一个是all,一个是filter,all可选值有,0/False/false,1/True/true,默觉得0:filter是一个包括一个过滤对象的json,形式如'{"dangling":["true"]}' GET /images/json 我们能够尝试请求一下 curl -s -XGET theegg.me/docker/images/json?all=0 | python -mjson.tool 能够看到例如以下的返回值:

docker remote api

使用三种方式实现从docker hub 下载镜像,并推送到私有仓库 Docke client docker pull nginx docker tag nginx opshar.xxxx.com/app/nginx docker login opshar.xxxx.com docker push opshar.xxxx.com/app/nginx python sdk首先下载pip install docker #!/usr/bin/pythonimport sys, json, docker.

Docker开启Remote API 访问 2375端口

Docker常见端口 我看到的常见docker端口包括: 2375:未加密的docker socket,远程root无密码访问主机2376:tls加密套接字,很可能这是您的CI服务器4243端口作为https 443端口的修改2377:群集模式套接字,适用于群集管理器,不适用于docker客户端5000:docker注册服务4789和7946:覆盖网络 开启配置 方法一 首先是怎么配置远程访问的API: sudo vim /etc/default/docker 加入下面一行 DOCKER_OPT

docker 开启remote api

docker官方文档上有相关说明(Configure and run Docker on various distributions),ubuntu上是可行的 sudo vi /etc/default/docker DOCKER_OPTS="-H tcp://0.0.0.0:2375" 参考一 Ubuntu14.04使用参考一推荐的方法开启remote api没有成功 参考二 使用参考二的方法开启remote api成功了

Docker 1 12新功能探索(8) Remote Api 1 24

Docker的Remote Api并不是1.12才有的,Docker1.12的Remote Api升到了1.24.Remote api的使用在1.12中没有大的变化,稍微大一点的变化是到这个版本之后,二进制文件分裂成了主client的docker以及主server的dockerd了.在centos上通过systemd的配置变化不大,无非是将tcp://ip:port设定到启动的Option中而已,下面来看一下如何设定和简单使用. 事前确认 可以看到只有unix socket的方式 [[email

使用python的docker-py实现docker的api操作

前沿: 听同事说,以后的dba申请可能有部分走其他部门的docker ,那边貌似在搞一个类似docker的平台管理系统,据说很霸道.于是乎,我自己也想尝试写一个简单的doker管理平台.  做为起步我先搞搞docker api,docker官网有个docker-py,用起来很是清爽简单. 首先安装docker的python相关的模块. [email protected]:~# pip install docker-py Requirement already satisfied (use --u

安装docker-python和docker rest api

1.docker软件自带docker rest api,不用安装: 需要设置下docker配置文件 vi /etc/default/docker.io  或者 vi /etc/default/docker #追加下面一行 DOCKER_OPTS="-H tcp://0.0.0.0:5555 -H  unix://var/run/docker.sock" 重启下docker,  service  docker  restart即可.用法: #1.查看所有镜像 #curl 'http://

Centos 7 Docker配置secure remote api

log查看: sudo journalctl -fu docker.service 证书生成参考: https://docs.docker.com/engine/security/https/ vi /lib/systemd/system/docker.service: [Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comAfter=network.target doc