CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限
Zookeeper的ACL通过scheme:id:permissions来构成权限
scheme这边主要用到4种方式:
world:默认方式,相当于全世界都能访问
auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
ip:使用Ip地址认证
这次项目让设置一下dubbo连接zookeper的权限问题,于是看到了设置ACL权限,找到zookeeper下的bin文件夹,打开zk服务,启动./zkCli.sh
如果在dubbo中没有指定分组的话,dubbo会默认生成一个分组dubbo,也就是在zookeeper下面会有个子节点dubbo
1)增加一个认证用户
addauth digest 用户名:密码明文
eg:addauth digest user1:password1
2)设置权限
setAcl /path auth:用户名:密码明文:权限
eg. setAcl /test auth:user1:password1:cdrwa
3)查看Acl设置
getAcl /path
在添加用户之前,查看一下zookeper的节点信息,然后创建一个新的节点用来添加用户(使用绝对路径 要添加数据)
如果不加之前配置的认证用户
setAcl /path digest:用户名:密码密文:权限
注:这里的加密规则是SHA1加密,然后base64编码。
经过上面的过程结果还是不能绕过zookeeper未授权访问漏洞,经测试可以在其他服务器上通过echo envi|nc + ip + 端口 访问到zk的信息
因为zookeeper会默认启动这几个具有world和cdrwa权限的znode,“/” "/zookeeper" "/zookeeper/config"和"/zookeeper/quota"(根据zookeeper的版本不同可能存在不同,并且这几个节点虽然具有world和cdrwa权限,但是是无法删除的,不知道为什么,好在我们可以给它设置ACL列表。另外,官网对着几个节点也没有特别说明,估计和zk本身的一些配置相关吧,不删除最好)。就是这几个znode,会导致你的产品无法通过安全工具的漏洞扫描,解决办法也是很简单的,用我们前面说过的zk.setACL为这几个节点设置权限就OK了,千万别忘记根节点"/"了。
这里之所以设置完zookeeper节点还要设置quota
是因为 znode的ACL是相互独立的 。也就是说,任意不同节点可以用不同的acl列表,互不影响,并且 ACL是不可被继承的 。
好了,到这里,才是真正的解决了这个未授权访问漏洞问题了。
找到zookeeper的日志地址,把日志删除就行了,或者 delete /节点
linux环境下也可以使用命令,查询日志地址
参考博客:
https://blog.csdn.net/hekf2010/article/details/78844609
https://blog.csdn.net/wuxintdrh/article/details/73433283
https://www.cnblogs.com/ilovena/p/9484522.html
HBase的安装包里面有自带zookeeper的。很多系统部署也是直接启动上面的zookeeper。本来也是没有问题的,想想吧,系统里也只有hbase在用zookeeper。先启动zookeeper,再将hbase起来就好了?但是今天遇到了一个很蛋疼的问题。和同事争论了很久。?因为我们是好多hbase集群共用一个zookeeper的,其中一个集群需要从hbase 0.90.2 升级到hbase 0.92上,自然,包也要更新。但是其中一台regionserver上面同时也有跑zookeeper,而zookeeper还是用hbase 0.90.2 自带的zookeeper在跑。?现在好了,升级一个regionserver,连着zookeeper也要受到牵连,看来必须要重启,不然,jar包替换掉,可能会影响到zk正在跑的经常。但是重启zk毕竟对正在连接这个zk的client端会有短暂的影响。?真是蛋疼。本来只是升级hbase,zk却强耦合了。?虽然后来证明zookeeper只要启动了,哪怕jar包删除也不会影响到正在跑的zk进程,但是这样的不规范带来的风险,实在是没有必要。?所以作为运维,我强烈建议zk 和hbase分开部署,就直接部署官方的zk 好了,因为zk本身就是一个独立的服务,没有必要和hbase 耦合在一起。?在分布式的系统部署上面,一个角色就用一个专门的文件夹管理,不要用同一个目录下,这样子真的容易出问题。?当然datanode和tasktracker另当别论,他们本身关系密切。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)