美文网首页
ZooKeeper未授权访问漏洞处理

ZooKeeper未授权访问漏洞处理

作者: zhuchunyan_aiji | 来源:发表于2020-08-26 18:27 被阅读0次

漏洞验证:
执行以下命令即可远程获取该服务器的环境:
echo envi|nc 192.168.15.74 2181

zookeeper有三个端口(可以修改),默认端口作用:
1、2181:对cline端提供服务
2、3888:选举leader使用
3、2888:集群内机器通讯使用(Leader监听此端口)

修复办法一(需要改程序)-- Zookeeper ACL权限配置及zkclient

方式一:
1)增加一个认证用户
addauth digest 用户名:密码明文
举例:
addauth digest user1:password1 
2)设置权限
setAcl /path auth:用户名:密码明文:权限
setAcl /path digest:用户名:密码密文:权限
举例:
setAcl /test auth:user1:password1:cdrwa 
3)查看Acl设置
getAcl /path 

'digest,'user1:gMM5lnLQm2ZS+DRkBasbNQFb7Cw=
: cdrwa

4) 回退
setAcl / world:anyone:cdrwa

zkclient增加ACL权限:

        ZkClient client = new ZkClient(url.getBackupAddress());

        /**
         * 增加Zookeeper的ACL控制选项
         */
        if (!StringUtils.isEmpty(url.getUsername()) && !StringUtils.isEmpty(url.getPassword())) {
            StringBuffer auth = new StringBuffer(url.getUsername())
                    .append(":").append(url.getPassword());
            client.addAuthInfo("digest", auth.toString().getBytes());
        }

        return client;
    }

ZK的节点有5种操作权限:

CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)

注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限

权限 描述 setAcl中的简写
write 能够设置znode的值 w
read 能够读取znode的值和列出它的children znode r
create 能够创建children znode c
delete 能够删除children znode d
admin 能够执行setAcl即设置访问控制列表 a
all 所有权限 wrcda

修复办法二 zookeeper创建ip白名单

格式:setAcl 路径 ip:xxx.xxx.xxx.xx1:cdrwa,ip:xxx.xxx.xxx.xx2:cdrwa
例如:setAcl /zkaa ip:127.0.0.1:cdrwa,ip:10.111.134.6:cdrwa
恢复:setAcl / world:anyone:cdrwa

修改办法三(推荐) 防火墙策略

iptables -I INPUT -s 172.16.65.0/24 -p tcp --dport 2181 -j ACCEPT
iptables -A INPUT -p tcp --dport 2181 -j DROP
允许172.16.65开头的ip 访问2181端口 ,其余ip不可访问2181 端口
查看防火墙:
iptables -nvL

相关文章

网友评论

      本文标题:ZooKeeper未授权访问漏洞处理

      本文链接:https://www.haomeiwen.com/subject/rurojktx.html