Debian 上 Zookeeper 安全设置清单
一 基础加固
- 更新系统与软件包:执行 sudo apt update && sudo apt full-upgrade -y,并启用 unattended-upgrades 自动安全更新,及时修补漏洞。
- 最小权限运行:确认服务以 zookeeper 系统用户运行,避免使用 root;检查与修正相关配置与目录属主。
- 目录与文件权限:数据目录 /var/lib/zookeeper、日志目录 /var/log/zookeeper 及配置目录 /etc/zookeeper/conf 仅对 zookeeper 可读写,建议权限 750,属主属组 zookeeper:zookeeper。
- 网络访问控制:仅在内网开放必要端口,默认客户端端口 2181,集群通信端口 2888/3888;使用 ufw 或云安全组限制来源 IP。
- 服务与端口基线:确保仅 Zookeeper 占用相关端口,禁用不必要的端口与服务,减少攻击面。
二 身份与访问控制
- 启用 SASL 认证:在 /etc/zookeeper/conf/zoo.cfg 增加认证提供者并开启客户端 SASL 要求:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthSchemes=sasl
- 配置 JAAS:创建 /etc/zookeeper/conf/jaas.conf,为服务器定义用户与口令(示例):
Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_admin=“StrongPass!23”;
user_kafka=“KafkaPass#45”;
};
在启动环境中指定 JAAS(例如在 systemd 服务或环境变量中设置 -Djava.security.auth.login.config=/etc/zookeeper/conf/jaas.conf),并将 jaas.conf 权限设为 600,属主 zookeeper:zookeeper。
- 配置 Zookeeper ACL:在 zkCli.sh 中对关键 znode 设置 ACL,遵循最小权限原则(示例):
addauth digest admin:StrongPass!23
setAcl /app world:anyone:r
setAcl /app user_kafka:user_kafka:rw
对存量节点执行递归 ACL 刷新,确保新建与历史节点均受控。
三 加密与网络安全
- 传输加密:为客户端与服务端、以及集群节点间启用 SSL/TLS,在 zoo.cfg 中配置相关 SSL 参数(如 serverCnxnFactory、ssl.keyStore/ssl.trustStore 等),并使用有效证书;完成后重启服务并验证握手与证书链。
- 边界防护:通过 ufw 仅允许受管网段访问 2181/2888/3888,示例:
sudo ufw allow from 192.168.1.0/24 to any port 2181,2888,3888 proto tcp
sudo ufw deny 2181/tcp
如需精细化控制,可基于 IP 或网段实施白名单策略。
- 主机加固:禁用不必要的网络服务与端口转发,减少暴露面;对管理口与业务口进行网络分区与访问控制。
四 审计监控与维护
- 日志与审计:启用并集中采集 Zookeeper 服务日志 与 审计日志,记录节点创建、删除、ACL 变更与认证失败等事件;对接 Logwatch/Fail2ban 或集中式 SIEM 进行告警。
- 运行监控:监控 zkServer.sh status、进程存活、端口连通性、请求延迟与连接数,设置阈值告警,及时处置异常。
- 变更与备份:变更前备份 zoo.cfg、jaas.conf 与 myid,变更后在测试环境验证 ACL 与 SASL 生效;定期验证备份与恢复流程可用性。
五 快速核查清单
| 检查项 |
期望结果 |
| 系统与安全更新 |
已启用自动安全更新,近期无关键 CVE 未修补 |
| 运行用户 |
以 zookeeper 非 root 用户运行 |
| 目录权限 |
/var/lib/zookeeper /var/log/zookeeper /etc/zookeeper/conf 权限 750,属主 zookeeper:zookeeper |
| 端口与防火墙 |
仅 2181/2888/3888 对受信网段开放 |
| SASL 与 JAAS |
zoo.cfg 启用 SASL,JAAS 配置正确且权限 600 |
| ACL 覆盖 |
关键 znode 均设置最小权限 ACL,含认证主体 |
| 加密通信 |
客户端与服务端、节点间启用 SSL/TLS 且证书有效 |
| 日志与监控 |
审计与访问日志采集正常,存在阈值告警与巡检报表 |