CentOS上Zookeeper安全性保障措施
确保Zookeeper关键文件及目录的权限严格受限,仅允许运行Zookeeper的用户(通常为zookeeper)访问。具体操作包括:
zoo.cfg):所有者设为zookeeper,权限设为644(sudo chown zookeeper:zookeeper /path/to/zoo.cfg; sudo chmod 644 /path/to/zoo.cfg);dataDir)与日志目录(logDir):所有者设为zookeeper,权限设为750(sudo chown -R zookeeper:zookeeper /path/to/dataDir; sudo chmod -R 750 /path/to/dataDir;同理处理日志目录)。若系统启用SELinux,需调整其策略以允许Zookeeper访问所需资源。可通过以下方式处理:
sudo setenforce 0;/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled,并重启系统。通过Zookeeper内置的ACL机制,精细化控制节点访问权限。操作步骤:
zkCli.sh工具添加用户(如zkCli.sh adduser user1),并为节点设置ACL(如zkCli.sh setAcl /path/to/node user1:user1:rwcda,授予user1读写创建删除权限;zkCli.sh setAcl /path/to/node world:anyone:r,授予其他用户只读权限);zk.addAuthInfo("digest", "user1:password".getBytes()))。启用强身份验证协议,防止未授权用户访问:
jaas.conf文件(包含用户凭证,如user_admin "password"),并通过JVM参数传递给Zookeeper(-Djava.security.auth.login.config=/etc/zookeeper/jaas.conf);authProvider为Kerberos相关类)。为Zookeeper客户端与服务器间的通信加密,防止数据泄露:
zoo.cfg文件,指定证书路径(如ssl.keyStore.location=/path/to/keystore.jks、ssl.trustStore.location=/path/to/truststore.jks);new ZooKeeper("localhost:2181", 3000, null, true))。通过防火墙限制Zookeeper端口的访问范围,减少网络攻击面:
2181)、集群节点间通信端口(2888、3888);firewalld:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="2181" protocol="tcp" accept';sudo firewall-cmd --reload)。2181)修改为非标准端口,减少网络扫描风险;maxClientCnxns参数限制单个IP的最大连接数(如maxClientCnxns=50),防止资源耗竭攻击;log4j.properties),记录所有操作以便后续审计。