• zookeeper未授权访问测试、修复


    zookeeper未授权访问测试参考文章:
    https://www.cnblogs.com/Hi-blog/p/Zookeeper-UnAuthorization-Access.html#_label04

    探测2181

    探测Zookeeper服务开放
    如使用nmap探测某个目标地址是否运行Zookeeper服务,探测2181端口开放。
    root@kali:~# nmap -Pn -p 2181 xx.xx.xx.xx


    探测四字命令

    用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交四字命令,来探测四字命令是否开启
    参考文章:
    https://www.cnblogs.com/kuku0223/p/8428341.html
    https://www.jianshu.com/p/1d638fac4da8
    https://zookeeper.apache.org/doc/r3.6.1/zookeeperAdmin.html#sc_zkCommands

    • conf命令
    输出相关服务配置的详细信息,端口、数据路径、日志路径、session 超时时间,最大连接数等。
    root@kali:~# echo conf | nc xx.xx.xx.xx 2181
    
    • cons命令
    列出所有连接到当前服务器的客户端/会话的详细信息
    root@kali:~# echo cons | nc xx.xx.xx.xx 2181 | more
    
    • dump命令
    输出未处理的会话和临时节点,leader 节点有效。
    root@kali:~# echo dump | nc xx.xx.xx.xx 2181 | more
    
    • envi命令
    输出服务器的详细信息。
    root@kali:~# echo envi | nc xx.xx.xx.xx 2181
    

    用安装好zk环境的客户端连接测试

    ./zkCli.sh -server x.x.x.x:2181
    ls /
    # 输出目录就是 连接成功
    
    # 输出 Authentication is not valid : /   就是没有权限
    

    修复

    修复步骤一 关闭四字命令

    ZooKeeper3.4.6支持某些特定的四字命令与其的交互。它们大多是查询命令,但也有重启zk之类的命令,四字命令可以用来获取、重启 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令。
    从运维的角度看,这个功能很方便,但是从安全角度来看,就需要关闭这些特定的四字命令来确保安全了,修复方式为:升级zookeeper>=3.5.3(旧版本不能给四字命令加白名单哦,升级请自行评估风险),然后设置四字命令白名单、关闭http使用四字命令工具即可,示范如下:

    /home/work/software/apache-zookeeper-3.6.1-bin/conf/zoo.cfg
     
    #限制tcp使用4字命令的白名单,添加了白名单的四字命令才能执行 (升级到高版本以后默认的白名单4字命令里只有srvr这一个,请按需增加)
    4lw.commands.whitelist=stat, srvr 
     
    #是否开启jetty服务允许使用http方式执行4字命令,默认为true开启,false为关闭(升级到高版本以后默认开启http方式)
    admin.enableServer=false
    
    • 如果真的有需求要开启http功能
    如果有需求要开启http功能,可以修改根路径名称,改成20位的随机字符
    #修改http四字命令的根路径,默认为/commands
    admin.commandURL=/2cgyS2rQGW4yzjJlXV0k
    
    访问路径就会变成:curl http://10.39.27.200:8080/2cgyS2rQGW4yzjJlXV0k/envi
    

    设置成功之后 ,继续做修复步骤二;
    参考文章:
    https://www.cnblogs.com/kuku0223/p/8428341.html
    https://www.jianshu.com/p/1d638fac4da8
    https://zookeeper.apache.org/doc/r3.6.1/zookeeperAdmin.html#sc_zkCommands


    修复步骤二 关闭未授权访问

    开启SASL_PLAINTEXT认证(用户名和密码认证)
    https://www.cnblogs.com/iamsach/p/9234624.html

    或者用下面的方式

    添加IP白名单对连接ZK的客户端进行限制
    通过IP白名单对连接ZK的客户端进行限制,比较简单,只需要收集一下IP即可。因zookeeper不支持节点间权限的继承,所以需要对关键节点进行权限控制。
    这里对“/”、“/dubbo”、“/zookeeper”节点进行限制,示范如下:

    <ZooKeeper_HOME>/bin/
    ./zkCli.sh -server ip:port
    setAcl / ip:xx.xx.xx.152:cdrwa,ip:xx.xx.xx.151:cdrwa,ip:xx.xx.xx.156:cdrwa,ip:xx.xx.xx.155:cdrwa,ip:xx.xx.xx.150:cdrwa,ip:xx.xx.xx.149:cdrwa
    setAcl /dubbo ip:xx.xx.xx.152:cdrwa,ip:xx.xx.xx.151:cdrwa,ip:xx.xx.xx.156:cdrwa,ip:xx.xx.xx.155:cdrwa,ip:xx.xx.xx.150:cdrwa,ip:xx.xx.xx.149:cdrwa
    setAcl /zookeeper ip:xx.xx.xx.152:cdrwa,ip:xx.xx.xx.151:cdrwa,ip:xx.xx.xx.156:cdrwa,ip:xx.xx.xx.155:cdrwa,ip:xx.xx.xx.150:cdrwa,ip:xx.xx.xx.149:cdrwa
    

    设置完setAcl,然后用getAcl 查看一下是否配置成功.

  • 相关阅读:
    C# 获取类似java gettime() 的时间格式
    LUbuntu电脑棒安装指南
    Visual Studio Gallery
    SQL SERVER 分页存储过程
    asp.mvc获取checkbox、radio、select的值
    C#面向对象的一些笔记
    Javascript预解析、作用域、作用域链
    解决ajax请求cors跨域问题
    Asp.Net操作WebServices
    2019年科技趋势前10位
  • 原文地址:https://www.cnblogs.com/mysticbinary/p/13536093.html
Copyright © 2020-2023  润新知