服務器信息泄露、集羣被破壞html
工具:netcat ,Linux或Windows均可以測node
命令行輸入echo envi | nc 10.10.10.10 2181
便可查看服務器信息bash
命令有:envi stat ruok等服務器
不想泄露信息能夠修改zookeeper/conf/zoo.cfg(zookeeper爲安裝目錄),註釋掉 4lw.commands.whitelist
相關的行。四字命令用於查詢狀態,zookeeper默認不開放這些命令,只有在白名單中才能運行。svg
工具:Linux下安裝zookeeper;或Windows下使用Java8運行zktools>>工具做者<<工具
Linux下,輸入測試
zookeeper/bin/zkCli.sh -server 10.10.10.10:2181
便可鏈接,可以使用get /node watch
或set /node 1
等命令去操做節點,若是成功,則證實此節點存在未受權訪問。ui
Windows下,只要zktools鏈接成功,則證實全部節點存在未受權訪問。值得注意的是,若是某個節點有權限控制,那麼zktools就沒法鏈接成功,沒法訪問其餘未受權節點了。可是Linux下zkCli.sh仍可訪問其餘未受權節點。.net
可使用下列操做限制訪問節點的IP命令行
setAcl -R /node ip:127.0.0.1:cdrwa,ip:10.10.11.11:cdrwa #-R爲遞歸,cdrwa爲權限
即用戶模式,制定策略後,訪問者必須使用addauth digest user:passwd
登陸才能進行節點操做。
策略制定方法爲,用zkCli.sh鏈接後,在其中運行addauth digest user:passwd(digest是固定的)
來註冊用戶,能夠有多個用戶。而後運行setAcl /node auth::cdrwa(auth是固定的)
,以後可運行getAcl /node
查看,能發現以前註冊的用戶都被配入了節點的權限中。使用quit
退出,再鏈接,可發現只有在使用addauth
登陸以後才能操做節點。
不難發現策略2中,全部用戶對節點的權限都是一致的,只能統一設置,若想使不一樣用戶對節點的權限不一樣,可使用digest Acl受權策略,參見 http://www.javashuo.com/article/p-yzzmshle-gw.html
使用以上策略限制節點後,任意用戶仍可登陸並用ls / 查看節點名字,可是沒法得到詳細信息和進行操做。若想不讓任意用戶訪問2181端口,能夠配置防火牆。
(๑•̀ㅂ•́)و✧
往期精彩文章推薦: