在CentOS上限制ZooKeeper的访问,可以通过以下几种方法实现:
使用firewalld或iptables来限制对ZooKeeper端口的访问。
firewalld# 启动firewalld服务(如果尚未启动)
sudo systemctl start firewalld
# 允许ZooKeeper默认端口2181的TCP流量
sudo firewall-cmd --permanent --zone=public --add-port=2181/tcp
sudo firewall-cmd --reload
iptables# 允许ZooKeeper默认端口2181的TCP流量
sudo iptables -A INPUT -p tcp --dport 2181 -j ACCEPT
# 保存iptables规则
sudo service iptables save
ZooKeeper支持基于ACL的访问控制。你可以在zoo.cfg文件中配置ACL来限制特定IP地址或IP范围的访问。
编辑/etc/zookeeper/conf/zoo.cfg文件,添加以下内容:
# 启用ACL
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
# SASL认证配置
jaasLoginRenew=3600000
然后创建一个JAAS配置文件(例如/etc/zookeeper/conf/zoo_jaas.conf):
Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_super="super_secret_password"
user_other="other_secret_password";
};
编辑zoo.cfg文件,添加以下内容以启用JAAS配置:
jaasLoginPath=/etc/zookeeper/conf/zoo_jaas.conf
重启ZooKeeper服务:
sudo systemctl restart zookeeper
你可以使用iptables来限制特定IP地址或IP范围的访问。
# 允许特定IP访问ZooKeeper端口2181
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 2181 -j ACCEPT
# 拒绝其他所有IP访问ZooKeeper端口2181
sudo iptables -A INPUT -p tcp --dport 2181 -j DROP
# 保存iptables规则
sudo service iptables save
如果你的系统启用了SELinux,可以使用SELinux策略来限制ZooKeeper的访问。
编辑/etc/selinux/config文件,将SELINUX设置为enforcing:
SELINUX=enforcing
然后创建一个SELinux策略模块来限制ZooKeeper的访问。你可以使用audit2allow工具来生成策略模块。
# 查看SELinux拒绝日志
sudo ausearch -m avc -ts recent
# 生成策略模块
sudo ausearch -m avc -ts recent | audit2allow -M zookeeper_access
# 加载策略模块
sudo semodule -i zookeeper_access.pp
通过以上方法,你可以有效地限制对CentOS上ZooKeeper服务的访问。根据你的具体需求选择合适的方法进行配置。