却说这一日,Redis正如往常一般工作,不久便收到了一条SAVE命令。

虽说这Redis常被用来当做缓存,数据只存在于内存中,却也能通过SAVE命令将内存中的数据保存到磁盘文件中以便持久化存储。

只见Redis刚打开文件,准备写入,不知何处突然冲出几个大汉将其擒住。

到底是怎么回事?Redis一脸懵。

这事还得要从一个月之前说起。

挖矿病毒

前情回顾CPU深夜狂飙,一帮大佬都傻眼了···

一个月前,突如其来的警报声打破了Linux帝国夜晚的宁静,CPU占用率突然飙升,却不知何人所为。在unhide的帮助下,总算揪出了隐藏的进程。本以为危机已经解除,岂料···

夜已深了,安全警报突然再一次响了起来。

“部长,rm那小子是假冒的,今天他骗了我们,挖矿病毒根本没删掉,又卷土重来了!”

安全部长望向远处的天空,CPU工厂门口的风扇又开始疯狂地转了起来···

无奈之下,部长只好再次召集大家。

unhide再一次拿出看家本领,把潜藏的几个进程给捉了出来。kill老哥拿着他们的pid,手起刀落,动作干脆利落。

这一次,没等找到真正的rm,部长亲自动手,清理了这几个程序文件。

“部长,总这么下去不是个办法,删了又来,得想个长久之计啊!”,一旁的top说到。

“一定要把背后的真凶给揪出来!”,ps说到。

“它们是怎么混进来的,也要调查清楚!”,netstat说到。

“对,对,就是”,众人皆附和。

部长起身说道,“大家说得没错,在诸位到来之前,我已经安排助理去核查了,相信很快会有线索。”

此时,防火墙上前说道:“为了防止走漏消息,建议先停掉所有的网络连接”

“也罢,这三更半夜的,对业务影响也不大,停了吧!”,安全部长说到。

不多时,助理行色匆匆地赶了回来,在部长耳边窃窃私语一番,听得安全部长瞬时脸色大变。

“sshd留一下,其他人可以先撤了”,部长说到。

大伙先后散去,只留下sshd,心里不觉忐忑了起来。

“等一下,kill也留一下”,部长补充道。

一听这话,sshd心跳的更加快了。

助理关上了大门,安全部长轻声说到:“据刚刚得到的消息,有人非法远程登录了进来,这挖矿病毒极有可能就是被人远程上传了进来”

sshd一听这话大惊失色,慌忙问道:“难道登录密码泄露了?”

“应该不是,是使用的公私钥免密登录”,一旁的助理回答到。

“你看,在/root/.ssh/authorized_keys文件中,我们发现了一个新的登录公钥,这在之前是没有的”,随后,助理输出了这文件的内容:

  1. [root@xuanyuan ~]# cat .ssh/authorized_keys
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA······

“绝不是我干的”,sshd急忙撇清。

“远程登录,这不是你负责的业务吗?”,助理问到。

“确实是我负责,但我也只是按程序办事,他能用公私钥登录的前提是得先把公钥写入进来啊,所以到底是谁写进来的,这才是关键!”,sshd说到。

“说的没错,别紧张,想想看,有没有看到过谁动过这个文件?”,部长拍了下sshd的肩膀说到。

“这倒是没留意”

部长紧锁眉头,来回走了几步,说道:“那好,这公钥我们先清理了。回去以后盯紧这个文件,有人来访问立刻报给我”

“好的”,sshd随后离开,发现自己已经吓出了一身冷汗。

凶手浮现

时间一晃,一个月就过去了。

自从把authorized_keys文件中的公钥清理后,Linux帝国总算是太平了一阵子,挖矿病毒入侵事件也渐渐被人淡忘。

这天晚上夜已深,sshd打起了瞌睡。

突然,“咣当”一声,sshd醒了过来,睁眼一看,竟发现有程序闯入了/root/.ssh目录!

这一下sshd睡意全无,等了一个多月,难道这家伙要现身了?

sshd不觉紧张了起来,到底会是谁呢?

此刻,sshd紧紧盯着authorized_keys文件,眼睛都不敢眨一下,生怕错过些什么。

果然,一个身影走了过来,径直走向这个文件,随后打开了它!

sshd不敢犹豫,赶紧给安全部长助理发去了消息。

那背影转过身来,这一下sshd看清了他的容貌,竟然是Redis

收到消息的部长带人火速赶了过来,不等Redis写入数据,就上前按住了他。

“好家伙,没想到内鬼居然是你!”,sshd得意的说到。

Redis看着众人,一脸委屈,“你们这是干什么?我也没做什么坏事啊”

“人赃并获,你还抵赖?说吧,你为什么要来写authorized_keys文件?”

“那是因为我要来执行数据持久化存储,把内存中的数据写到文件中保存”,Redis答道。

“你持久化存储,为什么会写到authorized_keys文件里面来?”,sshd继续质问。

“刚刚收到几条命令,设置了持久化存储的文件名就是这个,不信你看”,说罢,Redis拿出了刚刚收到的几条命令:

  1. CONFIG SET dir /root/.ssh
    CONFIG SET dbfilename authorized_keys
    SAVE

“第一条指定保存路径,第二条指定保存的文件名,第三条就是保存数据到文件了”,Redis继续解释到。

安全部长仔细看着几条命令,说道:“把你要写入的数据给我看看”

“这可有点多,你等一下”,说罢,Redis拿出了所有的键值数据,散落一地。

众人在一大片数据中看花了眼。

“部长快看!”,sshd突然大叫。

顺着他手指的方向,一个醒目的公钥出现在了大家面前。

  1. ssh-rsa AAAAB3NzaC1yc2EAA···

“果然是你!”

Redis还是一脸懵,还不知发生了什么。

“你这家伙,被人当枪使了!你写的这个文件可不是普通文件,你这要是写进去了,别人就能远程登录进来了,之前的挖矿病毒就是这么进来的!”,sshd说到。

一听这话,Redis吓得赶紧掐断了网络连接。

“给你下命令的究竟是谁,又是怎么连接上你的?”,部长问到。

Redis不好意思的低下了头,只说道:“不瞒您说,我这默认就没有密码,谁都可以连进来”

安全部长听得眼睛都瞪圆了,愤而离去。

只听得一声大叫,kill老哥又一次手起刀落。

彩蛋

“部长,不好了”

“什么事,慌慌张张的”

“我的数据全都被加密了!”,MySQL气喘吁吁的说到···

推荐阅读故事

CPU被挖矿,Redis竟是内鬼!的更多相关文章

  1. 一个故事看懂CPU的SIMD技术

    好久不见,我叫阿Q,是CPU一号车间的员工.我所在的CPU有8个车间,也就是8个核心,咱们每个核心都可以同时执行两个线程,就是8核16线程,那速度杠杠滴. 我所在的一号车间,除了负责执行指令的我,还有 ...

  2. 如何监控redis的cpu使用率

    redis默认是单线程运行的,为了充分利用机器的cpu,正常情况下一台服务器上会装多个实例.如果通过top命令监控机器的cpu的话,监控值很笼统,不能精确到单redis实例的cpu使用率监控.而且ce ...

  3. Redis used_cpu_sys used_cpu_user meaning (redis info中cpu信息的含义)

    Redis 中 used_cpu_sys 和 used_cpu_user含义. 在Redis的info命令输出结果中有如下四个指标,redis官网给出了下面一段解释,但是还是不明白什么意思. used ...

  4. 生产Server遭挖矿程序入侵,暴力占用CPU

    区块链的火热,利益驱使必然导致不少PC或Server,被变成肉鸡,执行挖矿程序进行挖矿,进而导致我们正常的程序无法正常. (Centos7 Server)使用top命令查看服务器进程运行情况,发现几个 ...

  5. 拒绝CPU挖矿矿工有责

    长期以来CPU挖矿给挖矿行业带来持久的负面影响,因为CPU是电脑的核心设备,一挖矿就干不了别的了,大家是否可以达成共识拒绝CPU挖矿? 显卡挖矿刚好构建在不影响大众的日常工作生活对电脑的需求之上,家用 ...

  6. 你知道CPU结构也会影响Redis性能吗?

    啦啦啦,我是卖身不卖艺的二哈,ε=(´ο`*)))唉错啦(我是开车的二哈),我又来了,铁子们一起开车呀! 今天来分析下CPU结构对Redis性能会有影响吗? 在进行Redis性能分析的时候,通常我们会 ...

  7. Redis性能篇(二)CPU核和NUMA架构的影响

    Redis被广泛使用的一个很重要的原因是它的高性能.因此我们必要要重视所有可能影响Redis性能的因素.机制以及应对方案.影响Redis性能的五大方面的潜在因素,分别是: Redis内部的阻塞式操作 ...

  8. 【JAVA今法修真】 第四章 redis特性 击穿雪崩!

    感谢这段时间大家的支持,关注我的微信号:南橘ryc ,回复云小霄,就可以获取到最新的福利靓照一张,还等什么,赶快来加入我们吧~ "明日便是决赛了,咋只会用法器没练过法术呢.". 选 ...

  9. [原]Redis主从复制各种环境下测试

    Redis 主从复制各种环境下测试 测试环境: Linux ubuntu 3.11.0-12-generic 2GB Mem 1 core of Intel(R) Core(TM) i5-3470 C ...

随机推荐

  1. Miller-Rabin and Pollard-Rho

    实话实说,我自学(肝)了两天才学会这两个随机算法 记录: Miller-Rabin 她是一个素数判定的算法. 首先需要知道费马小定理 \[a^{p-1}\equiv1\pmod{p}\quad p\i ...

  2. LeetCode352 将数据流变为多个不相交区间

    LeetCode352 将数据流变为多个不相交区间 1 题目 给你一个由非负整数 a1, a2, ..., an 组成的数据流输入,请你将到目前为止看到的数字总结为不相交的区间列表. 实现 Summa ...

  3. 使用Python写词云数据可视化

    词云的应用场景 会议记录 海报制作 PPT制作 生日表白 数据挖掘 情感分析 用户画像 微信聊天记录分析 微博情感分析 Bilibili弹幕情感分析 年终总结 安装本课程所需的Python第三方模块 ...

  4. 【MySQL】MySQL(三)存储过程和函数、触发器、事务

    MySQL存储过程和函数 存储过程和函数的概念 存储过程和函数是 事先经过编译并存储在数据库中的一段 SQL 语句的集合 存储过程和函数的好处 存储过程和函数可以重复使用,减轻开发人员的工作量.类似于 ...

  5. python中return的返回和执行

    1 打印函数名和打印函数的执行过程的区别 例子1.1 def a(): print(111) print(a) # 打印a函数的内存地址,不会对a函数有影响,a函数不会执行 print(a()) # ...

  6. Flutter随笔(二)——使用Flutter Web + Docker + Nginx打造一个简单的Web项目

    前言 Flutter作为一个跨平台UI框架,功能十分强大,仅用一套代码便能编译出Android.iOS.Web.windows.macOS.Windows.Linux等平台上的应用,各平台应用体验高度 ...

  7. hdoj_Problem1.1.8_A+B for Input-Output Practice (VIII)

    A+B for Input-Output Practice (VIII) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3276 ...

  8. 前端面试题之手写promise

    前端面试题之Promise问题 前言 在我们日常开发中会遇到很多异步的情况,比如涉及到 网络请求(ajax,axios等),定时器这些,对于这些异步操作我们如果需要拿到他们操作后的结果,就需要使用到回 ...

  9. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在IAR EW for Arm下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  10. 寻找写代码感觉(八)之SpringBoot过滤器的使用

    一.什么是过滤器? 过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制等,一个资源,没有经过授权,肯定是不能让用户随便访问的, ...