(不想看故事的直接结尾看总结)这几天收到公司安全部门同事的一个漏洞报告,3200端口未设置密码,可直接访问改端口的redis-sentinel。开始整改,发现redis-sentinel的配置文件里没有设置密码的选项,于是开始百度。百度了一通,都是教怎么给redis-sentinel设置访问master节点的密码的,搞得很头痛。
折腾了一上午,下午继续,突发奇想是不是redis-sentinel会继承redis的配置(requirepass),结果一试还真可以,十分欣喜!设置了requirepass后直接用redis-cli连接提示未认证,使用auth认证报错没有该命令,WTF!后来发现是公司的redis是3.0.6,版本太老了,后来换了5.0.7可以使用auth认证登录,以为就此结束了,结果发现jedis无法连接一直报错(all sentinel down…),继续百度依然无果,卡这了。
第二天继续,定位问题在jedis无法连接设置了requirepass的sentinel,查看配置类有无相关配置,发现有个密码配置,测试过后发现该密码配置为了连接sentinel找到master服务器后,认证master服务器的密码,又开始在度娘上找答案。后来想到新版的配置类可能提供了相关的配置项(当前使用的是spring-boot-starter-data-redis 1.8.12),更新到(spring-boot-starter-data-redis 2.3.4.RELEASE)后发现有个新配置项叫sentinelPassword,感觉找到最终的答案了,但是更新依赖后项目要大改就没有继续测试了,有兴趣的测试了留言告诉我一下看是否能解决,十分感谢_

总结:redis- sentinel可以和redis一样设置requirepass,从而需要验证登录。版本太低导致redis-sentinel不支持auth命令验证密码,更新到5.0.6后发现jedis无法连接需要认证的redis-sentinel,检查发现spring-boot-starter-data-redis版本过低,更新到2.3.4.RELEASE版本后发现新增配置sentinelpassword。(应该到此设置这个密码就行,本人未继续测试了,有大佬测试了的话望留言区说一说,O(∩_∩)O)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐