今天,隔壁组的程序说他REDIS的KEY 丢失了,问我是不是删除了他的KEY,我有点无语,我们在不同的REDIS服务,端口都不相同,我怎么会删除你的KEY了,但我们部署在同一台服务器上,我果断看了下他的REDIS日志
一直在刷异常,根据多年的经验,这大概率是被ATTACK了,用config get dir 一看,存储目录转移到了/etc,
看了下REDIS进程的拥有者,是REDIS用户
而/etc目录属于ROOT用户
RDB想落地写不了文件,所以一直报saving error, 跟他们报告了REDIS 被ATTACK了, (隔壁开发想到昨天开FTP把所有端口打开了) 而且我们一直都是空口令,所以受到了工击, 但也不至于数据丢失吧,果断顺着日志找轨迹.
用FAILED 关键字 找到了最早的异常点
从这里来看的话,他是想去定时器目录,获取到更多权限,但失败了, 网上有说存储不了,异常,会清空REDIS
果断拉到REDIS对应的版本的源代码
果断找了掉用rdbSave( 的方法,发现没有清除REDIS内存的痕迹
继续查找日志
果断用 user request from 搜了下REDIS源码
难道这个就是传说中的TCP IP源,查了下,是来自隔壁,估计也只是个跳板机吧
把REDIS做了SLAVE OF 操作, 也就是这个操作,清空了REDIS, 造成了REDIS数据丢失,至此破案
搜索了下MASTER的名字, 这个好像是挖虚拟币的,但为啥我的REDIS中没有大量的来自于主库的数据了
用Wrong signature 查了下,估计是主从版本不一致引起的,数据LOAD不进来
继续查看日志,应该是注入啥进了/tmp/exp.so, 目录查了下,已经没有这个so文件了