服务器挖矿进程彻底查杀步骤:从发现到根除的完整指南
服务器挖矿进程彻底查杀步骤:从发现到根除的完整指南
服务器被植入挖矿进程,CPU 占用飙升、带宽跑满、业务变卡,这是很多运维新手遇到的第一道坎。
本文按零基础可直接执行的思路,一步步教你发现、查杀、清理并验证挖矿进程。
整个流程不依赖特定面板,SSH 命令行即可完成。
查杀前的准备工作:连接服务器并快速诊断
先确认你有服务器的 root 权限。
用 SSH 工具(如 PuTTY、FinalShell 或系统自带终端)登录,接着运行几条命令做初步判断。
# 查看 CPU 占用最高的进程
top -bn1 | head -20
如果看到某个进程 CPU 占用长期超过 50% 并且进程名很奇怪(例如 xmrig、kworkerds、sysupdate、随机字母组合),大概率就是挖矿进程。
还可以用 free -m 看内存和 df -h 确认磁盘是否被日志撑爆。
如果top命令输出的进程名被隐藏,可以按P(大写)让进程按 CPU 排序,再尝试ps aux --sort=-%cpu | head -10。
彻底清除挖矿进程的关键操作步骤
1. 定位并停止异常进程
根据 top 或 ps 找到的 PID(进程 ID),执行:
kill -9
但挖矿程序往往有守护进程,kill 后几秒会自动复活。
这时需要先找到对应的可执行文件并删除。
2. 查找并删除木马文件
通过 /proc/ 可获取程序的实际路径:
ls -l /proc//exe
例如输出 /tmp/.X11-unix/... 或 /var/tmp/...,记下路径后执行:
chattr -i <文件路径>
rm -f <文件路径>
之后检查同目录下是否有其他可疑文件,一并删除。
3. 清理定时任务与开机自启
挖矿进程常写入 crontab 或 systemd 服务来自动启动。
运行:
crontab -l
检查是否有不明任务(例如 curl 或 wget 下载脚本)。
有的话执行 crontab -e 删除。
然后检查 /etc/cron.d/、/var/spool/cron/ 等目录。
对于 systemd 服务:
systemctl list-units --type=service --state=running | grep -i -E 'kworker|xmr|miner'
如果有异常服务,执行:
systemctl stop <服务名>
systemctl disable <服务名>
rm -f /etc/systemd/system/<服务名>
systemctl daemon-reload
4. 清理 SSH 公钥与后门
挖矿病毒可能添加 SSH 免密登录,检查 ~/.ssh/authorized_keys 文件,删除不认识的公钥。
同时检查 ~/.ssh/ 下是否有异常脚本。
新手容易踩的坑与注意事项
- 误杀系统进程:CPU 占用高的也可能是合法程序(如
java、mysql、php-fpm)。一定要先查/proc/PID/exe,确认路径是否在系统常规目录(如/usr/bin//usr/local/)。挖矿进程常藏在临时目录或隐藏目录。 - 忘记清理残留文件:只 kill 不删文件,重启后进程会复活。必须删除源文件并清理 crontab、service 等自启动项。
- 过于信任杀毒软件:Linux 下 ClamAV 等工具对新型变种扫描率有限,建议结合行为分析(如
lsof -i看网络连接)。 - 没有立即修改密码:建议清除挖矿后马上修改 root 密码,并确认 SSH 端口和密钥。
查杀完成后如何确认服务器彻底恢复
重启服务器是最稳妥的验证方式:
reboot
重启后登录服务器,依次检查:
- CPU 占用:
top -bn1 | head -5,空闲状态下 idle 应 >90%。 - 网络连接:
ss -tunap,确认没有外连陌生 IP(尤其是非标准端口)。 - crontab:
crontab -l确认空或只有你设置的任务。 - 系统服务:
systemctl list-units --type=service --state=running确认无异常。 - 常见隐藏路径:检查
/tmp、/var/tmp、/dev/shm下是否有可疑文件。
如果以上都正常,可以继续观察 24 小时,同时建议开启系统防火墙、安装 Fail2ban、限制 SSH 登录 IP 来提高防护。
总结:服务器挖矿进程查杀并不复杂,核心就是找进程 → 杀进程 → 删文件 → 清计划任务 → 堵后门 → 重启验证。
按本文步骤一步步做,大多数挖矿病毒都能彻底清理。
如果遇到进程反复复活,请重点检查 rootkit 或内核级后门,必要时重装系统更保险。