Ubuntu上Zookeeper安全设置指南
使用ufw(Uncomplicated Firewall)限制对Zookeeper端口的访问,仅允许可信IP连接。
sudo ufw enablesudo ufw allow OpenSSH192.168.1.0/24)访问,或拒绝其他所有IP:sudo ufw allow from 192.168.1.0/24 to any port 2181 # 允许指定网段
sudo ufw deny 2181 # 拒绝其他所有IP
sudo ufw status verbose通过ACL定义节点级别的权限(创建、读取、写入、删除、管理等),常用机制包括world(任何人)、auth(已认证用户)、digest(用户名/密码)。
/etc/zookeeper/conf/zoo.cfg,添加:authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthSchemes=sasl
digest为例):
/opt/zookeeper/bin/zkCli.sh -server localhost:2181addauth digest username:password/secure_node仅user1可读写):setAcl /secure_node digest:user1:Base64密码 user1:cdrwa
getAcl /secure_node通过SASL(支持Kerberos)实现强身份认证,适用于生产环境。
sudo apt install libsasl2-2 libsasl2-modules sasl2-bin/etc/zookeeper/conf/zookeeper_jaas.conf):Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_super="super_secret_password"
user_admin="admin_password";
};
zoo.cfg启用JAAS:jaasLoginRenew=3600000 # 认证刷新间隔(毫秒)
sudo systemctl restart zookeeper加密Zookeeper客户端与服务器之间的通信,防止数据泄露。
keytool):mkdir -p /etc/zookeeper/ssl
keytool -genkey -alias zookeeper -keyalg RSA -keysize 2048 -keystore /etc/zookeeper/ssl/zookeeper.jks -validity 3650
zoo.cfg启用SSL:ssl.enable=true
ssl.keystore.location=/etc/zookeeper/ssl/zookeeper.jks
ssl.keystore.password=your_keystore_password
ssl.keyPassword=your_key_password
sudo systemctl restart zookeeper若通过SSH管理Zookeeper服务器,需强化SSH配置:
/etc/ssh/sshd_config:PermitRootLogin no # 禁止root直接远程登录
PasswordAuthentication no # 禁用密码认证(使用密钥)
AllowUsers your_username # 仅允许指定用户登录
sudo systemctl restart sshd/var/log/zookeeper/zookeeper.out)和系统日志,识别异常操作。dataDir目录(默认/var/lib/zookeeper),防止数据丢失