Ubuntu上Zookeeper安全設置主要包括以下關鍵方面:
使用ufw
(Uncomplicated Firewall)限制對Zookeeper端口的訪問,僅允許可信IP連接。例如,允許192.168.1.0/24
網絡訪問2181端口,拒絕其他IP:
sudo ufw enable # 啟用防火墻
sudo ufw allow from 192.168.1.0/24 to any port 2181 # 允許指定IP段
sudo ufw deny 2181 # 拒絕其他所有IP訪問2181端口
sudo ufw status verbose # 檢查防火墻狀態
編輯/etc/zookeeper/conf/zoo.cfg
,啟用簡單認證并配置用戶密碼:
security.auth.simple.enable=true
auth.type=simple
auth.simple.users=admin:password # 格式:用戶名:密碼(實際使用需替換為強密碼)
重啟Zookeeper使配置生效:
sudo systemctl restart zookeeper
客戶端連接時需提供認證信息:
ZooKeeper zk = new ZooKeeper("localhost:2181", 3000, null);
zk.addAuthInfo("digest", "admin:password".getBytes()); // 添加認證信息
通過zkCli.sh
命令行工具或配置文件設置節點權限:
# 連接到Zookeeper
./zkCli.sh -server localhost:2181
# 添加用戶認證(digest模式)
addauth digest user1:password123
# 設置節點ACL(用戶user1對/myNode有讀寫創建刪除權限)
setAcl /myNode digest:user1:password123:cdrwa
/etc/zookeeper/conf/zoo_acls.conf
,定義ACL規則:create /myNode "data" digest:user1:password123:cdrwa
read /public "data" world:anyone:r
為防止數據傳輸被竊聽,配置SSL/TLS加密:
mkdir -p /etc/zookeeper/ssl
keytool -genkey -alias zookeeper -keyalg RSA -keysize 2048 \
-keystore /etc/zookeeper/ssl/zookeeper.jks -validity 3650
zoo.cfg
,添加以下參數:ssl.enable=true
ssl.keystore.location=/etc/zookeeper/ssl/zookeeper.jks
ssl.keystore.password=your_keystore_password
ssl.keyPassword=your_key_password
重啟Zookeeper服務:
sudo systemctl restart zookeeper
避免以root
用戶運行Zookeeper,創建專用用戶和組:
sudo addgroup zookeeper # 創建zookeeper組
sudo adduser --system --group --no-create-home --home /var/lib/zookeeper zookeeper # 創建專用用戶
確保ZooKeeper關鍵目錄僅能被專用用戶訪問:
sudo chown -R zookeeper:zookeeper /var/lib/zookeeper # 數據目錄
sudo chown zookeeper:zookeeper /etc/zookeeper/conf/zoo.cfg # 配置文件
sudo chmod -R 750 /var/lib/zookeeper # 數據目錄權限(所有者可讀寫執行,組可讀執行)
sudo chmod 640 /etc/zookeeper/conf/zoo.cfg # 配置文件權限(所有者可讀寫,組可讀)
/etc/ssh/sshd_config
,禁用root遠程登錄并啟用密鑰認證:PermitRootLogin no
PasswordAuthentication no
重啟SSH服務:sudo systemctl restart sshd
/var/log/zookeeper/
)和系統日志,監控異常操作;使用工具(如auditd
)記錄關鍵操作。sudo apt update && sudo apt upgrade zookeeper