赞
踩
zookeeper默认所有地址可访问,存在安全问题,除升级对应版的最高版本外,还需进行服务ACL限制访问。
进度到zk的安装bin目录
cd /地址省略/zookeeper3-4.-14/bin
执行命令:
./zkCli.sh -server ip:2181
ip根据自己实际服务器进行填写
登录截图:
执行命令
getAcl /
可以看到当前可访问为anyone,所有人可访问,我们需要对它进行限制
命令:
setAcl / ip:127.0.0.1:cdrwa,ip:ip1:cdrwa,ip:ip2:cdrwa
其中127.0.01标识本机,ip1和ip2根据实际需求进行灵活调整
cdrwa每个参数代表的意思:c
:创建(Create)d
:删除(Delete)r
:读取(Read)w
:写入(Write)a
:访问(Access)
cdrwa也可根据实际需求进行调整
同样使用getAcl /查看是否设置成功
执行quit退出zk
如果不小心设置失误导致本机没有访问zk的权限,做如下操作
1、在zoo.cfg文件中加上配置:skipACL=yes
2、重启zook后,再使用setAcl设置对应的权限
3、确认权限设置好之后,注释配置zoo.cfg配置文件中的skipACL=yes
4、重启zook。
--设置为所有人可访问:
setAcl / world:anyone:cdrwa
【补充内容】:上述限制ip的方式虽然可以限制节点访问,但是未授权依然可以连接,执行nc命令依然可以获取一些信息,比如执行 echo envi | nc <IP> 2181还是可以获取zk环境的信息。
补充一种防火墙限制2181端口访问的措施
******************************************分界线*********************************************************
【注】以下防火墙命令执行需要root账号或者账号拥有 sudo权限,如果是sudo权限,每个命令前面加sudo
#限制所有ip访问2181端口,(第一步)
iptables -I INPUT -p tcp --dport 2181 -j DROP
或
iptables -I INPUT -p tcp --dport 2181 -j REJECT
#设置可访问2181的ip(第二步)--记得添加本机ip
iptables -I INPUT -s <本机IP> -p tcp --dport 2181 -j ACCEPT
iptables -I INPUT -s <授权IP> -p tcp --dport 2181 -j ACCEPT
#保存(第三步)
service iptables save
#重启(第四步)
service iptables restart
#打印配置内容
iptables -L
#清除规则
sudo iptables -D INPUT -p tcp --dport 2181 -j REJECT
这条命令会删除INPUT链中针对端口2181的拒绝(REJECT)规则。如果你之前设置的是DROP规则,你需要将REJECT替换为DROP
sudo iptables -D INPUT -p tcp --dport 8080 -j DROP
#验证,在另一台机子上执行以下命令,看是否输出内容
echo envi | nc 10.190.133.18 2181
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。