Failed opening the RDB file root (in server root dir /etc/cron.d) for saving: Permission denied

问题描述

最近在自己的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.

查看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

自己明明是通过yum安装的redis,redis-server的启动用户也是reids,之前也能正常使用,怎么一段时间之后会出现不能set key的问题呢?
而且,redis怎么会去访问 /etc/cron.d 这个危险的目录呢?
/etc/cron.d这个目录下面是存放crontab执行的定时任务脚本.

问题原因

Background saving这个是Redis用来保存以RDB模式运行的当前快照的线程所写入的日志.

redis的不安全访问,导致配置被修改.

攻击者想利用redis直接修改crontab配置,实现一些定时任务写入,从而去执行一些"特殊"命令(比如,挖矿等),甚至掌控服务器.

解决方法

永久方法

  1. 修改配置文件.
requirepass foobared # foobared 换成你的密码

下面部分不影响,但是是更安全的做法.redis3.2后可用.

bind 0.0.0.0  # 绑定到具体地址
protected-mode yes # 开启保护模式,该模式将需配置bind ip或者设置访问密码
  1. 重启redis-server

临时方法

通过redis-cli进入redis客户端,然后通过config设置密码(直到重启前有效).

config get requirepass # 查看当前密码
1) "requirepass"
2) ""

如果结果如上,则表明当前没有密码.

(error) NOAUTH Authentication required.

如上则表示有密码,而你是未授权访问的.

  1. 设置新密码:
config set requirepass <you password> # <you password> 替换成你的密码
  1. 通过 config get检查是否设置成功.设置成功后,通过下面命令认证:
auth <you password> # <you password> 替换成你的密码
get a

如果能看到正常的返回值,就说明成功了.

这样就能避免别人轻易访问redis-server.
注意此处的密码长度最好比较长,比如10位以上,因为redis的速度太快了,通过暴力破解的可能性高于通常的http方式.

不安全方法

bgsave快照操作出错时停止写数据到磁盘,这样后面写错均会失败,为了不影响后续写操作,故需将该项值改为no.

  1. 修改stop-writes-on-bgsave-error配置为no
config set stop-writes-on-bgsave-error no

或者修改配置文件

stop-writes-on-bgsave-error # 把后面的yes设置为no即可
  1. 重启redis.

隐藏危险命令

此外,还能通过修改redis的config命令,来不让其他人修改redis的配置.

# 在redis-cli中
rename config 'ldconfig'

最好还是将redis配置为证书访问,因为redis的速度太快了,短密码被暴力破解的可能性不低.

当然还可以通过其他工具控制访问来源,用户等,比如firewall.

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咕咕咕zhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值