总体思路
在 Linux 上保障 Zookeeper 安全,建议从网络边界、身份与授权、传输与数据、系统与运维四个层面协同加固,形成多层防线,降低被未授权访问、数据泄露与横向渗透的风险。
网络与主机层加固
- 边界隔离与访问控制
- 仅放通必要端口:客户端端口(默认 2181)、集群通信端口(如 3888 等),并限制来源为受信任网段或白名单 IP。
- 云环境同步配置安全组/NACL,做到主机防火墙与安全组策略一致。
- 端口与暴露面最小化
- 可结合业务场景修改默认端口,降低被自动化扫描与爆破的概率。
- 主机与系统基线
- 以最小权限系统用户运行 Zookeeper 进程,避免使用 root。
- 关闭不必要的端口与服务,减少攻击面。
身份与授权机制
- 认证方式
- 启用 SASL/Kerberos 进行强身份认证;如使用 Digest 认证,为账户设置强密码并定期更换。
- 细粒度授权
- 对关键 znode 配置 ACL,优先采用基于 auth/digest 的模式,按“只读/读写/管理”最小化授权;避免使用 world 或过于宽松的 IP 规则。
- 统一身份治理
- 在大型或托管环境中,结合 SASL/Kerberos 的集中式身份管理与审计能力,降低分散配置带来的风险。
传输与数据保护
- 传输加密
- 为客户端与服务端、以及集群节点间通信启用 TLS/SSL,防止窃听与篡改。
- 数据存储安全
- 对写入 Zookeeper 的敏感数据在应用侧加密后再存储;如业务有要求,可启用服务器端存储加密(结合合规与性能评估)。
- 审计与可追溯
- 启用访问与操作审计日志,记录关键操作(如节点创建/删除/ACL 变更),并集中到 SIEM 进行留存与告警。
系统与运维安全
- 配置与进程安全
- 正确设置 zoo.cfg 中的 dataDir/dataLogDir、最大连接数等参数;将事务日志与快照日志分离,提升性能与可恢复性。
- 以最小权限用户启动服务,文件与目录权限最小化,避免配置与数据被非授权读取或篡改。
- 补丁与版本管理
- 持续关注 Zookeeper 与依赖组件的安全公告,及时更新与打补丁,修复已知漏洞。
- 备份与监控
- 制定定期备份与快速恢复流程;启用实时监控与告警(连接数、延迟、异常请求等),缩短 MTTD/MTTR。
- 安全基线参考
- 结合组织基线禁用不必要功能、限制管理控制台暴露,并保留关键操作审计记录。
快速检查清单
| 检查项 |
推荐做法 |
关键端口/路径 |
| 网络访问 |
仅放通受信来源;主机防火墙与安全组一致 |
2181(客户端)、3888(集群) |
| 身份与授权 |
启用 SASL/Kerberos 或 Digest;为关键 znode 配置最小化 ACL |
— |
| 传输加密 |
启用 TLS/SSL 保护客户端与服务端、节点间通信 |
— |
| 数据与审计 |
敏感数据应用侧加密;开启审计日志并集中存储 |
— |
| 系统与运维 |
以最小权限用户运行;事务/快照日志分离;及时更新;定期备份与监控 |
dataDir、dataLogDir |