Docker客户端可以使用RESTful请求,通过remote api的2375端口与docker服务端进行交互。然而,使用remote api存在远程未授权访问风险。因此,需要使用统一的认证方式验证容器api请求身份的合法性。
查看docker remote api是否启用
docker daemon -H tcp://10.10.10.10:2375 -H unix://var/run/docker.sock
加固docker remote api
通常情况下,建议不要启用docker的remote api服务。如果必须使用的话,可以采用如下两种方式对docker remote api进行加固。
- docker服务端启用CA自签名证书的TLS认证配置
- 生成CA自签名证书
- 启动docker daemon,并配置TLS认证
docker -d --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H=tcp://10.10.10.10:2375 -H ubix://var/run/docker.sock
- 客户端设置环境变量
export DOCKER_TLS_VERIFY=1
export DOCKER_TLS_PATH=$DOCKER_TLS_PATH
export DOCKER_HOST=tcp://IP:PORT
export DOCKER_API_VERSION=$DOCKER_API_VERSION
- 设置ACL,在宿主机中使用iptables对容器的访问连接进行控制,只允许特定ip访问(基于ubuntu)
iptables -I INPUT -p tcp --dport 2375 -j DROP #在tcp协议中,禁止所有的ip访问本机2375端口
iptables -I INPUT -s 特定IP -ptcp --dport 2375 -j ACCEPT #设置iptables规则
service iptables save #保存iptables规则
service iptables restart #重启iptables服务
参考资料:
网友评论