等保测评命令——zookeeper

各位大佬,想看那种网络设备/操作系统/数据库/中间件的测评命令清单,可在留言区留言!

依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级”安全计算环境” 条款,结合ZooKeeper官方安全指南及现场测评实践。

适用版本:ZooKeeper 3.5.x / 3.6.x / 3.7.x / 3.8.x / 3.9.x


一、身份鉴别

1.1 服务端认证配置

控制项测评命令/配置达标判据
客户端认证zoo.cfg authProvider启用SASL认证
超级用户zoo.cfg superUser配置超级用户
管理员认证zoo.cfg admin.*启用管理员认证
证书认证zoo.cfg ssl.*启用SSL/TLS
会话超时zoo.cfg maxSessionTimeout合理设置

ZooKeeper特有配置:

# 查看ZooKeeper配置目录
ls-la$ZK_HOME/conf/

# 查看核心配置文件
cat$ZK_HOME/conf/zoo.cfg

# 关键安全配置检查
grep-E"authProvider|superUser|admin|digest|kerberos|ssl|sasl"$ZK_HOME/conf/zoo.cfg

# 关键配置项:
# authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
# authProvider.2=org.apache.zookeeper.server.auth.DigestAuthenticationProvider
# superUser=super:admin
# admin.enableServer=true
# admin.serverPort=8080
# admin.requireClientAuthScheme=sasl
# sessionRequireClientSASLAuth=true
# maxSessionTimeout=60000

# 查看Java认证配置(JAAS)
cat$ZK_HOME/conf/jaas.conf

# 关键配置:
# Server {
#   org.apache.zookeeper.server.auth.DigestLoginModule required
#   user_super="super_secret"
#   user_admin="admin_secret"
#   user_kafka="kafka_secret";
# };

# 查看Kerberos配置(如启用)
cat$ZK_HOME/conf/zoo.cfg |grep-E"kerberos|principal|keytab"
cat$ZK_HOME/conf/krb5.conf 2>/dev/null

# 查看管理员服务器配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"admin|admin.server"

# 查看四字命令白名单(安全加固)
cat$ZK_HOME/conf/zoo.cfg |grep"4lw.commands.whitelist"
# 应限制为:srvr, mntr, conf, ruok(生产环境)

# 查看会话认证要求
cat$ZK_HOME/conf/zoo.cfg |grep"sessionRequireClientSASLAuth"
# 应设置为true(强制客户端认证)

1.2 客户端认证配置

# 查看客户端JAAS配置
cat$ZK_HOME/conf/jaas-client.conf 2>/dev/null

# 关键配置:
# Client {
#   org.apache.zookeeper.server.auth.DigestLoginModule required
#   username="kafka"
#   password="kafka_secret";
# };

# 查看客户端SSL配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"client.ssl|ssl.client"

# 查看ZooKeeper客户端连接字符串(应包含认证信息)
cat /etc/kafka/server.properties 2>/dev/null |grep"zookeeper.connect"
cat$FLINK_HOME/conf/flink-conf.yaml 2>/dev/null |grep"zookeeper.connect"

# 验证客户端认证(zkCli.sh)
zkCli.sh -server localhost:2181
# 连接后执行:
# addauth digest user:password
# 或
# addauth sasl user:password

二、访问控制

2.1 ACL(访问控制列表)

控制项测评命令达标判据
节点ACLgetAcl /path配置合理ACL
默认ACLskipACL配置不跳过ACL检查
IP白名单setAcl ip:192.168.1.0/24限制客户端IP
超级用户权限superUser使用最小化使用

ZooKeeper特有配置:

# 连接ZooKeeper并检查ACL
zkCli.sh -server localhost:2181

# 查看根节点ACL
getAcl /

# 查看关键节点ACL
getAcl /zookeeper
getAcl /zookeeper/config
getAcl /brokers 2>/dev/null  # Kafka
getAcl /hbase 2>/dev/null    # HBase
getAcl /flink 2>/dev/null    # Flink
getAcl /yarn-leader-election 2>/dev/null  # YARN

# 查看ACL配置模式
# world:anyone:cdrwa  - 危险,任何人可访问
# auth:user:password:cdrwa  - 认证用户
# digest:user:hash:cdrwa  - 摘要认证
# host:hostname:cdrwa  - 主机限制
# ip:192.168.1.0/24:cdrwa  - IP限制
# sasl:user:cdrwa  - SASL认证

# 查看是否跳过ACL检查(危险配置)
grep"skipACL"$ZK_HOME/conf/zoo.cfg
# 应设置为no或注释掉

# 查看超级用户配置
grep"superUser"$ZK_HOME/conf/zoo.cfg

# 查看节点配额(资源限制)
listquota /path
# 或
get /zookeeper/quota/path

# 查看节点限制配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"jute.maxbuffer|maxClientCnxns"

# 关键配置:
# maxClientCnxns=60  # 单IP最大连接数
# jute.maxbuffer=4194304  # 最大数据包大小(4MB)

2.2 网络访问控制

# 查看ZooKeeper端口配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"clientPort|secureClientPort|admin.serverPort"

# 关键端口:
# clientPort=2181          # 客户端端口(明文)
# secureClientPort=2182    # 安全客户端端口(SSL)
# admin.serverPort=8080    # 管理员接口

# 查看绑定地址
cat$ZK_HOME/conf/zoo.cfg |grep-E"clientPortAddress|admin.serverAddress"

# 应绑定具体IP,而非0.0.0.0
# clientPortAddress=192.168.1.100

# 查看防火墙规则
iptables -L-n|grep-E"2181|2182|2888|3888|8080"
firewall-cmd --list-all |grep-E"2181|2182|2888|3888|8080"

# 查看集群通信端口(Leader选举)
cat$ZK_HOME/conf/zoo.cfg |grep-E"server\.[0-9]+"
# server.1=zoo1:2888:3888
# 2888 - Leader端口
# 3888 - 选举端口

# 查看集群成员
cat$ZK_HOME/conf/zoo.cfg |grep"^server\."
cat$ZK_HOME/data/myid

# 查看peerType(观察者/参与者)
cat$ZK_HOME/conf/zoo.cfg |grep"peerType"

三、安全审计

3.1 日志与审计配置

控制项测评命令/配置达标判据
事务日志zoo.cfg dataLogDir独立存储
快照日志zoo.cfg dataDir定期清理
审计日志zoo.cfg audit.enable启用审计(3.6+)
日志保留清理脚本≥6个月
日志保护文件权限640 zookeeper

ZooKeeper特有配置:

# 查看日志配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"dataDir|dataLogDir|log4j"

# 关键配置:
# dataDir=/var/lib/zookeeper/data      # 快照目录
# dataLogDir=/var/lib/zookeeper/logs   # 事务日志目录(应独立磁盘)

# 查看事务日志
ls-la$ZK_HOME/data/version-2/
ls-la /var/lib/zookeeper/data/version-2/

# 查看事务日志文件
ls-la /var/lib/zookeeper/logs/version-2/

# 查看日志文件权限
ls-la /var/lib/zookeeper/data/ |head-5
ls-la /var/lib/zookeeper/logs/ |head-5

# 查看审计日志配置(ZooKeeper 3.6+)
cat$ZK_HOME/conf/zoo.cfg |grep-E"audit|audit.enable"

# 关键配置:
# audit.enable=true
# audit.impl.class=org.apache.zookeeper.audit.ZKAuditProvider

# 查看审计日志输出
cat$ZK_HOME/conf/log4j.properties |grep-i audit

# 查看审计日志文件
ls-la$ZK_HOME/logs/zookeeper_audit.log 2>/dev/null
tail-20$ZK_HOME/logs/zookeeper_audit.log 2>/dev/null

# 查看标准日志
ls-la$ZK_HOME/logs/zookeeper-*.out
tail-50$ZK_HOME/logs/zookeeper-*.out

# 查看GC日志
ls-la$ZK_HOME/logs/zookeeper_gc.log* 2>/dev/null

# 查看日志保留策略
cat$ZK_HOME/conf/log4j.properties |grep-E"MaxFileSize|MaxBackupIndex|DailyRollingFileAppender"

# 查看自动清理配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"autopurge|purge"

# 关键配置:
# autopurge.snapRetainCount=3
# autopurge.purgeInterval=24

3.2 审计事件分析

# 查看审计日志内容(3.6+)
cat$ZK_HOME/logs/zookeeper_audit.log 2>/dev/null |tail-50

# 审计事件类型:
# sessionStart/sessionStop - 会话开始/结束
# create/delete - 节点创建/删除
# setData - 数据修改
# setAcl - ACL变更
# multi - 批量操作
# reconfig - 配置变更

# 查看会话审计
grep"sessionStart\|sessionStop"$ZK_HOME/logs/zookeeper_audit.log 2>/dev/null |tail-20

# 查看节点变更审计
grep"create\|delete\|setData"$ZK_HOME/logs/zookeeper_audit.log 2>/dev/null |tail-20

# 查看ACL变更审计
grep"setAcl"$ZK_HOME/logs/zookeeper_audit.log 2>/dev/null |tail-20

# 查看异常操作
grep"error\|denied\|unauthorized"$ZK_HOME/logs/zookeeper-*.out 2>/dev/null |tail-20

# 查看四字命令使用(如启用审计)
grep"mntr\|ruok\|conf\|stat"$ZK_HOME/logs/zookeeper-*.out 2>/dev/null |tail-20

四、入侵防范

4.1 系统加固

# 查看ZooKeeper版本(确认最新补丁)
cat$ZK_HOME/RELEASE 2>/dev/null
cat$ZK_HOME/CHANGES.txt 2>/dev/null |head-20
echo"stat"|nc localhost 21812>/dev/null |grep"Zookeeper version"

# 查看CVE漏洞(需外部扫描)
# 检查是否使用存在漏洞的版本(如CVE-2019-0201, CVE-2020-9485等)

# 查看四字命令白名单(安全加固)
cat$ZK_HOME/conf/zoo.cfg |grep"4lw.commands.whitelist"

# 生产环境应限制为:
# 4lw.commands.whitelist=srvr,mntr,conf,ruok
# 禁用:dump, envi, reqs, stat, wchs, wchc, wchp(信息泄露风险)

# 查看管理员接口安全
cat$ZK_HOME/conf/zoo.cfg |grep-E"admin|admin.server"

# 建议配置:
# admin.enableServer=true
# admin.serverPort=8080
# admin.commandURL=/commands
# admin.requireClientAuthScheme=sasl  # 强制认证

# 查看JMX配置(限制远程访问)
cat$ZK_HOME/conf/zoo.cfg |grep-E"jmx|com.sun.management"

# 查看动态配置(reconfig)安全
cat$ZK_HOME/conf/zoo.cfg |grep-E"reconfigEnabled|dynamicConfigFile"

# 查看SSL/TLS配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"ssl|secureClientPort|clientPortSsl"

# 查看序列化安全(防止反序列化攻击)
cat$ZK_HOME/conf/zoo.cfg |grep-E"jute.maxbuffer|maxBuffer"

# 查看连接限制
cat$ZK_HOME/conf/zoo.cfg |grep-E"maxClientCnxns|maxClientCnxnHost"

# 关键配置:
# maxClientCnxns=60  # 单客户端IP最大连接数

4.2 资源限制与防护

# 查看内存配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"jvm|heap|memory|Xmx|Xms"
cat$ZK_HOME/bin/zkEnv.sh |grep-E"ZK_SERVER_HEAP|ZK_CLIENT_HEAP"

# 查看JVM参数
ps-ef|grep zookeeper |grep-oE"\-Xmx[0-9]+[mg]|\-Xms[0-9]+[mg]"

# 查看会话超时配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"tickTime|initLimit|syncLimit|maxSessionTimeout|minSessionTimeout"

# 关键配置:
# tickTime=2000              # 基本时间单位(毫秒)
# initLimit=10               # 初始同步限制(tickTime倍数)
# syncLimit=5                # 同步限制(tickTime倍数)
# maxSessionTimeout=60000    # 最大会话超时(60秒)
# minSessionTimeout=4000     # 最小会话超时(4秒)

# 查看数据大小限制
cat$ZK_HOME/conf/zoo.cfg |grep-E"jute.maxbuffer|maxClientCnxns"

# 查看节点数量限制(通过配额)
zkCli.sh -server localhost:2181
# listquota /zookeeper

# 查看磁盘使用
df-h /var/lib/zookeeper/
du-sh /var/lib/zookeeper/data/
du-sh /var/lib/zookeeper/logs/

# 查看文件句柄限制
cat /proc/$(pgrep -f"QuorumPeerMain")/limits |grep"Max open files"
ulimit-n

# 查看进程限制
cat /etc/security/limits.conf |grep zookeeper

五、数据安全与加密

5.1 传输加密(SSL/TLS)

# 查看SSL配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"ssl|secureClientPort"

# 关键配置:
# secureClientPort=2182
# serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory
# ssl.keyStore.location=/path/to/keystore.jks
# ssl.keyStore.password=password
# ssl.trustStore.location=/path/to/truststore.jks
# ssl.trustStore.password=password
# ssl.clientAuth=need  # 需要客户端证书

# 查看证书详情
keytool -list-v-keystore$ZK_HOME/conf/zookeeper.keystore 2>/dev/null |head-20

# 查看证书有效期
keytool -list-v-keystore$ZK_HOME/conf/zookeeper.keystore 2>/dev/null |grep-E"Valid from|until"

# 查看协议版本(应禁用TLSv1.0/1.1)
cat$ZK_HOME/conf/zoo.cfg |grep-E"ssl.protocol|ssl.enabledProtocols"

# 查看密码套件
cat$ZK_HOME/conf/zoo.cfg |grep-E"ssl.ciphersuites|ssl.cipherSuites"

# 查看国密SSL配置(如使用国密版JDK)
cat$ZK_HOME/conf/zoo.cfg |grep-E"gmssl|sm2|sm3|sm4"

5.2 数据存储安全

# 查看数据目录权限
ls-la /var/lib/zookeeper/
ls-la /var/lib/zookeeper/data/
ls-la /var/lib/zookeeper/logs/

# 应设置为:
# drwxr-x--- zookeeper zookeeper

# 查看事务日志权限
ls-la /var/lib/zookeeper/logs/version-2/ |head-5

# 查看快照文件权限
ls-la /var/lib/zookeeper/data/version-2/ |head-5

# 查看数据加密(ZooKeeper 3.5+支持KMS集成)
cat$ZK_HOME/conf/zoo.cfg |grep-E"encryption|kms|key"

# 查看快照加密(企业版或自定义)
cat$ZK_HOME/conf/zoo.cfg |grep-E"snapshot.encryption|data.encryption"

# 查看配置加密(敏感信息)
cat$ZK_HOME/conf/zoo.cfg |grep-E"password|secret"
# 应避免明文存储,使用环境变量或密钥管理系统

# 查看myid文件权限
ls-la /var/lib/zookeeper/data/myid
# 应设置为:-rw-r----- zookeeper zookeeper

六、高可用与灾备

# 查看集群模式
cat$ZK_HOME/conf/zoo.cfg |grep-E"standaloneEnabled|reconfigEnabled"

# 查看集群成员
cat$ZK_HOME/conf/zoo.cfg |grep"^server\."
cat$ZK_HOME/conf/zoo.cfg.dynamic 2>/dev/null

# 查看观察者(Observer)配置
cat$ZK_HOME/conf/zoo.cfg |grep"peerType=observer"

# 查看同步状态
echo"mntr"|nc localhost 21812>/dev/null |grep-E"zk_synced_peers|zk_pending_syncs"

# 查看Leader选举状态
echo"stat"|nc localhost 21812>/dev/null |grep-E"Mode|Leader"

# 查看节点健康状态
zkServer.sh status

# 查看备份配置
cat$ZK_HOME/conf/zoo.cfg |grep-E"autopurge|snapRetainCount"

# 查看手动备份脚本
ls-la /backup/zookeeper/ 2>/dev/null
cat /usr/local/bin/zk-backup.sh 2>/dev/null

# 查看恢复测试记录
cat /var/log/zookeeper/restore-test.log 2>/dev/null

# 查看事务日志备份
ls-la /backup/zookeeper/txn-logs/ 2>/dev/null

# 查看快照备份
ls-la /backup/zookeeper/snapshots/ 2>/dev/null

七、ZooKeeper与大数据生态安全集成

7.1 Kafka安全集成

# 查看Kafka在ZooKeeper中的节点
zkCli.sh -server localhost:2181 -c"ls /brokers/ids"2>/dev/null
zkCli.sh -server localhost:2181 -c"getAcl /brokers"

# 查看Kafka ACL节点
zkCli.sh -server localhost:2181 -c"ls /kafka-acl"2>/dev/null
zkCli.sh -server localhost:2181 -c"getAcl /kafka-acl"

# 查看Kafka配置
zkCli.sh -server localhost:2181 -c"get /config/topics/__consumer_offsets"2>/dev/null

7.2 Hadoop安全集成

# 查看HBase在ZooKeeper中的节点
zkCli.sh -server localhost:2181 -c"ls /hbase"2>/dev/null
zkCli.sh -server localhost:2181 -c"getAcl /hbase"

# 查看HBase配置
zkCli.sh -server localhost:2181 -c"get /hbase/master"2>/dev/null

# 查看YARN在ZooKeeper中的节点
zkCli.sh -server localhost:2181 -c"ls /yarn-leader-election"2>/dev/null

# 查看HDFS HA配置
zkCli.sh -server localhost:2181 -c"ls /hadoop-ha"2>/dev/null

7.3 Flink安全集成

# 查看Flink在ZooKeeper中的节点
zkCli.sh -server localhost:2181 -c"ls /flink"2>/dev/null
zkCli.sh -server localhost:2181 -c"getAcl /flink"

# 查看Flink HA配置
zkCli.sh -server localhost:2181 -c"ls /flink/default"2>/dev/null

八、一键巡检脚本(ZooKeeper)

#!/bin/bash
# Apache ZooKeeper 等保三级一键巡检脚本
# 适用:ZooKeeper 3.5.x / 3.6.x / 3.7.x / 3.8.x / 3.9.x

ZK_HOME=${1:-/opt/zookeeper}
ZK_PORT=${2:-2181}
echo"===== Apache ZooKeeper 等保三级巡检 ====="
echo"巡检时间:$(date)"
echo"主机名:$(hostname)"
echo"ZK_HOME: $ZK_HOME"
echo"ZK_PORT: $ZK_PORT"
echo""

if[!-d"$ZK_HOME"];then
echo"错误:未找到ZooKeeper安装目录 $ZK_HOME"
exit1
fi

echo"===== 1 身份鉴别 ====="
echo"--- 版本信息 ---"
cat${ZK_HOME}/RELEASE 2>/dev/null ||echo"stat"|nc localhost ${ZK_PORT}2>/dev/null |grep"Zookeeper version"

echo"--- 认证配置 ---"
grep-E"authProvider|superUser"${ZK_HOME}/conf/zoo.cfg 2>/dev/null |head-5

echo"--- JAAS配置 ---"
cat${ZK_HOME}/conf/jaas.conf 2>/dev/null |head-10||echo"未找到JAAS配置"

echo"--- Kerberos配置 ---"
grep"kerberos"${ZK_HOME}/conf/zoo.cfg 2>/dev/null |head-3

echo"--- 管理员接口 ---"
grep-E"admin|admin.server"${ZK_HOME}/conf/zoo.cfg 2>/dev/null |head-5

echo""
echo"===== 2 访问控制 ====="
echo"--- ACL检查(需连接ZooKeeper)---"
echo"ruok"|nc localhost ${ZK_PORT}2>/dev/null
if[$?-eq0];then
echo"[信息] ZooKeeper服务可连接,建议手动检查ACL配置"
echo"命令: zkCli.sh -server localhost:${ZK_PORT}"
echo"      getAcl /"
else
echo"[警告] 无法连接ZooKeeper服务"
fi

echo"--- 四字命令白名单 ---"
grep"4lw.commands.whitelist"${ZK_HOME}/conf/zoo.cfg 2>/dev/null ||echo"未配置(危险:允许所有四字命令)"

echo"--- 跳过ACL检查 ---"
grep"skipACL"${ZK_HOME}/conf/zoo.cfg 2>/dev/null ||echo"未配置(安全:不跳过ACL)"

echo"--- 网络配置 ---"
grep-E"clientPort|secureClientPort|clientPortAddress"${ZK_HOME}/conf/zoo.cfg 2>/dev/null

echo"--- 连接限制 ---"
grep-E"maxClientCnxns|jute.maxbuffer"${ZK_HOME}/conf/zoo.cfg 2>/dev/null

echo""
echo"===== 3 安全审计 ====="
echo"--- 审计日志配置 ---"
grep"audit"${ZK_HOME}/conf/zoo.cfg 2>/dev/null |head-3

echo"--- 日志目录 ---"
ls-la${ZK_HOME}/logs/ 2>/dev/null |head-5
ls-la /var/lib/zookeeper/logs/ 2>/dev/null |head-5

echo"--- 审计日志文件 ---"
ls-la${ZK_HOME}/logs/zookeeper_audit.log 2>/dev/null ||echo"未找到审计日志(ZooKeeper 3.6+支持)"

echo"--- 自动清理配置 ---"
grep-E"autopurge|snapRetainCount"${ZK_HOME}/conf/zoo.cfg 2>/dev/null

echo""
echo"===== 4 入侵防范 ====="
echo"--- 四字命令白名单(安全加固)---"
grep"4lw.commands.whitelist"${ZK_HOME}/conf/zoo.cfg 2>/dev/null ||echo"[警告] 未限制四字命令"

echo"--- 管理员接口安全 ---"
grep"admin.requireClientAuthScheme"${ZK_HOME}/conf/zoo.cfg 2>/dev/null ||echo"[建议] 启用管理员接口认证"

echo"--- 会话认证要求 ---"
grep"sessionRequireClientSASLAuth"${ZK_HOME}/conf/zoo.cfg 2>/dev/null ||echo"[建议] 启用强制会话认证"

echo"--- 内存配置 ---"
grep-E"jvm|heap|Xmx|Xms"${ZK_HOME}/conf/zoo.cfg 2>/dev/null |head-3
ps-ef|grep zookeeper |grep-oE"\-Xmx[0-9]+[mg]|\-Xms[0-9]+[mg]"|head-1

echo"--- 会话超时 ---"
grep-E"tickTime|maxSessionTimeout"${ZK_HOME}/conf/zoo.cfg 2>/dev/null |head-3

echo""
echo"===== 5 数据安全 ====="
echo"--- SSL配置 ---"
grep-E"ssl|secureClientPort"${ZK_HOME}/conf/zoo.cfg 2>/dev/null |head-5

echo"--- 证书配置 ---"
ls-la${ZK_HOME}/conf/*.jks ${ZK_HOME}/conf/*.p12 2>/dev/null |head-3||echo"未找到证书文件"

echo"--- 数据目录权限 ---"
ls-ld /var/lib/zookeeper/ 2>/dev/null ||ls-ld${ZK_HOME}/data/ 2>/dev/null

echo"--- 事务日志权限 ---"
ls-la /var/lib/zookeeper/logs/version-2/ 2>/dev/null |head-3||ls-la${ZK_HOME}/logs/version-2/ 2>/dev/null |head-3

echo"--- myid文件权限 ---"
ls-la /var/lib/zookeeper/data/myid 2>/dev/null ||ls-la${ZK_HOME}/data/myid 2>/dev/null

echo""
echo"===== 6 高可用与灾备 ====="
echo"--- 集群配置 ---"
grep"^server\."${ZK_HOME}/conf/zoo.cfg 2>/dev/null |head-5

echo"--- 集群模式 ---"
grep-E"standaloneEnabled|reconfigEnabled"${ZK_HOME}/conf/zoo.cfg 2>/dev/null

echo"--- 备份目录 ---"
ls /backup/zookeeper/ 2>/dev/null |head-5||echo"未找到标准备份目录"

echo""
echo"===== 通用安全检查 ====="
echo"--- 进程运行用户 ---"
ps-ef|grep-E"QuorumPeerMain|zookeeper"|grep-vgrep|awk'{print $1}'|sort|uniq-c

echo"--- 配置文件权限 ---"
ls-la${ZK_HOME}/conf/zoo.cfg ${ZK_HOME}/conf/jaas.conf 2>/dev/null |awk'{print $1, $3, $4, $9}'

echo"--- 端口监听 ---"
ss -tulnp|grep-E"2181|2182|2888|3888|8080"2>/dev/null |head-5

echo"--- 环境变量检查 ---"
env|grep-E"ZK|ZOOKEEPER|PASSWORD|SECRET"|grep-v"HIST"|awk-F='{print $1}'|head-5

echo""
echo"===== 巡检完成 ====="
echo"重点关注以下高风险项:"
echo"1. 未启用SASL认证(authProvider未配置)"
echo"2. 四字命令未限制(4lw.commands.whitelist未配置)"
echo"3. 允许跳过ACL检查(skipACL=yes)"
echo"4. 未启用审计日志(ZooKeeper 3.6+)"
echo"5. 管理员接口未启用认证(admin.requireClientAuthScheme)"
echo"6. 未强制会话认证(sessionRequireClientSASLAuth)"
echo"7. 数据目录权限过于开放"
echo"8. 未配置SSL/TLS加密传输"
echo"9. 明文存储密码或密钥"
echo"10. 单点部署(无高可用)"

九、高风险项重点核查清单

检查项验证命令不合规判定整改建议
未启用SASL认证grep authProvider zoo.cfg未配置配置SASLAuthenticationProvider
四字命令未限制grep 4lw.commands.whitelist zoo.cfg未配置或*限制为srvr,mntr,conf,ruok
允许跳过ACLgrep skipACL zoo.cfgyes或未注释设置为no或删除
未启用审计日志grep audit.enable zoo.cfgfalse或未配置(3.6+)启用审计
管理员接口未认证grep admin.requireClientAuthScheme未配置或none设置为sasl
未强制会话认证grep sessionRequireClientSASLAuthfalse或未配置设置为true
根节点ACL开放getAcl /world:anyone:cdrwa设置为auth或digest
未配置SSLgrep secureClientPort zoo.cfg未配置启用SSL并配置证书
数据目录权限过大ls -ld /var/lib/zookeeper/非750或属主非zookeeper修改为750 zookeeper:zookeeper
单点部署grep "^server\." zoo.cfg | wc -l<3(生产环境)部署3+节点集群

十、ZooKeeper与etcd/Consul对比

对比项Apache ZooKeeperetcdConsul
一致性协议ZABRaftRaft
安全认证SASL/Digest/SSLmTLS/TokenmTLS/Token/ACL
访问控制ACLRBACACL/Policy
审计日志3.6+支持支持支持
传输加密SSL/TLSmTLSmTLS
数据加密有限支持支持
云原生支持一般优秀优秀
等保合规难度
国密支持需配置需配置需配置

十一、等保测评执行要点

1. 关键安全配置检查

# zoo.cfg 生产环境推荐配置
# 认证配置
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
authProvider.2=org.apache.zookeeper.server.auth.DigestAuthenticationProvider
superUser=super:admin
sessionRequireClientSASLAuth=true

# 管理员接口安全
admin.enableServer=true
admin.serverPort=8080
admin.requireClientAuthScheme=sasl

# 四字命令限制
4lw.commands.whitelist=srvr,mntr,conf,ruok

# 网络配置
clientPort=2181
secureClientPort=2182
clientPortAddress=192.168.1.100  # 具体IP
maxClientCnxns=60

# SSL配置
serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory
ssl.keyStore.location=/path/to/keystore.jks
ssl.keyStore.password=${keystore_password}
ssl.trustStore.location=/path/to/truststore.jks
ssl.clientAuth=need

# 审计配置(3.6+)
audit.enable=true

# 资源限制
maxSessionTimeout=60000
jute.maxbuffer=4194304

2. JAAS配置示例

// jaas.conf
Server{
org.apache.zookeeper.server.auth.DigestLoginModule required
  user_super="super_secret_password"
  user_admin="admin_secret_password"
  user_kafka="kafka_secret_password"
  user_hbase="hbase_secret_password";
};

Client{
org.apache.zookeeper.server.auth.DigestLoginModule required
  username="kafka"
  password="kafka_secret_password";
};

3. 现场访谈要点

  • 是否启用SASL/Digest认证(生产环境必须)
  • 是否限制四字命令(防止信息泄露)
  • 是否配置ACL保护关键节点
  • 是否启用审计日志(3.6+)
  • 是否配置SSL/TLS加密传输
  • 是否定期备份事务日志和快照
  • 是否监控ZooKeeper集群健康状态

4. 版本差异

功能项ZooKeeper 3.5ZooKeeper 3.6ZooKeeper 3.7+
审计日志不支持支持增强
动态配置支持增强完善
SSL/TLS支持增强完善
容器支持基础增强完善
性能优化基础增强完善

参考标准:GB/T 22239-2019、GB/T 28448-2019、Apache ZooKeeper Security Documentation

适用版本:ZooKeeper 3.5.x / 3.6.x / 3.7.x / 3.8.x / 3.9.x

验证环境:x86_64 / ARM64 / 国产化芯片(飞腾/鲲鹏/龙芯/海光/兆芯/申威)

声明:来自汪汪虚拟空间,仅代表创作者观点。链接:https://eyangzhen.com/7625.html

汪汪虚拟空间的头像汪汪虚拟空间

相关推荐

添加微信
添加微信
Ai学习群
返回顶部