ZooKeeper
Categories:
4 分钟阅读
适用范围:Apache ZooKeeper 3.4/3.5/3.6/3.7 单机、伪集群、集群场景。
不适用标识说明:
- 使用
【不适用】明确标记现场可判定为不适用的控制点。 - 判定依据采用 GB/T 28448-2019 的对象边界原则;ZooKeeper 属于协调组件,业务型控制点需结合其是否承载业务数据、是否启用管理接口判定。
基础信息
核查命令:
zkServer.sh version 2>/dev/null
ps -ef | grep zookeeper
find / -name zoo.cfg 2>/dev/null
- 备注:确认版本、节点角色、集群、端口、配置文件、数据目录和日志目录。
- 预期证据:版本截图、进程截图、配置路径截图、端口截图。
示例输出(节选)
zkServer.sh version
Apache ZooKeeper, version 3.8.4 2024-02-14 06:34 UTC
ps -ef | grep zookeeper
zookeeper 4401 java -Dzookeeper.log.dir=/data/zk/logs ... QuorumPeerMain
/opt/zookeeper/conf/zoo.cfg
身份鉴别
A. 管理接口识别
核查命令:
grep -R "admin.serverPort\\|4lw.commands.whitelist" /etc/zookeeper /opt 2>/dev/null
- 备注:重点核查 AdminServer、四字命令和 JMX 接口。
- 预期证据:配置截图、接口截图。
示例输出(节选)
/etc/zookeeper/zoo.cfg: admin.serverPort=8080
/opt/zookeeper/conf/zoo.cfg: 4lw.commands.whitelist=stat, srvr, mntr
(四字命令白名单收敛,admin server 仅内网访问)
B. 认证机制
核查命令:
grep -R "authProvider\\|requireClientAuthScheme\\|superDigest" /etc/zookeeper /opt 2>/dev/null
- 备注:核查 Digest、SASL、Kerberos、TLS 客户端认证。
- 预期证据:认证配置截图、平台材料。
示例输出(节选)
/opt/zookeeper/conf/zoo.cfg: authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
/etc/zookeeper/jaas.conf: Server { org.apache.zookeeper.server.auth.DigestLoginModule required user_mid="***"; };
superDigest 未配置明文(经 SASL 管理)
C. 登录失败与会话控制
核查命令:
grep -R "sessionTimeout\\|maxClientCnxns" /etc/zookeeper /opt 2>/dev/null
- 备注:ZooKeeper 一般无人工登录控制台,更多是客户端连接控制。
- 【不适用】若未启用独立人工登录管理界面,则人工登录失败锁定类控制点对 ZooKeeper 不适用。
- 预期证据:配置截图、等效控制材料。
示例输出(节选)
/etc/zookeeper/zoo.cfg: sessionTimeout 未显式设置(默认 60s tickTime*2)
maxClientCnxns=60
D. 运维鉴别链路
核查命令:
grep -R "ssl\\|secureClientPort\\|serverCnxnFactory" /etc/zookeeper /opt 2>/dev/null
- 备注:运维和客户端接入应关注 TLS、堡垒机和来源限制。
- 预期证据:TLS 截图、运维制度。
示例输出(节选)
grep ssl zoo.cfg
secureClientPort=2182
serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory
ssl.keyStore.location=/etc/zookeeper/ssl/keystore.jks
ssl.trustStore.location=/etc/zookeeper/ssl/truststore.jks
(明文 2181 已关闭,仅 2182 TLS 接入)
访问控制
A. ZNode ACL
核查命令:
zkCli.sh getAcl / 2>/dev/null
- 备注:重点核查关键 ZNode 的 ACL、超级用户和匿名访问控制。
- 预期证据:ACL 截图、权限说明。
示例输出(节选)
zkCli.sh getAcl /
'world,'anyone
: cdrwa
(根节点 ACL 为 anyonone 全权,应整改为 digest 认证;业务节点已收敛,见下)
zkCli.sh getAcl /demo
'digest,'mid-user:***
: cdrwa
B. 管理接口来源限制
核查命令:
grep -R "admin.serverPort\\|4lw.commands.whitelist\\|clientPortAddress" /etc/zookeeper /opt 2>/dev/null
- 备注:四字命令、管理端口和客户端端口应限制来源。
- 预期证据:配置截图、网络材料。
示例输出(节选)
admin.serverPort=8080
4lw.commands.whitelist=srvr,mntr
clientPortAddress=192.168.10.41
(管理端口与四字命令已收敛,客户端仅监听内网地址)
C. 默认配置与测试节点
核查命令:
grep -R "guest\\|anonymous" /etc/zookeeper /opt 2>/dev/null
- 备注:默认开放四字命令、匿名访问和测试节点应清理或限制。
- 预期证据:配置截图、处置说明。
示例输出(节选)
grep guest/anonymous /etc /opt
(无输出,未发现匿名账户相关配置残留)
D. 文件与进程权限
核查命令:
ls -l zoo.cfg 2>/dev/null
ps -o user,pid,cmd -C java
- 备注:配置、日志和数据目录权限应最小化,运行用户不宜过高。
- 预期证据:权限截图、运行用户截图。
示例输出(节选)
-rw-r--r-- 1 root root 985 zoo.cfg
(配置文件全局可读,建议 chmod 640 并属主 root:zookeeper)
USER PID COMMAND
zookeeper 4401 java QuorumPeerMain
安全审计
A. 日志配置
核查命令:
find logs -type f 2>/dev/null
find conf -type f | grep -E "log4j|logback" 2>/dev/null
- 备注:核查服务日志、认证日志和异常日志。
- 预期证据:日志目录截图、配置截图。
示例输出(节选)
find logs
/data/zk/logs/zookeeper-root-server-1.out
/data/zk/logs/zookeeper.log
find conf | grep log4j
conf/log4j.properties
B. 日志样例
核查命令:
tail -n 20 logs/* 2>/dev/null
- 备注:应证明连接、异常和管理操作留痕。
- 预期证据:日志样例、平台截图。
示例输出(节选)
tail logs/zookeeper.log(节选)
2026-08-24 09:00:01,001 [myid:1] INFO [QuorumPeer[myid=1]] Leader election voting...
2026-08-24 10:12:33,884 [myid:1] WARN [NIOServerCxn.AcceptThread] Client failed to authenticate using SASL: mid-test
2026-08-24 10:15:02,110 [myid:1] INFO [ProcessThread] Established session 0x1002... with timeout 60000
C. 留存与轮转
核查命令:
grep -R "RollingFileAppender\\|maxBackupIndex" conf 2>/dev/null
- 备注:需核实日志留存和轮转策略。
- 预期证据:配置截图、制度、访谈记录。
示例输出(节选)
grep conf/log4j.properties
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLINGFILE.MaxBackupIndex=10
(按大小轮转保留 10 个备份,配合外部清理脚本)
D. 集中审计
核查命令:
journalctl | grep zookeeper | tail -n 50
- 备注:如日志进入平台,应补平台证据。
- 预期证据:平台截图、告警截图。
示例输出(节选)
journalctl | grep zookeeper(节选)
Aug 24 08:59:50 host systemd[1]: Started Apache ZooKeeper.
Aug 24 09:00:05 host zk[4401]: [myid:1] INFO Snapshot taken: snapshot.1002
Aug 24 10:12:33 host zk[4401]: WARN Client failed to authenticate using SASL
数据完整性
A. 集群一致性
核查命令:
echo stat | nc 127.0.0.1 2181 2>/dev/null
echo mntr | nc 127.0.0.1 2181 2>/dev/null
- 备注:重点核查节点状态、选主、同步和事务日志。
- 预期证据:状态截图、架构说明。
示例输出(节选)
echo stat | nc 127.0.0.1 2181(节选)
Zookeeper version: 3.8.4, built on 02/14/2024
Latency min/avg/max: 0/0.5/21
Mode: follower
echo mntr | nc 127.0.0.1 2181
zk_version 3.8.4
zk_server_state follower
zk_peer_state following - broadcast
B. 传输完整性
核查命令:
grep -R "secureClientPort\\|ssl" conf /etc/zookeeper 2>/dev/null
- 备注:客户端和节点间通信如使用 TLS,应明确其作用。
- 预期证据:TLS 配置截图、证书材料。
示例输出(节选)
grep secureClientPort conf
secureClientPort=2182
serverCnxnFactory=NettyServerCnxnFactory
ssl.quorum.keyStore.location=/etc/zookeeper/ssl/quorum.jks
(集群内部通信亦启用 TLS)
数据保密性
A. TLS 与证书
核查命令:
grep -R "ssl.keyStore.location\\|ssl.trustStore.location" conf /etc/zookeeper 2>/dev/null
- 备注:管理和敏感接入链路应优先加密。
- 预期证据:TLS 截图、证书截图。
示例输出(节选)
grep ssl.keyStore/trustStore conf
ssl.keyStore.location=/etc/zookeeper/ssl/keystore.jks
ssl.trustStore.location=/etc/zookeeper/ssl/truststore.jks
(keystore 口令经环境变量注入,文件权限 600)
B. 敏感配置保护
核查命令:
grep -R "password\\|digest\\|secret" conf /etc/zookeeper 2>/dev/null
- 备注:超级用户、Digest、证书和 JAAS 配置需重点核查。
- 预期证据:脱敏截图、权限说明。
示例输出(节选)
grep password/digest/secret conf
jaas.conf: user_mid="***";
(口令均为掩码或加密注入,未见明文)
备份恢复
A. 配置备份
核查命令:
find conf /etc/zookeeper -type f 2>/dev/null
- 备注:应覆盖
zoo.cfg、JAAS、证书和脚本配置。 - 预期证据:备份目录截图、策略说明。
示例输出(节选)
find conf /etc/zookeeper
conf/zoo.cfg
conf/log4j.properties
conf/jaas.conf
/etc/zookeeper/ssl/keystore.jks
/etc/zookeeper/ssl/truststore.jks
B. 数据与日志备份
核查命令:
find data logs -type f 2>/dev/null | head
- 备注:快照和事务日志备份策略需明确。
- 预期证据:目录截图、备份说明。
示例输出(节选)
find data logs | head
data/version-2/snapshot.1002
data/version-2/log.1001
logs/zookeeper.log
logs/archive/snapshot.900.gz
C. 恢复能力
核查命令:
echo srvr | nc 127.0.0.1 2181 2>/dev/null
- 备注:应通过节点恢复、快照恢复和集群重建说明恢复能力。
- 预期证据:恢复手册、演练记录、工单。
示例输出(节选)
echo srvr | nc 127.0.0.1 2181
Zookeeper version: 3.8.4
Mode: leader
Node count: 1523
(集群正常,快照与事务日志由 dataDir 每日备份)
剩余信息保护
A. 历史快照与旧日志
核查命令:
find data logs -type f | grep -E "snapshot|log|old|bak|backup" 2>/dev/null
- 备注:旧快照、事务日志和历史配置应清理或归档。
- 预期证据:目录截图、清理说明。
示例输出(节选)
find data logs | grep snapshot|log|old|backup
data/version-2/snapshot.1002
data/version-2/log.1001
/var/backup/zk/snapshot-20260823.tar.gz
logs/archive/snapshot.900.gz
B. 凭据残留
核查命令:
grep -R "password\\|secret\\|digest" . 2>/dev/null
- 备注:配置、日志和脚本中的敏感信息残留应重点核查。
- 预期证据:脱敏截图、整改说明。
示例输出(节选)
grep password/secret/digest .(节选)
conf/jaas.conf: user_mid="***"
logs/zookeeper.log: WARN Client failed to authenticate (no plaintext secrets logged)
个人信息保护
A. ZNode 数据中的个人信息
核查命令:
zkCli.sh ls / 2>/dev/null
- 备注:通常不建议直接查看敏感节点内容,应结合业务访谈判断。
- 【不适用】若 ZooKeeper 仅存储协调元数据、注册信息和非个人信息配置,则该点不适用。
- 预期证据:节点清单截图、业务说明、访谈记录。
示例输出(节选)
zkCli.sh ls /
[admin, brokers, demo, consumers, zookeeper]
(业务 znode 均配置了 digest ACL,匿名不可写)
B. 导出与共享控制
核查命令:
find . -type f | grep -i "export\\|dump" 2>/dev/null
- 备注:备份导出、运维脚本和客户端工具需关注个人信息扩散风险。
- 【不适用】若不承载个人信息,则该点不适用。
- 预期证据:权限说明、制度、访谈记录。
示例输出(节选)
find . | grep export|dump
scripts/export-tree.sh
(存在导出脚本,执行需审批并输出至受控目录)
入侵防范
A. 管理接口与四字命令暴露
核查命令:
grep -R "admin.serverPort\\|4lw.commands.whitelist\\|clientPortAddress" /etc/zookeeper /opt 2>/dev/null
- 备注:重点核查 AdminServer、四字命令和客户端端口是否暴露到无关网络。
- 预期证据:配置截图、端口截图、网络材料。
示例输出(节选)
grep admin.serverPort/whitelist/clientPortAddress conf
admin.serverPort=8080(仅绑定内网,防火墙限制来源)
4lw.commands.whitelist=srvr,mntr
clientPortAddress=192.168.10.41
B. 匿名访问与危险配置
核查命令:
grep -R "authProvider\\|superDigest\\|anonymous" /etc/zookeeper /opt 2>/dev/null
- 备注:应关注匿名访问、超级用户、宽松 ACL 和测试配置。
- 预期证据:配置截图、ACL 截图、处置说明。
示例输出(节选)
grep authProvider/superDigest/anonymous conf
authProvider.1=SASLAuthenticationProvider
(未启用匿名访问,super 账户经 SASL 集中管理)
C. 版本与漏洞风险
核查命令:
zkServer.sh version 2>/dev/null
- 备注:需确认版本、补丁和高危漏洞整改情况。
- 预期证据:版本截图、补丁或整改记录。
示例输出(节选)
zkServer.sh version
Apache ZooKeeper, version 3.8.4
(版本较新,CVE 修复情况见补丁台账)
D. 防护与告警联动
核查命令:
tail -n 20 logs/* 2>/dev/null
- 备注:ZooKeeper 入侵防范通常依赖网络隔离、主机防护和日志告警平台联动。
- 预期证据:平台截图、告警记录、主机防护材料。
示例输出(节选)
tail logs/zookeeper.log(节选)
2026-08-24 10:12:33,884 WARN Client failed to authenticate using SASL: mid-test
2026-08-24 10:12:35,001 INFO Closed socket connection for client /192.168.8.66
(认证失败记录完整并联动防火墙封禁、上送安全平台告警)