赞
踩
Docker的远程调用API接口存在未授权访问的漏洞,至少也应该限制外网访问,这里配置使用Socket方式访问。
这里我们使用centos7 ip:192.168.100.101作为被访问方;
centos7 ip:192.168.100.100作为远程调用方。
使用
docker -d -H unix:///var/run/docker.sock -H tcp://192.168.100.101:2375
或者
vim /usr/lib/systemd/system/docker.service
##添加配置
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://192.168.100.101:2375
systemctl daemon-reload
systemctl restart docker
###查看2375端口是否开启
[root@compute1 ~]# netstat -anpt | grep 2375
tcp 0 0 192.168.100.101:2375 0.0.0.0:* LISTEN 96472/dockerd
然后在宿主机的firewalld上做IP访问控制即可,或者关闭firewalld,不做策略。
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.100" port protocol="tcp" port="2375" accept"
firewall-cmd --reload
###查看firewall rich-rules
[root@compute1 ~]# firewall-cmd --list-rich-rules
rule family="ipv4" source address="192.168.100.100" port port="2375" protocol="tcp" accept
docker -H tcp://192.168.100.101 images
##远程调用192。168.100.101的docker images命令
docker -H tcp://192.168.100.101 ps -a
##远程调用192.168.100.101的docker ps -a命令
为了防止链路劫持、会话劫持等问题导致 Docker 通信时被中 间人攻击,c/s 两端应该通过加密方式通讯。
mkdir /tls
cd /tls
hostnamectl set-hostname master
su
vim /etc/hosts
127.0.0.1 master
1. 创建ca密钥 openssl genrsa -aes256 -out ca-key.pem 4096 //输入123123 2. 创建ca证书 openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem //输入123123 3. 创建服务器私钥 openssl genrsa -out server-key.pem 4096 4. 签名私钥 openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr 5. 使用ca证书与私钥证书签名,输入123123 openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem 6. 生成客户端密钥 openssl genrsa -out key.pem 4096 7. 签名客户端 openssl req -subj "/CN=client" -new -key key.pem -out client.csr 8. 创建配置文件 echo extendedKeyUsage=clientAuth > extfile.cnf 9. 签名证书,输入123123,需要(签名客户端,ca证书,ca密钥) openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf 10. 删除多余文件 rm -rf ca.srl client.csr extfile.cnf server.csr 11. 配置docker vim /lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/tls/ca.pem --tlscert=/tls/server-cert.pem --tlskey=/tls/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
systemctl daemon-reload
systemctl restart docker
scp ca.pem root@192.168.100.100:/etc/docker/
scp cert.pem root@192.168.100.100:/etc/docker/
scp key.pem root@192.168.100.100:/etc/docker/
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version
docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 images
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。