程序员的自我修养
Home » 标签 » redis

Redis设置密码的那些坑

2条评论2,288次浏览

最近集团安全部扫描到我们组的redis没有设置密码。如何扫描的?一个脚本,登陆到服务器上查看固定路径下的redis配置,没有配置密码就被扫出来。简单无脑暴力。

于是开始虐心的添加redis密码之旅。

Server端配置

方法1:redis-cli -h xxx -p xxx CONFIG SET requirepass xxx

方法2:修改redis.conf文件,配置requirepass

对于twemproxy,可以升级到最新版本,然后配置redis_auth xxx。

Client端配置(Jedis)

项目中都是用的JedisPool。我们的方案是给所有代码进行如下处理:

看起来应该没问题,实际上测试了下,也一切ok,于是开始了第一次改密码尝试。将涉及到的七八个应用、几十处代码全部修改完毕上线后,一切正常。然后redis server端添加密码,瞬间崩溃了四五个服务,只剩两三个服务正常运转。于是立马去掉密码,开始查原因。

JedisPool初始化的坑

经过一轮排查,发现出问题的服务都是用的上面的方式初始化JedisPool。而没有出问题的都是下列方式初始化:

然后看了下源码,果然在有database参数且不等于0时,会进行一次select操作,而我们的password用的是null,所以就会报错。于是又一次将涉及到的七八个应用、几十处代码全部修改完毕,开始第二次改密码尝试。所有应用上线后,一切正常。开始redis server端添加密码,瞬间又是几个服务崩溃,几个服务正常。于是立马去掉密码,开始第二次查原因。

setTestOnBorrow的坑

又一轮排查后,发现出问题的服务都是JedisPoolConfig::setTestOnBorrow(true),没有出问题的要么是设置为false,要么是没有设置,而没有设置的默认情况下就是false。然后再次看了下源码,setTestOnBorrow应该是从pool中获取到实例的时候会去ping一下,然而此时没有auth过,于是又报错了。无奈,只能将所有的JedisPoolConfig::setTestOnBorrow(true)注释掉,开始第三次尝试。

还好,没有其他幺蛾子了,这次终于没有问题,加上密码,去掉密码,服务都正常运转。心塞。

分类:Redis, 战5渣
标签:,

3个python库

3条评论6,657次浏览

最近没什么可写的。换工作后开发语言由Java+Shell变成了Scala+Python。

最初的不适期过后,觉得scala和python异常好用。作为一个python新手,纪录下最近常用的3个库。

redis

大部分方法和redis客户端的方法名一样。文档:https://pypi.python.org/pypi/redis

happybase

python与hbase交互的库,其原理就是对thrift接口的一层封装。文档:http://happybase.readthedocs.org/en/latest/index.html

官方文档有的地方不太详细,可以参考hbase thrift文档。

初步测试貌似对hbase:meta表的row_prefix以及start_row、end_row属性无法支持,也就是对hbase:meta表只能全表扫描。应该是个bug。
(更多…)

分类:Python语言
11
profile
  • 文章总数:81篇
  • 评论总数:370条
  • 分类总数:32个
  • 标签总数:45个
  • 运行时间:1558天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论