服务器被挖矿病毒处理:服务器被挖矿病毒了怎么办?从定位到清除
前置准备
在开始处理服务器被挖矿病毒之前,请准备好以下条件:
- SSH 客户端:推荐使用 Xshell、FinalShell 或直接使用系统自带的终端。
- 服务器 root 权限:你需要能够以 root 用户登录。如果使用的是宝塔面板,请登录宝塔后台,通过“终端”功能操作。
- 一颗清醒的头脑:不要慌张,挖矿病毒通常只消耗 CPU/GPU,不会删除你的数据。先备份重要数据库和网站文件(至少备份配置文件)。
- 准备好快照或备份:如果服务器有云快照功能(阿里云/腾讯云等),先打一个手动快照,避免误操作导致系统崩溃。
提醒:如果你对命令行不熟悉,建议全程使用宝塔面板的文件管理、计划任务和软件管理来辅助操作,本文也会给出对应的面板操作路径。
分步操作
第一步:快速定位可疑进程
登录服务器后,先用 top 命令查看 CPU 占用最高的进程:
top -c按下 P 键(大写P)按 CPU 使用率排序。
如果发现某个进程名很怪(如 xmrig、kdevtmpfsi、luk、mtyge 等)或进程名被伪装成常见系统服务(如 [kworker]、systemd-xxx),基本就是挖矿程序。
记录下它的 PID(进程号)和 进程名。
第二步:杀死进程并删除可执行文件
不要直接 kill -9 就结束!
很多挖矿病毒有守护进程,会立即重启。
我们需要先找到它的源文件。
查看进程的启动路径:
ls -l /proc/[PID]/exe例如输出:/proc/12345/exe -> /tmp/.xc/xmrig,说明病毒文件在 /tmp/.xc/xmrig。
然后执行:
# 强制杀死进程
kill -9 PID号码
立即删除整个目录(注意路径)
rm -rf /tmp/.xc/
宝塔面板操作路径:宝塔后台 -> 系统 -> 任务管理器 -> 看到异常进程后点“结束进程”;
然后转到文件管理,找到对应路径删除。
第三步:清除计划任务(关键)
挖矿病毒往往通过计划任务实现持久化。
检查所有用户的计划任务:
crontab -l # 查看当前用户(root)的计划任务
如果有可疑条目,用下面的命令编辑删除
crontab -e
同时检查系统级的计划任务目录:
ls -la /var/spool/cron/
ls -la /etc/cron.d/
ls -la /etc/cron.hourly/
ls -la /etc/cron.daily/看到可疑脚本(名称乱码或来自陌生路径),直接删除。
宝塔面板操作路径:宝塔后台 -> 计划任务 -> 查看是否有不明任务 -> 删除即可。
第四步:检查并禁用开机自启
挖矿病毒还可能通过 systemd 服务或 rc.local 自启。
检查:
systemctl list-units --type=service --state=running | grep -i '可疑名称'查看 /etc/rc.local、/etc/init.d/ 等文件,删除恶意自启项。
# 查看 rc.local 内容
cat /etc/rc.local如果 rc.local 里有执行挖矿脚本的行,用 sed 或编辑删除。
第五步:查杀后手 & 加固 SSH
很多挖矿病毒会植入 SSH 公钥或后门。
检查 authorized_keys:
cat ~/.ssh/authorized_keys如果出现不认识的公钥,直接清空或删除该文件。
同时建议修改 SSH 端口,禁止 root 直接登录:
# 编辑 /etc/ssh/sshd_config
Port 2222 # 修改默认22端口
PermitRootLogin no # 禁止root直接登录
systemctl restart sshd
第六步:安装杀毒工具做全面扫描
推荐使用 ClamAV(开源防病毒)做辅助扫描:
# CentOS / RHEL
yum install -y clamav
freshclam # 更新病毒库
clamscan -r /home --remove -i # 扫描 /home 并删除感染文件如果对资源敏感,也可以使用 rkhunter 查 Rootkit。
避坑指南
- 只杀进程不删文件:病毒会立刻复活,必须连文件一起删除。
- 漏掉计划任务:很多教程只让 crontab -l,但系统级的cron目录容易忽略。
- 不检查其他用户:如果服务器有多个用户,每个用户的 crontab 都要检查。
- 没改弱口令:挖矿病毒通常通过 SSH 暴力破解植入。处理完病毒后,务必修改所有用户密码,密钥登录更安全。
- 误删系统文件:如果怀疑是正常服务(如
java、nginx),先确认路径,不要盲目rm -rf。
高频问题解答
Q1:杀完进程后CPU又飙高到100%,怎么办?
A:说明有守护进程或定时任务没清掉。
重新执行步骤二和三,看看 /proc/pid/exe 路径是否不同(病毒可能换了目录),检查 /etc/cron.d/ 和 rc.local。
Q2:用宝塔面板能看到挖矿进程吗?
A:宝塔的任务管理器可以显示进程,但有时病毒会隐藏进程名。
建议进终端用 ps auxf 查看完整树状进程。
Q3:清除后还会再次感染吗?
A:如果只清理不加固,漏洞还在(比如弱口令、未修复的漏洞),很快又会中毒。
建议:
- 更换 SSH 端口为 非标准端口
- 禁用 root 登录
- 使用密钥认证
- 安装 Fail2ban 拦截暴力破解
- 及时更新系统补丁
Q4:服务器跑着业务,不能随便重启怎么办?
A:在进程杀死后,可以先用 renice 降低可疑进程优先级,再逐步清除。
但最好在业务低峰期重启一次,确保没有残留启动项。
效果验证
- CPU 占用:执行
top -c,观察1-2分钟,如果 CPU 空闲百分比在90%以上,且没有陌生进程,基本清除成功。 - 网络连接:
netstat -antp | grep -E '3333|4444|14444|2375'等挖矿常用端口,如果无连接则安全。 - 文件残留:再次扫描之前发现的病毒目录,确保文件已被删除。
- 计划任务:
crontab -l和检查/var/spool/cron/、/etc/cron.d/无异常。 - 日志:查看
/var/log/secure或/var/log/auth.log,如果还有大量 failed password,说明还在被爆破,需要加强安全策略。
如果你正在处理服务器被挖矿病毒处理,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
处理完成后,记得给服务器做一次全面安全体检,防患于未然。