关于我的阿里云服务器被入侵 - 分析报告

目录

  • 引言
  • 一、事件概述
      1. 异地登陆
      1. 挖矿程序
      1. 密钥未注册
      1. 勒索病毒
  • 二、问题分析
      1. 异地登陆
      1. 挖矿程序
      1. 密钥登录失效(密钥未注册)
      1. 勒索病毒
  • 三、安全知识讲解
      1. 密钥登录
  • 四、总结

引言

因为是第一次租云服务器,所以出现了很多的问题,最严重的就是安全问题了,而且问题还是很多的。因为黑客会用各种方式入侵你的服务器,来使用你的服务器资源挖矿,或者获取你服务器的信息,甚至将你的数据锁住来让你给他转账。这些问题真的防不胜防,身为一个程序员,在进行项目开发的时候,首先要考虑的就是安全问题,接下来我将以时间线来叙述我遇到的安全问题,以及怎么提防。

一、事件概述

1. 异地登陆

因为是第一次租服务器,啥都不懂,只知道设置个密码,通过密码登录Workbench远程连接,属于是小白一个。之后登录云服务器管理控制台时,显示我的服务器存在风险,内容是异地登陆,ip显示广州(再之后又有陆续的云南、咸阳、香港等),我当时觉得自我感觉良好,因为觉得你登就登呗,我服务器又没啥你用的,而且也没影响我的正常使用,就没管了。

之后我不知道是安全意识上来了可能,也可能是因为觉得使用密钥登录很帅,就学人家,把密码登录的方式禁用了,改为使用密钥登录,也是防止异地登录的原因。

2. 挖矿程序

之后我的服务器就连接不上了,我很疑惑,觉得密钥是对的啊,通过XShell7和CLion连接不上,但好像通过有时Workbench能连上,有时使用密码都连不上,这就不知道怎么回事了。然后我发现我的CPU使用率异常的高,高达90%多,当时不知道怎么回事,以为是我的程序的问题,因为对这CPU资源也没啥概念,觉得就是个2核2G的服务器,觉得应该就是这样的,当时还想着升级一下服务器,但太贵了,就打消了念头。当时是通过反复的关机重启,然后让我的服务器能正常的工作。之后通过云安全中心看到检测到了挖矿程序,才明白,但为什么还能使用我的服务器。

3. 密钥未注册

使用密钥登录刚开始的时候还是好的,不过之后就出现了使用密钥登录不了的情况,这让我感觉有点疑惑,因为我也不知道密钥登录的原理是什么,所以自己也是一头雾水。我以为是自己的密钥有问题,因为用XShell7远程连接时,显示密钥未注册。所以我就从控制台上把密钥解绑然后删除,然后重新创建一个密钥登录,第一次成功了,过了一会就又连接不上服务器了,又是刚才的问题,而且在这期间,居然也出现了异地登陆出现,我原以为他们是通过暴力枚举连接上我的服务器,但是现在我禁用了密码登录的方式,改为使用密钥登录,但也不行,这我就更不明白了。我就网上各种找原因,也没找到解决办法,自己没有从根上解决这个问题。然后就没办法,自己的学习开发之路不能停,所以只能改为密码登录了,通过VNC远程连接设置。

之后,我依然倔强的禁用了密码登录方式,使用密钥登录,因为这期间也知道了密钥登陆的大概原理,觉得应该是创建密钥时,把公钥文件没写进磁盘中(当时可不知道是公钥),所以我就看网上的教程,通过ssh命令的方式生成密钥对,然后将公钥存放到root下的.ssh文件夹里,把私钥存放到本地磁盘。

4. 勒索病毒

之后的某一天,又发生了同样的问题,使用密钥登录不了了,我熟练的通过解绑创建密钥对的方式,重新登录结果不行,然后折腾了一两天觉得还是不能耽误开发,就想着改用密码登陆吧,好歹能连上服务器,我熟练的使用VNC修改配置文件,保存时,发现该文件是只读文件,我一下子就纳闷了,然后我使用ls -l 查看文件权限,发现确实没有写权限(之后发现我所有的文件都没有写权限,即使我是root用户也添加不了写权限),我就是使用chmod命令修改权限,结果失败了,提示什么什么ReadOnly,我就想我是root用户诶,我为什么修改不了,这是我从未遇到的问题,然后就网上查资料看文档,也没解决啥,我不知咋的就跑到root文件夹里,在里面发现了两个文件JKkaqk.lockedfiles'Your data has been locked!.txt',然后我就打开后一个文件,里面的内容是这样的:

大概的翻译如下图,主要的意思就是:你的数据被锁住了,但没有被泄露,如果你有备份,你可以自行恢复(因为我可以直接初始化磁盘,但是所有的源码和依赖库就都没了)。你需要支付1.00monero币(加密货币,约3400多人民币)到一个钱包地址,然后将我的id和支付截图发送到他的邮箱,就会解锁我的数据。

然后我就意识到了我的服务器被黑客入侵了,我的第一反应就是绝对不向你屈服,所以就没考虑这方面的事,3400多RMB的事是我后来感兴趣才查的,所以不是这个原因,当时想的是一毛钱也不给你。然后就去网上查资料,这事折腾了一两天,是第二天才知道被入侵了,第一天晚上使用免费的病毒检测,才发现自己服务器上全是病毒:持久化后门紧急安全事件:自启动后门Redis配置不当致使Root被提权修改装载库文件,然后第二天在网上查了一天,才知道可以通过初始化磁盘的方式来解锁,代价就是我的所有源码和安装的依赖库都要重新来一遍。这时自己才意识到安全问题的重要性,幸好自己是远程开发,源码都在本地,只不过上传到服务器运行而已,但要在服务器有那问题就真的太严重了,还有就是安装的依赖库都要重新安装。我就通过云服务器管理控制台初始化了我的磁盘,然后禁用密码登录,采用密钥登录,这期间我才了解到密钥登陆的原理,知道了redis的一些漏洞的处理,比如修改端口、设置指定ip、用其他用户运行,开放仅使用到的端口号,运用我所知道的知识,把我的服务器保护的滴水不漏。

自从上一次入侵到现在,没有遇到过什么安全问题,而且自己的密钥也是一直能够正常使用,也没遇到过什么问题了。

二、问题分析

1. 异地登陆

原因: 应该是使用暴力穷举我的密码,然后登录。因为服务器连接不比我们正常的登录,没有输入密码限制

处理方式: 禁用密码登录,改为密钥登录。

做法: 修改/etc/ssh/sshd_config中的PasswordAuthentication 设置为no,这样就会禁用密码登录方法。然后可以通过阿里云控制台生成密钥对,也可以通过服务器中的ssh命令,将私钥保存到本地,公钥拷贝到服务器的~/.ssh/authorized_keys文件中就行。需要在/etc/ssh/sshd_config中添加如下语句:RSAAuthentication yesPubkeyAuthentication yes

参考博客:Linux设置密钥登录使用第三方客户端通过密钥认证登录Linux实例 | 阿里云

2. 挖矿程序

原因: 这个时候已经执行了异地登陆的处理操作了,但还是入侵了。应该是之前留下了后门,因为我当时检测到了什么装载库被修改、持久化后门什么的。(因为处理这些问题,要付费自己就没管了hh)

处理方式: 刚租服务器时,就得把安全做到位,防止被人安插后门、修改程序啥的。自从磁盘初始化后也没检测到这些问题了

做法: 处理异地登录的做法

3. 密钥登录失效(密钥未注册)

原因: 能修改我服务器的公钥,应该就是Redis配置不当致使Root被提权漏洞,查询了一下解释,发现有人跟我的问题相同 黑客攻防Redis拉锯战之Root提权 ,简单来说就是我使用root用户运行我的redis服务器,由于一些配置不当,黑客能够借此修改我的服务器上的ssh公钥,相当于把锁给换了,他拿他的钥匙就能登录,而我拿原来的钥匙打不开现有的锁。这导致我本地的私钥跟公钥不配对,所以才会出现在Xshell7里的该密钥未注册问题。

处理方式: 1. 修改redis默认端口号(6379)为其它 2. 将bind为我的服务器ip(只能连接服务器ip)3. 使用其它用户运行redis服务器(未使用,觉得前两种够了)

做法: 修改redis.conf文件中的配置port xxxbind xxx

4. 勒索病毒

原因: 其实以上原因都已经致使对方能够访问我的服务器了。只不过目的不同罢了。

处理方式: 我已知只有两种做法:1.初始化磁盘文件。因为他也是在我本地放程序来锁住我的文件,所以直接磁盘初始化,相当于把锁也给删了,代价就是自己的源码文件和安装的库也都没了。 2. 交费

做法: 阿里云服务器初始化云盘

三、安全知识讲解

1. 密钥登录

前提: 客户端(本地)生成一个非对称加密的密钥对,密钥对只能自己有,将非对称加密的公钥拷贝到服务器的~/.ssh/authorized_keys文件中。

流程: 客户端(本地)给服务器发送登录请求,发送一个数据,并使用自己的非对称加密私钥对其进行加密,加密后的数据和原始数据一并发送。服务器接受数据,使用自己非对称加密的公钥解密加密数据与原始数据对比,则可知该请求是"本人"。因为默认私钥只有"本人"才有,私钥与公钥是配对的,私钥加密的数据只有公钥能解开,如果所得数据是一样,则可以证明该请求对应的用户是"本人"。

四、总结

我目前的安全措施为:

  • 开放仅使用的端口号
  • 禁用密码登陆、开启密钥登陆
  • 修改redis默认端口号,设置其只能 bind 服务器IP

目前就这些,因为遇到的问题这些就够了,目前还没有其它的安全问题,其实也算可以了,经历了之后才会更加重视这些东西,要不然以后的成本还是会越来越大的。自己还是得不断努力才行!

相关推荐
为什么每天的风都这么大6 分钟前
Vscode/Code-server无网环境安装通义灵码
ide·vscode·阿里云·编辑器·ai编程·code-server
Kkooe1 小时前
GitLab|数据迁移
运维·服务器·git
wusong9991 小时前
mongoDB回顾笔记(一)
数据库·笔记·mongodb
猫爪笔记1 小时前
前端:HTML (学习笔记)【1】
前端·笔记·学习·html
Resurgence031 小时前
【计组笔记】习题
笔记
Beekeeper&&P...2 小时前
git bash是什么,git是什么,git中的暂存区是什么,git中的本地仓库是什么,git中工作目录指的是什么
开发语言·git·bash
pq113_62 小时前
ftdi_sio应用学习笔记 3 - GPIO
笔记·学习·ftdi_sio
虚拟网络工程师3 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb
BLEACH-heiqiyihu3 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器