之前在aliyun买的云服务器中装了docker,想通过远程端口直接连接docker服务进行操作,就按照网上教程配置了远程端口,但是没过几天发现服务器状态不正常,cpu一直飙升100%,最终排查到是docker中运行的一个容器导致的,但是这个容器不是我自己的,这才发现自己中招了,被挖矿了,但是如何避免被挖矿又能享受这种远程连接的便利呢?可以通过以下两种方式对远程端口进行保护。
其中第一种可直接通过阿里云控制台进行配置实现,且建议云上的服务器在开端口时务必小心,一定要设置IP白名单,而不要图省事全局开放(除了80或者443端口),特别是docker默认远程端口2375,redis默认端口6379,mysql默认端口3306,这些默认端口很可能被黑客找到可乘之机(亲身经历,说多了都是泪啊)。回归正传,下面着重说一下如何为docker远程端口开启SSL证书认证。
mkdir /etc/docker && cd /etc/docker
openssl genrsa -aes256 -out ca-key.pem 4096
备注:此处需要两次输入密码,请务必记住该密码,在后面步骤会用到
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
备注:该步骤以上一步生成的密钥创建证书,也就是自签证书,也可从第三方CA机构签发
openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=47.104.254.199" -sha256 -new -key server-key.pem -out server.csr
备注:其中的IP地址为自己服务器IP地址
echo subjectAltName = IP:47.104.254.199,IP:0.0.0.0 >> extfile.cnf
echo extendedKeyUsage = serverAuth >> extfile.cnf
备注:其中IP地址改为自己服务器IP地址
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out server-cert.pem -extfile extfile.cnf
openssl genrsa -out key.pem 4096
openssl req -subj ‘/CN=client‘ -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth >> extfile.cnf
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile.cnf
rm -v client.csr server.csr
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
vim /lib/systemd/system/docker.service
找到ExecStart=开头的一行代码,将其替换为如下内容
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem
备注:此处设置docker远程端口为2375,可根据需要修改
systemctl daemon-reload && systemctl restart docker
可直接通过IDEA自带的远程连接Docker工具进行连接测试
原文:https://www.cnblogs.com/yxb-blog/p/14631561.html