前言
zookeeper是一个分布式服务框架,属于Apache Hadoop 的一个子项目,它主要用来解决分布式应用中经常遇到的一些数据管理问题比如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简单来说zookeeper=文件系统+监听通知机制
Linux中安装zookeeper
下载安装包
cd /usr/local/ 选择安装路径
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz 获取安装包
tar -zxvf zookeeper-3.4.11.tar.gz 解压
安装配置
cd zookeeper-3.4.11/ 进入安装包目录
mkdir data 新建文件夹
cd conf/ 进入conf/文件中
cp zoo_sample.cfg zoo.cfg 将zoo_sample.cfg另存为zoo.cfg
vi zoo.cfg 修改dataDir路径为刚刚创建的data
服务启动
cd bin/ 进入bin/目录
./zkServer.sh start 启动
./zkServer.sh stop 停止
./zkServer.sh status 查看状态
./zkCli.sh -server <IP>:<port> 登录
quit 退出登录
解决未授权访问的安全加固
默认情况下,Zookeeper的认证方式为world,即所有人都可以在没有授权的情况下访问,这使得黑客很容易使用该漏洞收集信息,破坏集群。
执行以下命令即可远程获取该服务器的环境
echo envi | nc ip port
1.指定IP访问
setAcl <path> ip:<ip地址>:cdrwa 添加可以查看节点的IP
未指定的IP也可以登录,但是没有权限查看节点的内容
2.auth认证方式
addauth digest <user>:<password> 添加认证用户,登录认证也是通过该命令
setAcl <path> auth:<user>:明文密码:cdrwa 设置节点权限
3.digest认证方式
setAcl <path> digest:<user>:密文密码:cdrwa 设置权限
密码是经过SHA1加密后使用base64编码的密文,在终端可通过以下命令计算:
echo -n <user>:<password> | openssl dgst -binary -sha1 | openssl base64
addauth digest test:Zookeeper 登录认证
小结: 以上的方法基本解决了zookeeper未授权漏洞,但如果用的是漏扫工具进行扫描,还是有可能会显示漏洞存在,因此需要对zookeeper默认启动项"/" “/zookeeper”"/zookeeper/config"和"/zookeeper/quota"等做权限设置,而且最好用防火墙做端口限制访问
4. 防火墙策略做端口限制
iptables -I INPUT -p tcp --dport 2181 -j DROP 关闭端口
iptables -I INPUT -s 指定IP -p tcp --dport 2181 -j ACCEPT 允许IP访问
service iptables save 保存设置
常用操作命令
help 显示基本命令
ls <path> 查看节点列表
getAcl <path> 查看节点权限设置
delete <path> 删除节点
create <path> data 创建节点