在CentOS系统上部署Zookeeper时,需通过权限管理、认证授权、加密通信、网络隔离及监控审计等多维度措施保障安全。以下是具体操作步骤:
sudo yum install -y java-11-openjdk-devel
sudo yum install -y zookeeper zookeeper-server
zoo.cfg(通常位于/etc/zookeeper/conf/)仅能被Zookeeper用户读写:sudo chown -R zookeeper:zookeeper /etc/zookeeper
sudo chmod -R 644 /etc/zookeeper/conf/zoo.cfg
/var/lib/zookeeper)和日志目录(默认/var/log/zookeeper)需设置为zookeeper用户专属:sudo chown -R zookeeper:zookeeper /var/lib/zookeeper
sudo chown -R zookeeper:zookeeper /var/log/zookeeper
sudo chmod -R 750 /var/lib/zookeeper /var/log/zookeeper
Enforcing模式,可临时设置为Permissive模式验证是否影响Zookeeper运行:sudo setenforce 0
sudo ausearch -c 'zookeeper' --raw | audit2allow -M zookeeper_selinux
sudo semodule -i zookeeper_selinux.pp
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo reboot
firewalld开放2181端口(客户端通信)及2888/3888端口(集群间通信):sudo firewall-cmd --permanent --zone=public --add-port=2181/tcp
sudo firewall-cmd --permanent --zone=public --add-port=2888/tcp
sudo firewall-cmd --permanent --zone=public --add-port=3888/tcp
sudo firewall-cmd --reload
/etc/zookeeper/conf/zookeeper_jaas.conf),定义用户及密码:Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_super="super_secret"
user_admin="admin_secret";
};
zoo.cfg,启用SASL认证并指定JAAS文件路径:authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginPath=/etc/zookeeper/conf/zookeeper_jaas.conf
requireClientAuthScheme=sasl
sudo systemctl restart zookeeper
/configs节点为例):# 添加用户(可选,若使用JAAS认证可跳过)
adduser super_super
# 设置节点ACL(owner为super_super,权限为cdrwa)
setAcl /configs digest:super_super:super_secret:cdrwa
./zkCli.sh -server localhost:2181 -auth digest super_super:super_secret
get /configs # 若返回数据则授权生效
sudo mkdir -p /etc/pki/tls/zookeeper
sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/zookeeper.key \
-x509 -days 3650 -out /etc/pki/tls/certs/zookeeper.crt
sudo openssl pkcs12 -export -in /etc/pki/tls/certs/zookeeper.crt \
-inkey /etc/pki/tls/private/zookeeper.key -out /etc/pki/tls/zookeeper/zookeeper.p12 -name zookeeper -CAfile /etc/pki/tls/certs/zookeeper.crt -caname root
zoo.cfg,指定证书路径及启用客户端认证:ssl.keystore.location=/etc/pki/tls/zookeeper/zookeeper.p12
ssl.keystore.password=your_keystore_password
ssl.truststore.location=/etc/pki/tls/zookeeper/zookeeper.p12
ssl.truststore.password=your_truststore_password
ssl.clientAuth=need
sudo systemctl restart zookeeper
zoo.cfg中添加日志配置,记录客户端操作:log4j.logger.org.apache.zookeeper=INFO, audit
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 %x - %m%n
通过以上步骤,可全面强化CentOS上Zookeeper的安全性,覆盖权限管控、身份认证、数据加密及访问审计等关键环节。需注意,生产环境中应使用强密码、定期更新证书,并限制客户端IP范围以进一步提升安全性。