服务器挖矿查杀:服务器挖矿病毒查杀教程:从检测到清除全流程
写在前面
服务器被挖矿病毒入侵后,CPU 和内存会持续飙升,网站响应变慢甚至瘫痪。
很多新手拿到这种情况不知道从哪里下手。
本文从零开始,教你一步步检测、清除并加固服务器挖矿病毒。
所有操作都在命令行环境完成,适合 CentOS / Ubuntu / Debian 系统。
准备条件
- 一台被感染或怀疑被感染的 Linux 服务器,有 root 权限。
- 通过 SSH 登录到服务器(推荐使用终端工具如 Xshell、Termius)。
- 提前备份重要数据库和网站文件(挖矿病毒可能破坏数据)。
第一步:快速定位挖矿进程
登录服务器后,先用下面命令查看 CPU / 内存占用最高的进程:
top
按 Shift + P 按 CPU 排序,Shift + M 按内存排序。
如果看到一个名称奇怪(如 httpd、xmrig、kdevtmpfsi、wnTKYg 等)且占用极高的进程,极大概率就是挖矿程序。
记录下这个进程的 PID(第一列数字),然后查看它的启动路径:
ls -l /proc/[PID]/exe
例如 ls -l /proc/1234/exe,会显示完整路径。
注意,很多挖矿病毒会伪装成系统命令名,比如 sshd、crond,但路径不是 /usr/sbin/ 这类标准目录。
第二步:关闭并删除挖矿进程
先强行终止挖矿进程:
kill -9 PID
注意,有些挖矿病毒有守护进程,杀掉一个会马上再拉起来。
我们需要同时查找并删除其守护程序。
先根据启动路径彻底删除相关文件:
rm -rf /可疑路径/文件名
如果找不到文件,可以尝试用 find 搜索最近修改的可疑二进制文件:
find / -name "*" -mmin -10 -type f 2>/dev/null | grep -v proc
然后检查系统定时任务(挖矿病毒经常通过 cron 实现自动复活):
crontab -l
cat /etc/crontab
ls -la /etc/cron.d/
ls -la /var/spool/cron/
如果看到下载或执行可疑脚本的任务,记录下完整命令,然后使用 crontab -e 编辑并删除对应行,或者直接删除 /var/spool/cron/root 等文件。
第三步:处理常见的高频复活方式
很多挖矿病毒会写一个自启动脚本。
检查这些位置:
/etc/init.d/或/etc/systemd/system/下的可疑服务/etc/rc.local或/etc/rc.d/rc.local中的启动项~/.bashrc、/etc/profile、~/.ssh/authorized_keys(免密登录后门)
示例:检查 rc.local 是否存在异常:
cat /etc/rc.local
如果发现一行类似 nohup /tmp/.systemd & 的内容,删除这一行并保存。
另外,
很常见的“门罗币挖矿”程序会修改内核模块或利用 Docker 容器挂载,
如果你服务器装了 Docker,
请用 docker ps 查看是否有奇怪镜像一直在重启,
使用 docker stop && docker rm 清除。
第四步:清理残留并加固
杀完进程和删完文件后,不要立刻放松警惕。
建议执行以下操作:
- 更换所有密码(root、数据库、FTP)。建议用密码生成器产生 16 位以上随机密码。
- 更新系统软件包:
yum update -y # CentOS
apt update && apt upgrade -y # Ubuntu/Debian
- 安装杀毒软件扫描:
ClamAV或者rkhunter:
yum install clamav -y
freshclam
clamscan -r / # 全盘扫描,很慢,可以先扫描 /tmp /var/tmp /home /root
- 关闭不需要的端口和服务,如 Redis、Docker API 暴露到公网。
第五步:效果验证
清除后至少观察 30 分钟,用 top 监控 CPU 使用率是否恢复正常(正常空闲状态下 <10%)。
如果还持续高占用,说明有遗漏进程或守护进程。
此时重复前几步。
也可以检查一下是否有新的可疑进程被拉起:
watch -n 2 'ps aux --sort=-%cpu | head -20'
如果系统日志报错,比如 audit.log 频繁记录异常,可以用 journalctl -xe 查看。
避坑指南
- 不要直接重装系统:除非你被挖矿病毒彻底攻破且无法清除,否则按步骤清理更省时,而且重装后如果不加固,可能再次中招。
- 小心误杀系统进程:例如
systemd、kworker、kswapd0等通常是正常的,不要杀死。判断依据是内存占用超过 50% 且 CPU 持续 100% 的才可疑。 - 挖矿病毒可能会修改 /etc/hosts 或 iptables 规则:检查
cat /etc/hosts是否有奇怪映射;iptables -L -n是否有恶意转发。 - 杀死进程后立刻断网:在清除病毒时,最好先断开外网(云平台安全组临时禁用出站),防止病毒从远程下载恶意文件。
高频问题解答
Q:为什么杀掉进程后几秒又自动恢复了?
A:说明存在定时任务或守护进程。检查 crontab、systemd 服务、以及 /etc/init.d/ 中的脚本。同时检查 /etc/ld.so.preload 和 /etc/ld.so.preload 是否被注入(创建空文件即可覆盖)。
Q:服务器上有多个网站,怎么确定哪个网站被入侵?
A:查看网站日志 /var/log/nginx/access.log 或 /var/log/httpd/access_log,搜索 curl、wget、exec 等可疑参数,找到异常 IP 和文件上传时间。
Q:清理后还需要做什么安全措施?
A:建议至少做三件事:限制 SSH 登录 IP(只允许你自己 IP 连接)、禁用 root 直接登录、开启 fail2ban 防暴力破解。
总结
服务器挖矿查杀的核心是“找到异常进程 → 删除文件 → 清理定时任务 → 加固系统”。
按照本文的顺序操作,大多数挖矿病毒都能彻底清除。
如果遇到特别顽固的变种,可以结合在线病毒扫描平台(如 VirusTotal)上传可疑文件分析。
记住,预防比查杀更重要——保持软件更新、使用强密码、关闭不必要端口,才能长久安全。