本文共 3940 字,大约阅读时间需要 13 分钟。
文末有惊喜!!希望会对您有帮助~
在之前的文章中 ,其中开放了服务器2375端口监听,此做法却引发出来一个安全问题,在上篇文章评论也有好心的童鞋提示,但自己心存侥幸心理,以为争取时间就没问题。
想知道为什么暴露2375不安全看一下大佬的具体操作 。
写这篇时候自己开放2375端口的3台云服务器中招了,两台阿里云服务器root账号被劫权,root这个超级用户俨然已成为傀儡皇帝,有名无权,还有一台ucloud服务器被挖矿内存被打满。意味着环境都要重新装了,想洗洗睡的心都有了,做人真的不能装~
编辑/etc/hostname,服务器主机名 a.youlai.store
vi /etc/hostname
创建证书生成脚本 cert.sh,放置/script目录
mkdir -p /script /data/cert/dockertouch /script/cert.shvim /script/cert.sh
cert.sh添加内容
#!/bin/bashset -eif [ -z $1 ];then echo "请输入Docker服务器主机名" exit 0fiHOST=$1mkdir -p /data/cert/dockercd /data/cert/dockeropenssl genrsa -aes256 -out ca-key.pem 4096openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pemopenssl genrsa -out server-key.pem 4096openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr# 配置白名单,推荐配置0.0.0.0,允许所有IP连接但只有证书才可以连接成功echo subjectAltName = DNS:$HOST,IP:0.0.0.0 > extfile.cnfopenssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnfopenssl genrsa -out key.pem 4096openssl req -subj '/CN=client' -new -key key.pem -out client.csrecho extendedKeyUsage = clientAuth > extfile.cnfopenssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnfrm -v client.csr server.csrchmod -v 0400 ca-key.pem key.pem server-key.pemchmod -v 0444 ca.pem server-cert.pem cert.pem
执行 cert.sh 脚本,生成证书放置 /data/cert/docker 目录中
# a.youlai.store是服务器的主机名sh /script/cert.sh a.youlai.store
按照提示输入相关信息,密码一致就行,其他信息可留空,等脚本指定完成之后,可在 /data/cert/docker 目录查看到生成的证书。
vim /usr/lib/systemd/system/docker.service
在ExecStart属性后追加
--tlsverify --tlscacert=/data/cert/docker/ca.pem \--tlscert=/data/cert/docker/server-cert.pem \--tlskey=/data/cert/docker/server-key.pem \-H tcp://0.0.0.0:2376 -H unix://var/run/docker.sock
重新加载docker配置后重启
systemctl daemon-reload systemctl restart docker
查看2376端口是否启动
netstat -nltp | grep 2376
本地连接测试Docker API是否可用
curl https://a.youlai.store:2376/info
curl https://a.youlai.store:2376/info --cert /data/cert/docker/cert.pem --key /data/cert/docker/key.pem --cacert /data/cert/docker/ca.pem
将客户端所需的ca.pem、cert.pem、key.pem3个密钥文件从服务器下载到本地
IDEA连接Docker配置修改
pom.xml
org.springframework.boot spring-boot-maven-plugin com.spotify docker-maven-plugin 1.0.0 build-image package build ${project.artifactId} latest openjdk:8-jdk-alpine / ["java","-jar","${project.build.finalName}.jar"] https://a.youlai.store:2376 C:\certs\docker\a.youlai.store / ${project.build.directory} ${project.build.finalName}.jar
打包测试
可以看到网关应用已成功部署至服务器,详细操作步骤请参考
其实没啥好说的,如果大家有云服务器Docker API的2375端口暴露出来的话,建议添加TLS加密认证。不然被黑掉几率非常大,自己就是个活生生栗子,截止到凌晨一点半,还剩下一台机器的环境没有恢复,心累~
如果大家有什么问题,欢迎下方留言,看到第一时间回复~
文章主旨: 服务器被黑什么的都没啥,重点是下面要说的, 自己在工作之余整理的一套 (微服务架构 + 前后端分离 + 微信小程序)的开源项目, 希望能给需要的童鞋提供一个很不错开源项目经验,有兴趣的可以加我(微信号:haoxianrui)一起来“玩”呗~
下面整理出项目开发相关的往期的文章:
后台微服务
后台管理前端
微信小程序
应用部署
转载地址:http://noxuz.baihongyu.com/