房地产网站建设方案书,网站二级目录解析,现在有哪家建筑公司招人,龙岩特色问题起因
由于本人开发环境是在 Windows#xff0c;开发完成后需要使用 Dockerfile 打包镜像#xff0c;这个过程需要有一个 Docker 服务完成#xff0c;Windows 安装 Docker 会影响到很多环境#xff0c;我又不想本地开虚拟机使用 Docker#xff0c;于是我就索性使用服务…问题起因
由于本人开发环境是在 Windows开发完成后需要使用 Dockerfile 打包镜像这个过程需要有一个 Docker 服务完成Windows 安装 Docker 会影响到很多环境我又不想本地开虚拟机使用 Docker于是我就索性使用服务器上的 Docker并放开了 2375 端口这个是 Docker 默认 API 的端口于是就可以很愉快的打包发布了。
但是没过几天我就收到阿里云的告警服务器负载长时间在 100%服务器卡得不行上服务器一看不知道为什么多了几个没见过的 Docker 镜像以及很多不认识的容器于是判断服务器应该是被黑客入侵了被用来挖矿了而入侵的入口就是 Docker 的 2375端口。
解决方法
解决方法最简单的就是尽量不要启用 API 功能或者把默认端口改一下但是这个也是只能解决一时的问题后来查询资料找到了使用 TLS 通信机制的解决方法。解决方法的过程如下
生成一系列证书和文件# 创建一个文件夹用于存放需要用到的证书等信息
mkdir -p ~/docker-certs
cd ~/docker-certs
# 生成一个 CA证书颁发机构私钥CA私钥用于为服务器或客户端证书生成签名。这个签名证明了该证书是由可信的 CA 颁发的。当服务器或客户端收到证书时它会用 CA 的公钥来验证证书的签名。如果验证通过意味着该证书确实是由该 CA 颁发的确保了证书持有者的身份合法性。
openssl genrsa -aes256 -out ca-key.pem 4096
# 生成 key 的过程中可能会出现要求输入 Enter pass phrase for ca-key.pem这个相当于私钥的密码能够进一步保证私钥的安全哪怕别人获取到你的私钥也不能直接使用要输入密码。# 用 CA私钥自签名生成一个 CA 的证书CA证书用于验证 CA 身份的合法性要信任某个证书关键就是要信任CA的证书。
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
# 创建服务器端私钥和证书
openssl genrsa -out server-key.pem 4096
openssl req -new -key server-key.pem -out server.csr
# CA 为服务端证书签名
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
# 创建客户端私钥和证书
openssl genrsa -out key.pem 4096
openssl req -new -key key.pem -out client.csr
# 签署客户端证书
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem移除不必要的 CSR 文件rm -v server.csr client.csr设置权限chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem修改 /usr/lib/systemd/system/docker.service 文件vim /usr/lib/systemd/system/docker.serviceExecStart 那改成ExecStart/usr/bin/dockerd \
--tlsverify \
--tlscacert/root/docker-certs/ca.pem \
--tlscert/root/docker-certs/server-cert.pem \
--tlskey/root/docker-certs/server-key.pem \
-H tcp://0.0.0.0:2376 -H unix://var/run/docker.sock \
-H fd:// --containerd/run/containerd/containerd.sock重启 Docker 服务systemctl daemon-reload systemctl restart docker客户端所在机器找个地方存放 ca.pem、cert.pem、key.pem 三个文件并且添加以下三个环境变量DOCKER_HOSTtcp://你 docker 所在的IP地址:2376
DOCKER_CERT_PATH存放三个文件的地方
DOCKER_TLS_VERIFY1然后测试即可