当前位置: 首页 > news >正文

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.

http://www.jsqmd.com/news/712636/

相关文章:

  • 2026年小程序商城SaaS平台
  • Zeptoclaw:基于DMA的无中断舵机驱动库,释放MCU性能
  • 文件上传漏洞:边界检验的艺术
  • 终极实战指南:iOS 15-16设备激活锁离线绕过完整解决方案
  • 详解CN域名注册:流程、要求、材料及注意事项全解析
  • 二次元插画创作指南:用real-anime-z快速生成角色与宣传图
  • LLM长时上下文处理:双路径压缩与LoRA蒸馏优化
  • Evently:.NET开源事件管理引擎,简化事件驱动架构开发
  • 长短期记忆网络大跨桥梁振动响应时频分解系统【附代码】
  • SonnetDB:.NET 生态下的高性能嵌入式时序数据库
  • 470-510MHz频段无线通信系统设计与CC1100E+CC1190方案优化
  • 文件上传漏洞实验1(PortSwigger_Labs)
  • 钩子机制如何实现动态逻辑注入
  • CSS Grid布局完全指南:构建复杂的响应式布局
  • 模力方舟Moark:构建中国AI自主生态的关键基础设施
  • 2026年3月铜覆钢供应商推荐,让你选对供应商,铜覆钢角钢/铜排焊接模具/石墨接地绳/镀铜钢管,铜覆钢制造企业推荐 - 品牌推荐师
  • ARMv9内存管理:TCR2MASK_EL1寄存器详解与应用
  • 故障仿真与数据驱动融合高速列车轴箱轴承故障识别【附代码】
  • 软考高级系统架构设计师备考(二十四):软件工程—软件系统建模
  • Profinet转EtherCAT网关通讯架构及EtherCAT超距故障解决原理
  • ToDesk功能全解析:这五个场景,让你的远程办公效率翻倍
  • 【高标准农田】面向农业病虫害识别的田间实时感知高质量图像数据集建设方案:总体架构与技术路线、田间实时感知与数据采集子系统...
  • 别再只点灯了!用Arduino Uno R3的6个模拟引脚做个简易温湿度计(附完整代码)
  • 挖掘机柴油机多工况智能故障识别系统设计【附代码】
  • 轻量化域适应网络轮对轴承系统故障检测实现【附代码】
  • 计算机网络——应用层
  • Flutter网络请求最佳实践:构建可靠的网络应用
  • Wox深度解析:跨平台启动器的架构设计与实战指南
  • 道岔捣固车智能诊断与运维管理系统设计【附代码】
  • (34)ArcGIS Pro 要素折点转点工具:线面节点批量提取实操