内网评估60 条

ZooKeeper 暴露检查

ZooKeeper 的 four-letter words 与未授权连接可读取集群元数据:核查端口可达性、访问控制与命令白名单。

ZooKeeper 暴露的影响

ZooKeeper 为分布式系统提供配置同步与协调能力,很多上层组件依赖它保存元数据与状态。它自带一组运维查询指令,默认无需认证即可通过客户端端口获取集群信息。暴露后的影响不限于读取:能够写入意味着可以改动其他系统的配置来源。检查关注端口可达性、访问控制与指令白名单。

基本信息

客户端端口2181,另有所选端口与集群通信端口
运维指令查询集群状态与版本的一类内置命令
认证与授权可配置访问控制与指令白名单
风险元数据泄露,写入可影响上层多个系统
加固方向网络收敛、启用访问控制、限制可用指令

典型使用场景

  • 分布式组件评估:确认协调服务是否超出内网范围
  • 影响面判断:梳理依赖该集群的上层系统,评估暴露后果
  • 部署核查:容器化部署后端口是否随服务一起暴露
  • 变更前核对:收紧网络与指令白名单前确认使用方
  • 复测:确认限制后未授权查询不再返回集群信息

只读检查示例

只读检查示例
# 仅查询集群状态信息,确认端口可达性
echo srvr | nc -w 2 10.0.20.10 2181
# 返回版本与节点角色信息即说明未加限制
# 不枚举业务 znode 与节点数据
# 记录:可达网段、返回信息范围与集群规模

检查项与判定

检查项正常情况异常信号
客户端端口可达性仅依赖方网段可达办公网或更宽范围可达
指令白名单仅保留必要指令默认全部指令可用
访问控制启用并按需授权未配置任何控制
集群通信端口不与客户端端口混用暴露对外可达
依赖系统范围与台账一致存在未登记的上层依赖
ZooKeeper 常作为配置与协调中枢:暴露影响面覆盖多个上层系统,定级时要结合依赖它的业务范围。
指令白名单不配置时,运维类指令可被任意可达来源调用:这类指令虽不直接读写业务数据,但会泄露集群拓扑。

易错点

  • 枚举 znode 内容作为证据
  • 忽略运维指令未加白名单带来的信息暴露
  • 只测单节点,未覆盖集群其他成员
  • 未梳理上层依赖,影响面定级偏窄

数据来源与参考

  • Apache ZooKeeper 官方文档(管理员指南)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌