问题描述
最近在自己的server上的redis命令行碰到set key错误的问题,返回结果如下:
set a 1
(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
1
2
查看redis.log日志:
1161:M 24 Dec 10:46:32.108 # Background saving error
1161:M 24 Dec 10:46:38.017 * 10 changes in 300 seconds. Saving...
1161:M 24 Dec 10:46:38.017 * Background saving started by pid 3751
3751:C 24 Dec 10:46:38.017 # Failed opening the RDB file admin (in server root dir /etc/cron.d) for saving: Permission denied
1
2
3
4
自己明明是通过yum安装的redis,redis-server的启动用户也是reids,之前也能正常使用,怎么一段时间之后会出现不能set key的问题呢?
而且,redis怎么会去访问 /etc/cron.d 这个危险的目录呢?
/etc/cron.d这个目录下面是存放crontab执行的定时任务脚本.
问题原因
Background saving这个是Redis用来保存以RDB模式运行的当前快照的线程所写入的日志.
redis的不安全访问,导致配置被修改.
攻击者想利用redis直接修改crontab配置,实现一些定时任务写入,从而去执行一些"特殊"命令(比如,挖矿等),甚至掌控服务器.
解决方法
永久方法
修改配置文件.
requirepass foobared # foobared 换成你的密码
1
下面部分不影响,但是是更安全的做法.redis3.2后可用.
bind 0.0.0.0 # 绑定到具体地址
protected-mode yes # 开启保护模式,该模式将需配置bind ip或者设置访问密码
1
2
重启redis-server
临时方法
通过redis-cli进入redis客户端,然后通过config设置密码(直到重启前有效).
config get requirepass # 查看当前密码
1
1) "requirepass"
2) ""
1
2
如果结果如上,则表明当前没有密码.
(error) NOAUTH Authentication required.
1
如上则表示有密码,而你是未授权访问的.
设置新密码:
config set requirepass <you password> # <you password> 替换成你的密码
1
通过 config get检查是否设置成功.设置成功后,通过下面命令认证:
auth <you password> # <you password> 替换成你的密码
get a
1
2
如果能看到正常的返回值,就说明成功了.
这样就能避免别人轻易访问redis-server.
注意此处的密码长度最好比较长,比如10位以上,因为redis的速度太快了,通过暴力破解的可能性高于通常的http方式.
不安全方法
bgsave快照操作出错时停止写数据到磁盘,这样后面写错均会失败,为了不影响后续写操作,故需将该项值改为no.
修改stop-writes-on-bgsave-error配置为no
config set stop-writes-on-bgsave-error no
1
或者修改配置文件
stop-writes-on-bgsave-error # 把后面的yes设置为no即可
1
重启redis.
隐藏危险命令
此外,还能通过修改redis的config命令,来不让其他人修改redis的配置.
# 在redis-cli中
rename config 'ldconfig'
1
2
最好还是将redis配置为证书访问,因为redis的速度太快了,短密码被暴力破解的可能性不低.
当然还可以通过其他工具控制访问来源,用户等,比如firewall.
————————————————
版权声明:本文为CSDN博主「咕咕咕zhou」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46080554/article/details/103678056