服务器被挖矿病毒处理:服务器突然变卡还跑满CPU?手把手教你
前置准备
处理挖矿病毒前,先准备好以下环境,避免操作中断或误删系统文件。
- 一台Linux服务器(本文以CentOS 7/8为例,Ubuntu系统命令类似)
- SSH客户端(如Xshell、FinalShell或直接用宝塔面板终端)
- 宝塔面板(如有,可登录后台操作;没有也不影响)
- 备份重要数据(尤其是数据库和配置文件,防止误操作)
- 断开外网连接(可选但推荐:在云服务商后台将服务器安全组入站规则临时限制,只留SSH端口;或直接拔网线)
注意:如果服务器已失陷,不要直接重装系统,先按本文步骤提取线索,避免病毒扩散到其它机器。
分步操作
第一步:用 top 查找异常进程
登录服务器,运行命令:
top观察 %CPU 列,找到占用 CPU 极高的进程(通常超过 100%,因为挖矿程序多线程)。
记下 PID。
宝塔操作路径:宝塔面板 → 左侧“终端” → 输入 top,同样操作。
第二步:查看进程详情并强制结束
按下 q 退出 top,运行:
ls -l /proc/[PID]/exe
cat /proc/[PID]/cmdline查看该进程对应的程序路径和启动命令。
然后用 kill 强制结束:
kill -9 [PID]如果结束后又自动复现,说明有守护进程或定时任务在拉取病毒。继续下一步。
第三步:清理定时任务(crontab)
挖矿病毒常通过 crontab 实现持久化。
运行:
crontab -l如果发现不明脚本(如下载恶意脚本的 wget 或 curl 命令),先用 crontab -r 清空当前用户的定时任务。
检查系统级定时任务:
cat /etc/crontab
ls -la /etc/cron.d/
ls -la /var/spool/cron/删除其中的恶意条目。
宝塔操作路径:宝塔面板 → 左侧“计划任务” → 查看所有任务,删除不认识的。
第四步:找到并删除恶意文件
根据之前拿到的进程路径,找到病毒文件。
常见隐藏位置:
/tmp/.xxx/var/tmp/.xxx/dev/shm/.xxx/root/.ssh/(伪装成公钥)/lib/systemd/system/(伪装成系统服务)
使用以下命令查找可疑文件:
find / -name "*.sh" -type f 2>/dev/null | xargs grep -l "miner\|pool\|xmr\|eth"
find / -name "*[0-9a-f]{32}" -type f 2>/dev/null # 找哈希值的文件名找到后,用 rm -rf 删除。
注意确认是恶意文件,不要误删系统文件。
第五步:检查 SSH 密钥和用户
挖矿病毒会添加 SSH 公钥实现远程控制。
运行:
cat ~/.ssh/authorized_keys
cat /root/.ssh/authorized_keys如果发现陌生的公钥,直接删除该文件(或仅删除陌生行)。
同时检查是否有异常用户:
cat /etc/passwd | grep "/bin/bash\|/bin/sh"删除非你创建的用户:userdel -r 用户名(小心别删 root 和自己)。
第六步:修补漏洞并加强安全
- 修改所有 SSH 密码为强密码(大写+小写+数字+符号,15位以上)
- 禁止 root 直接 SSH 登录:修改
/etc/ssh/sshd_config,将PermitRootLogin改为no,然后systemctl restart sshd - 更新系统补丁:
yum update -y(或apt update && apt upgrade -y) - 安装 ClamAV 杀毒软件:
yum install -y clamav
freshclam # 更新病毒库
clamscan -r / # 全盘扫描(耗时较长)避坑指南
- 不要只杀进程不删文件:挖矿程序通常有多个副本和守护进程,漏掉一个就会死灰复燃。
- 先断网再操作:避免病毒继续下载新负载或向外传播。
- 定时任务要全盘检查:除了 crontab,还可能有 systemd timer、anacron、rc.local 等。
- 修改密码后立即重启服务器:使所有 SSH 会话失效,防止攻击者继续登录。
- 不要随意运行陌生命令:网上流传的一些“一键查杀脚本”本身可能带毒,优先使用官方命令。
高频问题解答
Q1:为什么 kill 掉进程后又自动出现?
A1:说明有定时任务或系统服务在自动拉取。按第三步彻底清理 crontab,并检查 /etc/systemd/system/ 下的恶意服务。
Q2:宝塔面板被感染了吗?
A2:宝塔面板本身安全,但攻击者可能通过弱密码或漏洞登录面板。立即修改面板密码(8位以上复杂密码),并开启面板SSL。
Q3:找不到可疑进程,但 CPU 还是高?
A3:可能是挖矿程序隐藏了进程名(如伪装成 kworker、[kthrotld] 等)。使用 htop(需安装)查看树形进程,或使用 strace -p [PID] 分析系统调用。
Q4:清理后如何防止再次被挖矿?
A4:更换所有服务密码(数据库、FTP、API密钥),关闭不必要的端口,配置防火墙仅放行必需端口,定期使用 ClamAV 扫描,并开启云服务商的安全告警。
效果验证
- CPU 恢复正常:运行
top,查看 idle 空闲率应在 90% 以上(轻负载服务器)。 - 无异常进程:
ps aux不再有名字奇怪或 CPU 高的进程。 - 定时任务干净:
crontab -l只显示你自己的任务,或为空。 - 恶意文件已删除:再次用
find查找之前的位置,文件不存在。 - 安全扫描通过:
clamscan -r /home/等目录无报毒。
如果你正在处理服务器被挖矿病毒处理,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。