Zookeeper在Debian下的安全设置
导读:1. 安装Zookeeper 在Debian系统上,使用APT包管理器安装Zookeeper,确保软件包来源安全: sudo apt update && sudo apt install zookeeper -y 2. 配...
1. 安装Zookeeper
在Debian系统上,使用APT包管理器安装Zookeeper,确保软件包来源安全:
sudo apt update &
&
sudo apt install zookeeper -y
2. 配置文件系统权限
Zookeeper的数据目录(默认/var/lib/zookeeper
)和日志目录(默认/var/log/zookeeper
)需设置严格的用户和组权限,避免未授权访问:
# 创建目录(若不存在)
sudo mkdir -p /var/lib/zookeeper /var/log/zookeeper
# 设置所有者为zookeeper用户及组
sudo chown -R zookeeper:zookeeper /var/lib/zookeeper /var/log/zookeeper
# 设置目录权限(750:所有者可读写执行,组可读执行,其他无权限)
sudo chmod -R 750 /var/lib/zookeeper /var/log/zookeeper
3. 以非root用户运行Zookeeper
编辑Zookeeper的默认配置文件/etc/default/zookeeper
,指定运行用户为zookeeper
(系统默认已创建该用户):
ZOOKEEPER_USER=zookeeper
保存后重启服务使配置生效:
sudo systemctl restart zookeeper
4. 配置SASL认证(身份验证)
SASL是Zookeeper推荐的认证机制,需通过JAAS文件配置用户凭证:
- 编辑JAAS配置文件(如
/etc/zookeeper/conf/zookeeper_jaas.conf
),添加Digest认证方式及用户信息:Server { org.apache.zookeeper.server.auth.DigestLoginModule required user_admin "admin_password"; # 替换为实际强密码 user_kafka "kafka_password"; # 替换为实际强密码 } ;
- 设置JAAS文件权限(仅
zookeeper
用户可访问):sudo chown zookeeper:zookeeper /etc/zookeeper/conf/zookeeper_jaas.conf sudo chmod 600 /etc/zookeeper/conf/zookeeper_jaas.conf
- 修改Zookeeper启动脚本(
/etc/default/zookeeper
),指定JAAS文件路径:JAAS_CONF="/etc/zookeeper/conf/zookeeper_jaas.conf"
- 重启Zookeeper服务:
sudo systemctl restart zookeeper
5. 配置ACL(访问控制列表)
通过ACL限制用户对Zoo节点的访问权限,例如为/admin
节点设置仅admin
用户可读写:
- 启动ZooKeeper CLI:
/usr/share/zookeeper/bin/zkCli.sh -server localhost:2181
- 添加用户认证(在CLI中执行):
addauth digest admin:admin_password # 使用之前配置的Digest用户
- 设置节点ACL(限制
/admin
节点仅admin
用户可读写):setAcl /admin digest:admin:admin_password:rwcda # r=read, w=write, c=create, d=delete, a=admin
- 验证ACL(尝试匿名访问
/admin
节点,应被拒绝):get /admin
6. 启用SSL/TLS加密通信
为防止数据在传输过程中被窃取,需配置SSL/TLS加密:
- 生成SSL证书(使用OpenSSL工具):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/zookeeper/ssl/zookeeper.key \ -out /etc/zookeeper/ssl/zookeeper.crt
- 创建密钥库(JKS):
使用keytool
将证书导入密钥库(需安装openjdk-11-jdk
):sudo keytool -import -alias zookeeper -file /etc/zookeeper/ssl/zookeeper.crt \ -keystore /etc/zookeeper/ssl/zookeeper.jks -storepass zoo_pass -keypass zoo_pass
- 修改
zoo.cfg
配置(添加SSL参数):ssl=true ssl.keystore.location=/etc/zookeeper/ssl/zookeeper.jks ssl.keystore.password=zoo_pass ssl.truststore.location=/etc/zookeeper/ssl/zookeeper.jks ssl.truststore.password=zoo_pass
- 重启Zookeeper服务:
sudo systemctl restart zookeeper
7. 配置防火墙限制访问
使用ufw
(Uncomplicated Firewall)限制仅授权IP可访问Zookeeper的默认端口(2181):
# 允许本地回环接口
sudo ufw allow from 127.0.0.1 to any port 2181
# 允许特定IP段(如公司内网192.168.1.0/24)
sudo ufw allow from 192.168.1.0/24 to any port 2181
# 拒绝其他所有IP访问2181端口
sudo ufw deny 2181
# 启用防火墙
sudo ufw enable
8. 启用监控与审计日志
记录所有对Zoo节点的访问操作,便于后续审计和排查安全事件:
- 修改
log4j.properties
文件(/etc/zookeeper/conf/log4j.properties
),开启审计日志:log4j.logger.org.apache.zookeeper.server.PrepRequestProcessor=INFO, audit log4j.additivity.org.apache.zookeeper.server.PrepRequestProcessor=false log4j.appender.audit=org.apache.log4j.RollingFileAppender log4j.appender.audit.File=/var/log/zookeeper/audit.log log4j.appender.audit.MaxFileSize=10MB log4j.appender.audit.MaxBackupIndex=5 log4j.appender.audit.layout=org.apache.log4j.PatternLayout log4j.appender.audit.layout.ConversionPattern=%d{ ISO8601} [%t] %-5p %c{ 1} :%L - %m%n
- 重启Zookeeper服务:
sudo systemctl restart zookeeper
9. 定期更新与安全维护
保持Zookeeper及系统软件为最新版本,及时修补已知安全漏洞:
# 更新软件包列表
sudo apt update
# 升级所有可升级的软件包
sudo apt upgrade -y
# 重启Zookeeper服务以应用更新
sudo systemctl restart zookeeper
10. 其他安全建议
- 禁用SSH root登录:编辑
/etc/ssh/sshd_config
,设置PermitRootLogin no
,并使用SSH密钥对认证。 - 使用强密码策略:安装
libpam-pwquality
工具,配置复杂密码要求(如最小长度、包含大小写字母和数字)。 - 限制root远程访问:通过
/etc/ssh/sshd_config
设置AllowUsers
,仅允许特定用户通过SSH登录。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Zookeeper在Debian下的安全设置
本文地址: https://pptw.com/jishu/718025.html