tiaotiao
发布于

漏洞修复:Zookeeper服务未授权访问漏洞

OushuDB 组件部署,在默认安装 zookeeper 后,漏洞扫描会检测到 Zookeeper 服务未授权访问漏洞,说明以及修复方法如下:

ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
在通常情况下,zookeeper 允许未经授权的访问。
zookeeper 有三个端口(可以修改),默认端口作用:
1、2181:对 cline 端提供服务
2、3888:选举 leader 使用
3、2888:集群内机器通讯使用(Leader 监听此端口)

修复办法一(推荐):
1、登陆 zookeeper
./zkCli.sh -server :

2、查看当前权限:
getAcl /

3、添加可访问 IP
setAcl / ip:192.168.1.xx:cdrwa,ip:192.168.1.xx:cdrwa

4、查看是否正常添加
getAcl /

未授权也可以连接,但是查看节点时会报错"KeeperErrorCode = NoAuth for /",localhost 都不行,必须填可访问 IP,才能访问。

[zk: localhost:2181(CONNECTED) 0] ls /
KeeperErrorCode = NoAuth for /
[zk: localhost:2181(CONNECTED) 1]

回退办法:
使用之前设置的 IP 进行访问:
./zkCli.sh -server :

设置为所有人可访问:
setAcl / world:anyone:cdrwa

修复办法二(如漏洞扫描程序只认 2181 端口是否开放,可用此方法):
每台 zookeeper 节点配置防火墙策略,只允许指定 IP 访问 2181 端口。

iptables -I INPUT -p tcp --dport 2181 -j DROP
iptables -I INPUT -s 172.16.65.xx -p tcp --dport 2181 -j ACCEPT
iptables -I INPUT -s 172.16.65.xx -p tcp --dport 2181 -j ACCEPT
iptables -I INPUT -s 172.16.65.xx -p tcp --dport 2181 -j ACCEPT
service iptables save
service iptables restart
iptables -L

评论
    test