ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。默认安装配置完的zookeeper允许未授权访问,管理员未配置访问控制列表(ACL)。导致攻击者可以在默认开放的2181端口下通过执行envi命令获得大量敏感信息(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据甚至杀死服务。
zookeeper未授权访问漏洞修复
zookeeper的基本情况
zookeeper是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务。zookeeper官网下载软件包,bin目录下有客户端脚本和服务端脚本。另外还有个工具对理解和使用zookeeper服务非常有用,即zk-ui,该工具是zk服务端的可视化工具,可在web界面对服务端进行操作。
zookeeper以树状结构保存数据,我们完全可以对比linux文件系统理解zookeeper的文件系统。不同点在于linux下的每个目录名对应一个znode。
znode是zk的基本单元,可以存在数据信息、版本信息等等。如图,/是zookeeper的根节点,/目录下的目录均为znode。
ZooKeeper设置ACL权限控制
ZK的节点有5种操作权限:
1 | CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写) |
开启认证前须知
1 | ls / #可以查看根节点 |
修复办法一zookeeper增加一个认证用户方式访问(推荐)
1 | 1.cd bin |
修复办法二 zookeeper创建ip白名单
1 | 格式:setAcl 路径 ip:xxx.xxx.xxx.xx1:cdrwa,ip:xxx.xxx.xxx.xx2:cdrwa |
修改办法三(推荐) 防火墙策略
1 | iptables -I INPUT -s 172.16.65.0/24 -p tcp –dport 2181 -j ACCEPT |