news 2026/4/28 6:56:50

Docker Remote 未授权访问漏洞修复方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker Remote 未授权访问漏洞修复方法

Docker Remote 未授权访问漏洞修复方法

一、漏洞介绍

攻击者通过此漏洞⽆需认证即可访问到Docker数据,可能导致敏感信息泄露,⿊客也可以删除 Docker上的数据,直接访问宿主机上的敏感 信息,或对敏感⽂件进⾏修改。

二、漏洞原因

docker服务开启了远程访问端口配置:

dockerd-Htcp://0.0.0.0:2375-Hunix://var/run/docker.sock

三、漏洞复现

可通过docker命令直接查看容器信息等其他操作

docker-Htcp://漏洞docker-ip:2375ps

四、漏洞解决

本篇主要介绍启用 TLS 认证(使用 --tlsverify 等选项)这一方式。
证书文件生成部分比较繁琐,按照以下步骤一步一步做即可:

1. 创建证书目录并进入

执行:

mkdir-p/etc/docker/certs&&cd/etc/docker/certs
2. 生成 CA 私钥(不使用密码,避免交互)

执行:

openssl genrsa-outca-key.pem4096

输出:

Generating RSA private key,4096bit long modulus........++..............................................................................................++ e is65537(0x10001)[root@localhost certs]#
3. 生成 CA 证书(自动填写信息,静默完成)

执行:

openssl req-new-x509-days3650-keyca-key.pem-sha256-outca.pem-subj"/C=CN/ST=Beijing/L=Beijing/O=Docker/OU=CA/CN=MyDockerCA"

输出:

[root@localhost certs]# lsca-key.pem ca.pem
4. 生成服务端私钥

执行:

openssl genrsa-outserver-key.pem4096

输出:

Generating RSA private key,4096bit long modulus...................................................................................................................................................................................++.........................++ e is65537(0x10001)
5. 生成服务端证书请求(CSR),CN 写你的 Docker 宿主机 IP(请把下面的 192.168.1.100 替换成你的真实 IP)

执行:

openssl req-subj"/CN=192.168.247.200"-sha256-new-keyserver-key.pem-outserver.csr
6. 创建服务端证书扩展文件(支持多个访问地址)

执行:

cat>extfile-server.cnf<<EOF subjectAltName = DNS:localhost,IP:192.168.1.100,IP:127.0.0.1 extendedKeyUsage = serverAuth EOF

注意:上面的 192.168.1.100 请替换为你的真实 IP

7. 签发服务端证书

执行:

openssl x509-req-days365-sha256-inserver.csr-CAca.pem-CAkeyca-key.pem-CAcreateserial-outserver-cert.pem-extfileextfile-server.cnf

输出:

Signature oksubject=/CN=192.168.1.100 Getting CA Private Key
8. 生成客户端私钥

执行:

openssl genrsa-outkey.pem4096

输出:

Generating RSA private key,4096bit long modulus.....................................................................................................++.................++ e is65537(0x10001)
9. 生成客户端证书请求

执行:

openssl req-subj'/CN=client'-new-keykey.pem-outclient.csr

无输出

10. 创建客户端证书扩展文件

执行:

cat>extfile-client.cnf<<EOF extendedKeyUsage = clientAuth EOF
11. 签发客户端证书

执行:

openssl x509-req-days365-sha256-inclient.csr-CAca.pem-CAkeyca-key.pem-CAcreateserial-outcert.pem-extfileextfile-client.cnf

输出:

Signature oksubject=/CN=client Getting CA Private Key

全部文件:

[root@localhost certs]# lltotal44-rw-r--r--.1root root3243Apr2401:51 ca-key.pem -rw-r--r--.1root root2004Apr2401:52 ca.pem -rw-r--r--.1root root17Apr2401:53 ca.srl -rw-r--r--.1root root1814Apr2401:53 cert.pem -rw-r--r--.1root root1582Apr2401:53 client.csr -rw-r--r--.1root root30Apr2401:53 extfile-client.cnf -rw-r--r--.1root root93Apr2401:52 extfile-server.cnf -rw-r--r--.1root root3243Apr2401:53 key.pem -rw-r--r--.1root root1874Apr2401:53 server-cert.pem -rw-r--r--.1root root1594Apr2401:52 server.csr -rw-r--r--.1root root3243Apr2401:52 server-key.pem
12. 删除临时文件

执行:

rm-vclient.csr server.csr extfile-server.cnf extfile-client.cnf

输出:

rm: remove regularfile‘client.csr’? y removed ‘client.csr’ rm: remove regularfile‘server.csr’? y removed ‘server.csr’ rm: remove regularfile‘extfile-server.cnf’? y removed ‘extfile-server.cnf’ rm: remove regularfile‘extfile-client.cnf’? y removed ‘extfile-client.cnf’
13. 设置私钥权限(仅所有者可读)
chmod0400 ca-key.pem server-key.pem key.pemchmod0444 ca.pem server-cert.pem cert.pem
14. 查看生成的文件

最终文件:

[root@localhost certs]# lltotal28-r--------.1root root3243Apr2401:51 ca-key.pem -r--r--r--.1root root2004Apr2401:52 ca.pem -rw-r--r--.1root root17Apr2401:53 ca.srl -r--r--r--.1root root1814Apr2401:53 cert.pem -r--------.1root root3243Apr2401:53 key.pem -r--r--r--.1root root1874Apr2401:53 server-cert.pem -r--------.1root root3243Apr2401:52 server-key.pem

至此证书TLS相关操作已完成,接下来配置docker参数

15. docker配置文件添加配置:

/etc/docker/daemon.json (没有就新建) 添加以下配置

{"tlsverify":true,"tlscacert":"/etc/docker/certs/ca.pem","tlscert":"/etc/docker/certs/server-cert.pem","tlskey":"/etc/docker/certs/server-key.pem"}
16. 重启docker:
systemctl daemon-reload systemctl restartdocker
17. 验证:

找一台其它docker机器远程访问一下目标docker即可,或者浏览器直接输入192.168.1.100:2375/info
浏览器会输出:Client sent an HTTP request to an HTTPS server.

正确访问方式:

docker--tlsverify--tlscacert=/etc/docker/certs/ca.pem--tlscert=/etc/docker/certs/cert.pem--tlskey=/etc/docker/certs/key.pem-Htcp://172.28.112.143:2375 version

证书文件正确的话,可以正常输出信息,否则输出Client sent an HTTP request to an HTTPS server.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 6:52:37

Hermes Agent 小白完全指南:养一匹会自己长大的马

一句话记住&#xff1a;OpenClaw 是养龙虾&#xff08;&#x1f99e;&#xff09;&#xff0c;Hermes 是养马&#xff08;&#x1f434;&#xff09;。龙虾需要你喂&#xff0c;马会自己找草吃&#xff0c;越骑越顺。 一、Hermes 是什么&#xff1f;5岁小孩也能懂 想象你请了一…

作者头像 李华
网站建设 2026/4/28 6:51:46

Synapse:让每一次 AI 对话都成为知识复利

❝「个人知识中枢&#xff08;Personal Knowledge Hub&#xff09;」从各种 AI 助手对话中自动沉淀、整理、反哺知识&#xff0c;构建属于你的第二大脑。❞你是否也有这样的困扰&#xff1f;作为一个重度 AI 用户&#xff0c;我每天都在和各种 AI 助手对话&#xff1a;用 「Cha…

作者头像 李华
网站建设 2026/4/28 6:36:21

FitCard 便携健康检测仪|快速检测身体疲劳及心脏风险 企业福利商务礼品首选的健康好物,送礼送健康

在高压职场与高端商务场景中&#xff0c;一份实用、有温度、显关怀的礼品&#xff0c;既能传递企业心意&#xff0c;又能真正解决健康痛点。苏州唯理科技推出的FitCard 便携式健康检测仪仪&#xff0c;凭借国家二类医疗器械认证与极致便携的优势&#xff0c;成为企业员工福利、…

作者头像 李华
网站建设 2026/4/28 6:31:19

用云服务器搭建Frp内网穿透,实现远程访问家里电脑

用云服务器搭建Frp内网穿透&#xff0c;实现远程访问家里电脑 家里有台服务器或者NAS&#xff0c;想在外面也能访问——但家里是宽带动态IP&#xff0c;没有公网IP&#xff0c;直接访问不了。 Frp内网穿透就是解决这个问题的&#xff1a;在有公网IP的云服务器上跑服务端&…

作者头像 李华
网站建设 2026/4/28 6:20:48

二维与三维,影像测量仪如何选配?

在精密制造与质量检测领域&#xff0c;影像测量仪因其非接触、高精度、高效率的特点&#xff0c;已成为尺寸检测的重要工具。然而&#xff0c;面对二维与三维两种测量能力&#xff0c;许多用户在选配时常常感到困惑&#xff1a;是否一定要选三维&#xff1f;二维能否满足我的检…

作者头像 李华
网站建设 2026/4/28 6:13:25

HTTP (XSS前简单了解)

XSS 学习前的 HTTP 协议基础回顾在正式学习 XSS 之前&#xff0c;需要先回顾 HTTP 协议的基础特性&#xff0c;为后续理解 Cookie、Session、前端脚本执行、会话劫持等内容打下基础。二、HTTP 协议基础概念HTTP&#xff08;超文本传输协议&#xff09;是浏览器与 Web 服务器之间…

作者头像 李华