Docker 远程 API 暴露
Docker 守护进程提供远程 API 用于管理容器与镜像,明文端口为 2375,TLS 端口为 2376。一旦 2375 可达且没有客户端证书校验,等于把宿主机控制权交出去:可以列出容器、读取环境变量(常含数据库口令与内部令牌)、挂载宿主目录、甚至以特权模式启动容器后取得宿主机 root。2376 若只做服务端证书而不校验客户端证书,防护效果同样有限。这类目标属于宿主机级控制面,任何写操作验证都禁止。
基本信息
| 端口 | 2375 为明文 API,2376 为 TLS API |
|---|---|
| 核查项 | 端口可达性、是否启用双向 TLS 客户端校验 |
| 暴露信号 | 未认证即可读取版本与容器列表 |
| 处置方向 | 关闭远程 API,或仅受控网段可达并启用双向 TLS |
典型使用场景
- CI 构建机:为支持远程构建而开放 API,未做来源限制
- 运维脚本:批量管理容器时直接连远程 API 而不用 SSH
- 编排工具对接:外部平台需要连接节点守护进程
- 云主机默认镜像:容器平台安装脚本自动开启远程监听
- 容器内横向:容器本身可达内网 API,形成跳板路径
只读检查示例
只读检查示例
curl -s --max-time 3 http://10.0.20.11:2375/version
# 能返回版本信息即说明 API 未受保护;记录后立即停止
curl -s --max-time 3 http://10.0.20.11:2375/containers/json | head -c 300
# 只确认列表可读,不执行创建、启停、挂载或执行类接口
# 写操作会直接改变宿主机状态,属于禁止动作端口与保护级别
| 形态 | 保护情况 | 风险等级 |
|---|---|---|
| 2375 明文可达 | 无传输加密、无身份校验 | 极高,等同交出宿主机控制权 |
| 2376 仅服务端证书 | 加密但不校验客户端 | 仍然极高,连接方可直接管理 |
| 2376 双向 TLS | 校验客户端证书 | 可控,仍需限制来源网段 |
| 仅本机套接字 | 未开放网络监听 | 安全,维持现状即可 |
禁止任何写操作验证:创建容器、挂载目录、执行命令都可能落地恶意负载或影响生产业务。
容器网络内部同样需要核查:容器往往能直连宿主机 API 端口,构成从业务漏洞到宿主机接管的完整链路。