配置防火墙规则解决zookeeper漏洞 问题背景公司扫描到漏洞了ZooKeeper是一个分布式的开放源码的分布式应用程序协调服务是Google的Chubby一个开源的实现是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件提供的功能包括配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务将简单易用的接口和性能高效、功能稳定的系统提供给用户。在通常情况下zookeeper允许未经授权的访问 但是特定的命令下用户的环境会存在敏感信息泄露问题攻击者执行特定命令可获取用户环境的等敏感信息。解决方法方法一1增加一个认证用户addauth digest 用户名:密码明文eg. addauth digest user1:password12设置权限setAcl /path auth:用户名:密码明文:权限eg. setAcl /test auth:user1:password1:cdrwa3查看Acl设置getAcl /path方法二setAcl /path digest:用户名:密码密文:权限方法三设置防火墙策略给公司其他服务器添加白名单解决步骤因为方法1、2均影响业务要改配置文件或者改业务代码按代码能跑就不要动的原则采用方式方法三。1.备份iptables-save/root/iptables_20260810.rules2.配置规则# 自定义链管理规则iptables-NZK21812/dev/null||true# 清空该链内已存在的所有规则只删规则不删链本身iptables-FZK2181# 给本机配置IP白名单iptables-AZK2181-s127.0.0.1/32-jACCEPT iptables-AZK2181-sx.x.x.x/32-jACCEPT# 配置其他IP白名单iptables-AZK2181-miprange --src-range x.x.x.x-x.x.x.x-jACCEPT# 其他全部禁止iptables-AZK2181-jDROP# 避免重复入口iptables-DINPUT-ptcp--dport2181-jZK21812/dev/null||true# 最关键将该链插入INPUT主链第一条iptables-IINPUT1-ptcp--dport2181-jZK21813.查看配置是否成功# 查看INPUT主链第一个是否为ZK2181iptables-LINPUT-n-v--line-numbers# 查看ZK2181链信息正常都是上步配置的规则iptables-LZK2181-n-v--line-numbers4.测试4.1白名单服务器测试nc-vz-w3已配置规则的服务器IP2181应输出connect to 已配置规则的服务器IP字样4.2非白名单服务器测试nc-vz-w3已配置规则的服务器IP2181应输出connection time out字样4.3本地服务器测试# 127.0.0.1nc-vz-w3本地服务器IP2181# 公网ipnc-vz-w3本地服务器IP2181均应输出connect to 已配置规则的服务器IP字样4.4更严谨的测试使用上述命令对比同一台服务器在配置白名单前后的输出即可。但如果之前没有规则一般输出都是成功没有对比效果。故此时可以在ZK2181链前加一个临时策略使用上述命令测试后删除该策略再次测试# 添加临时策略iptables-IZK21811-s10.226.21.178-jDROP# 删除该策略iptables-DZK21811这实际上就等价于验证了“非白名单会被 DROP”不需要专门再找一台非白名单服务器。178 白名单状态↓2181 成功临时把178拦掉↓2181 超时删除临时DROP↓2181 再次成功5.设置开机自启领导担心系统宕机要求配置开机自启# 保存当前规则serviceiptables save# 设置开机启动systemctlenableiptables# 确认是否开启开机自启systemctl is-enabled iptables输出enable即为开机自启设置成功。5.回滚万一万一领导又抽风了要回滚或者出了其他什么问题执行以下命令就行了。5.1回滚命令如果做了备份# 如果做了备份iptables-restore/root/iptables_20260810.rules如果没做备份# 1. 删除 INPUT 中跳转到 ZK2181 的规则iptables-DINPUT-ptcp--dport2181-jZK2181# 2. 清空 ZK2181 链iptables-FZK2181# 3. 删除 ZK2181 链iptables-XZK21815.2回滚确认# 查看input链是否删除成功# 确认已经没有ZK2181 tcp ... tcp dpt:2181iptables-LINPUT-n-v--line-numbers# 检查ZK2181链是否删除# 正常提示iptables: No chain/target/match by that name.iptables-LZK2181-n