ubuntu服务器开放端口_Docker服务开放了这个端口,服务器分分钟变肉机

86ef5d4b8ed1be56ef3ff63297686e04.png

推荐阅读:

无情的BUG杀手:京东资深架构师分享:RabbitMQ整体架构以及学习方法​zhuanlan.zhihu.com
ea7c2c549ad8eb1960809283646a0f17.png
无情的BUG杀手:爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了​zhuanlan.zhihu.com
无情的BUG杀手:面试大厂必问的JVM+Redis+MySQL+并发+分布式等面试题,含答案​zhuanlan.zhihu.com
5e20b55aaa99478910e84b2960556b27.png

13270211bd6799b729dc542725d59dc3.png

摘要

之前有很多朋友提过,当使用docker-maven-plugin打包SpringBoot应用的Docker镜像时,服务器需要开放2375端口。由于开放了端口没有做任何安全保护,会引起安全漏洞,被人入侵、挖矿、CPU飙升这些情况都有发生,今天我们来聊聊如何解决这个问题。

问题产生的原因

首先我们要明白问题产生的原因,才能更好地解决问题!

Docker为了实现集群管理,提供了远程管理的端口。Docker Daemon作为守护进程运行在后台,可以执行发送到管理端口上的Docker命令。

当我们修改docker.service文件,修改启动命令,加入-H tcp://0.0.0.0:2375时,就会开放2375端口,且没有任何加密和认证过程,这种方式一般用在内网测试环境。如果你的服务器部署在公网上,任何知道你IP的人,都可以管理这台主机上的容器和镜像,想想就觉得可怕。

解决思路

开放远程管理端口后,没有做任何安全保护导致了这个问题。我们只要使用安全传输层协议(TLS)进行传输并使用CA认证即可。

制作证书及秘钥

我们需要使用OpenSSL制作CA机构证书、服务端证书和客户端证书,以下操作均在安装Docker的Linux服务器上进行。
  • 首先创建一个目录用于存储生成的证书和秘钥;
mkdir 
  • 创建CA证书私钥,期间需要输入两次用户名和密码,生成文件为ca-key.pem;
openssl 
  • 根据私钥创建CA证书,期间需要输入上一步设置的私钥密码,生成文件为ca.pem;
openssl 
  • 创建服务端私钥,生成文件为server-key.pem;
openssl 
  • 创建服务端证书签名请求文件,用于CA证书给服务端证书签名,生成文件server.csr;
openssl 
  • 创建CA证书签名好的服务端证书,期间需要输入CA证书私钥密码,生成文件为server-cert.pem;
openssl 
  • 创建客户端私钥,生成文件为key.pem;
openssl 
  • 创建客户端证书签名请求文件,用于CA证书给客户证书签名,生成文件client.csr;
openssl 
  • 为了让秘钥适合客户端认证,创建一个扩展配置文件extfile-client.cnf;
echo 
  • 创建CA证书签名好的客户端证书,期间需要输入CA证书私钥密码,生成文件为cert.pem;
openssl 
  • 删除创建过程中多余的文件;
rm 
  • 最终生成文件如下,有了它们我们就可以进行基于TLS的安全访问了。
ca

配置Docker支持TLS

  • 用vim编辑器修改docker.service文件;
vi 
  • 修改以ExecStart开头的配置,开启TLS认证,并配置好CA证书、服务端证书和服务端私钥,修改内容如下;
ExecStart
  • 重启Docker服务,这样我们的Docker服务就支持使用TLS进行远程访问了!
systemctl 

客户端访问

接下来我们将使用docker-maven-plugin来打包Docker镜像,使用的代码为原来的mall-tiny-docker例子。
  • 直接使用docker-maven-plugin打包试试,由于我们的插件版本有点低,使用新一点版本的Docker会出现如下问题,升级到1.2.2版本解决该问题;
[
  • 修改完版本后打包,发现TLS不再支持http了,需要改用https,修改<dockerHost>配置为https;
[
  • 修改完成后再次打包,继续失败,需要添加对应的客户端证书才能访问;
[
  • 将如下文件复制到指定目录,这里复制到了I:developerenvdocker-ca;
ca
  • 然后将该目录配置在插件的<dockerCertPath>节点下,最终插件配置如下;
<
  • 再次打包镜像,发现已经可以成功打包镜像,从此我们的2375端口终于可以安全使用了!
[


作者:MacroZheng
链接:https://juejin.im/post/6861749836249563143

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值