服务器被挖矿病毒处理:服务器CPU飙到100%?可能是挖矿病
服务器突然变得卡顿,CPU一直跑满,甚至SSH连接都慢——这很可能是因为被植入了挖矿病毒。
挖矿病毒会占用服务器资源帮黑客“挖”虚拟货币,不仅影响网站运行,还可能产生天价电费。
本文面向零基础用户,手把手教你如何检测、清理和加固,彻底搞定服务器被挖矿病毒处理的问题。
前置准备
- 一台受影响的Linux服务器(本文以CentOS 7/8为例,Ubuntu命令类似)
- 拥有root权限(或sudo权限)
- 建议先通过SSH登录,推荐使用Putty或Windows Terminal
- 如果使用了宝塔面板,后续步骤会标明宝塔的操作入口
- 重要:在开始清理前,建议先拍一个快照(云服务器控制台→磁盘快照),防止操作失误导致系统崩溃
分步操作
1. 排查异常进程与CPU占用
先快速定位高CPU进程:
top -c -b -n 1 | head -30按 P 键可按CPU排序,观察最上面几个进程的名字和PID。
常见挖矿进程名称伪装成随机字符串或系统命令,例如 kdevtmpfs、watchbog、systemct1 等。
用以下命令确认详细信息:
ps aux | grep -E 'PID|kdev|watch|systemct1' # 替换为实际可疑进程名如果发现异常进程,例如PID 12345,先强制结束:
kill -9 12345注意:只kill进程可能不够,病毒会自动拉起,必须继续清理文件和任务。
2. 追踪并移除恶意文件
找到进程对应的程序文件路径,通常位于 /tmp、/var/tmp、/dev/shm 或用户家目录:
ls -la /proc/12345/exe # 替换PID读取软链接指向的真实路径,然后删除:
rm -f /tmp/.X11-unix/xxx # 示例路径,按实际修改搜索常见挖矿病毒文件模式:
find / -name 'kdevtmpfs*' -o -name 'watchbog*' -o -name '*.minerd' 2>/dev/null将找到的恶意文件用 rm -f 删除,若提示“权限不足”,先执行 chattr -i 文件路径 去掉不可变属性。
3. 清理定时任务与启动脚本
挖矿病毒常通过crontab实现持续化:
crontab -l # 查看当前用户的定时任务如果有可疑条目(例如定期下载脚本或执行某段命令),执行 crontab -e 删除。
还要检查系统级定时任务:
cat /etc/crontab
ls -la /etc/cron.d/删除可疑文件。
同时检查 ~/.bashrc、~/.profile、/etc/rc.local 等启动脚本中是否被添加了恶意代码。
4. 封禁恶意域名与IP
挖矿程序需要连接矿池,可通过iptables或firewalld封禁:
iptables -A OUTPUT -d 矿池IP -j DROP # 替换为实际IP
iptables-save > /etc/sysconfig/iptables如果使用宝塔面板,在“安全→防火墙”中添加域名/IP黑名单,或者直接使用“禁止海外IP访问”功能(但需谨慎)。
5. 修复系统漏洞并更改密码
- 升级系统补丁:
yum update -y(Ubuntu用apt update && apt upgrade -y) - 修改所有弱密码(SSH、数据库、面板后台等)
- 关闭不必要的端口和服务:
netstat -tlnp查看开放端口,非必要则systemctl stop xxx并systemctl disable xxx - 更换SSH默认端口(编辑
/etc/ssh/sshd_config,修改Port 22为其他端口,重启systemctl restart sshd)
避坑指南
- 不要只杀进程:挖矿病毒通常有守护进程,杀一次自动复活,必须找到根源文件并删除。
- 不要忽略.ssh目录:检查
~/.ssh/authorized_keys是否被注入了黑客公钥,如有则删除。 - 警惕误杀系统文件:例如crontab中的正常任务(比如Let's Encrypt自动续期)可能会被误当成病毒,务必确认任务内容。
- 清理后重启测试:使用
reboot重启服务器,待系统稳定后再用top监听CPU,确保没有异常进程。
高频问题解答
- Q1:我找不到恶意进程的文件路径怎么办? 使用
lsof -p PID查看进程打开的文件,通常能显示程序路径。如果进程已结束,可搜索/tmp,/var/tmp,/dev/shm下的隐藏文件。 - Q2:宝塔面板上CPU显示正常,但服务器还是卡? 挖矿病毒可能已清理,但CPU温度过高或内存泄漏,建议同时检查磁盘IO(
iostat -x 1)和网络连接(netstat -antp | grep ESTABLISHED查看可疑连接)。 - Q3:清理后第二天又中毒了? 说明有后门未清除,检查是否有漏洞如Redis未授权访问、弱密码SSH或系统未更新。建议重装系统为最彻底方案。
效果验证
- 运行
top -c -b -n 1 | head -10,确认CPU空闲率(id)大于90%。 - 运行
crontab -l,确认无异常任务。 - 检查
/tmp等敏感目录:ls -la /tmp/没有明显乱码或隐藏目录。 - 监控24小时后再观察,若CPU持续正常则说明清理成功。
如果你正在处理服务器被挖矿病毒处理,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
记住,最好的防御是及时更新系统和设置强密码,别再给黑客留机会。