ZooKeeper 暴露的影响
ZooKeeper 为分布式系统提供配置同步与协调能力,很多上层组件依赖它保存元数据与状态。它自带一组运维查询指令,默认无需认证即可通过客户端端口获取集群信息。暴露后的影响不限于读取:能够写入意味着可以改动其他系统的配置来源。检查关注端口可达性、访问控制与指令白名单。
基本信息
| 客户端端口 | 2181,另有所选端口与集群通信端口 |
|---|---|
| 运维指令 | 查询集群状态与版本的一类内置命令 |
| 认证与授权 | 可配置访问控制与指令白名单 |
| 风险 | 元数据泄露,写入可影响上层多个系统 |
| 加固方向 | 网络收敛、启用访问控制、限制可用指令 |
典型使用场景
- 分布式组件评估:确认协调服务是否超出内网范围
- 影响面判断:梳理依赖该集群的上层系统,评估暴露后果
- 部署核查:容器化部署后端口是否随服务一起暴露
- 变更前核对:收紧网络与指令白名单前确认使用方
- 复测:确认限制后未授权查询不再返回集群信息
只读检查示例
只读检查示例
# 仅查询集群状态信息,确认端口可达性
echo srvr | nc -w 2 10.0.20.10 2181
# 返回版本与节点角色信息即说明未加限制
# 不枚举业务 znode 与节点数据
# 记录:可达网段、返回信息范围与集群规模检查项与判定
| 检查项 | 正常情况 | 异常信号 |
|---|---|---|
| 客户端端口可达性 | 仅依赖方网段可达 | 办公网或更宽范围可达 |
| 指令白名单 | 仅保留必要指令 | 默认全部指令可用 |
| 访问控制 | 启用并按需授权 | 未配置任何控制 |
| 集群通信端口 | 不与客户端端口混用暴露 | 对外可达 |
| 依赖系统范围 | 与台账一致 | 存在未登记的上层依赖 |
ZooKeeper 常作为配置与协调中枢:暴露影响面覆盖多个上层系统,定级时要结合依赖它的业务范围。
指令白名单不配置时,运维类指令可被任意可达来源调用:这类指令虽不直接读写业务数据,但会泄露集群拓扑。