Ubuntu上Zookeeper安全設置指南
使用ufw
(Uncomplicated Firewall)限制對Zookeeper端口的訪問,僅允許可信IP連接。
sudo ufw enable
sudo ufw allow OpenSSH
192.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:2181
addauth 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
),防止數據丟失