记录一次 寻找REDIS KEY 丢失的原因

文章讲述了团队在排查RedisKEY丢失时,发现是由于服务器上的恶意攻击导致的,攻击者通过SSH漏洞将RDB存储目录转移到了错误位置,进而触发了数据清空。经过源代码分析和日志追踪,确定是由于主从版本不一致和恶意注入造成的数据丢失事件。
摘要由CSDN通过智能技术生成

今天,隔壁组的程序说他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文件了

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 RedisKeySpace Notification 功能来实现 Redis Key 过期监听器。具体步骤如下: 1. 在 Redis 配置文件中启用 KeySpace Notification 功能。在 redis.conf 文件中找到 `notify-keyspace-events` 字段,将其设置为 `Ex`,表示监听 Key 过期事件。 ``` notify-keyspace-events Ex ``` 2. 在 Java 代码中使用 Jedis 客户端连接 Redis,订阅 Key 过期事件。 ```java Jedis jedis = new Jedis("localhost"); jedis.psubscribe(new KeyExpiredListener(), "__key*__:*"); ``` 在上面的代码中,我们使用 Jedis 客户端连接 Redis,并通过 `psubscribe` 方法订阅 Key 过期事件。`KeyExpiredListener` 是自定义的一个类,用于处理 Key 过期事件。 3. 实现 KeyExpiredListener 类,处理 Key 过期事件。 ```java class KeyExpiredListener extends JedisPubSub { @Override public void onPMessage(String pattern, String channel, String message) { // 判断事件类型是否为 Key 过期事件 if ("expired".equals(message)) { // 获取过期的 Key String key = channel.replace("__keyspace@0__:", ""); System.out.println("Key " + key + " has expired."); // TODO: 处理过期事件 } } } ``` 在上面的代码中,我们继承了 JedisPubSub 类,并重写了 `onPMessage` 方法,处理 Key 过期事件。当接收到 Key 过期事件时,我们可以通过 `channel` 参数获取过期的 Key,并进行处理。 4. 运行 Java 代码,监听 Redis Key 过期事件。 以上就是使用 Java 实现 Redis Key 过期监听器的步骤。在实际应用中,我们可以通过该功能来实现一些常用的功能,比如缓存过期、定时任务等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值