服务器被挖矿病毒感染,数据能保住吗?
服务器被挖矿病毒入侵,数据还能保住吗?
很多新手运维一发现 CPU 飙到 100%、有个陌生进程在疯狂跑,第一反应就是重装系统。其实只要操作顺序正确,服务器上的数据完全可以保住。 挖矿病毒的目标是榨干服务器性能来挖加密货币,不是故意删除你的数据。
下面我会从零开始,带你一步步安全处理。
第一步:确认是否真被挖矿病毒感染
先别慌,用几个命令快速判断。
top -c
查看哪个进程占用 CPU 最高。
挖矿进程通常叫 xmrig、kswapd0、netstat 等伪装名,而且 CPU 会持续占用 200% 以上。
接着检查外连 IP:
netstat -antp | grep ESTABLISHED
如果发现大量连接到境外 IP(比如 144.76.x.x、185.220.x.x)的进程,基本可以确认中招。如果你用的是宝塔面板,直接进“任务管理器”也能看到 CPU 排名。
第二步:立即隔离并备份数据
不要直接杀毒,先断开网络的危险性最小。操作顺序错了,数据可能被病毒反锁。
- 关掉可疑进程(注意:杀完后会立马复活,但我们要先备份)
kill -9 <可疑进程PID>
- 临时禁止外联(通过防火墙阻止所有出站流量)
iptables -P OUTPUT DROP
宝塔用户可以在“安全” > “系统防火墙”中添加拒绝所有出站规则。
- 备份重要数据(网站文件、数据库、配置)
cp -r /www /www_backup_$(date +%Y%m%d)
mysqldump -u root -p --all-databases > /root/all_db.sql
备份完成后把文件移到没有执行权限的目录或直接下载到本地。
第三步:手动清理挖矿病毒
清理步骤要全面,否则病毒会通过定时任务再次复活。
- 查杀进程并清理定时任务
crontab -l # 查看当前用户的计划任务
# 如果发现 /var/spool/cron/ 下有可疑脚本,直接删除
rm -f /var/spool/cron/root
# 同时检查 /etc/crontab 和 /var/spool/cron/crontabs/ 下
- 删除病毒本体
find / -name "*xmrig*" -type f 2>/dev/null | xargs rm -f
find / -name "*kswapd0*" -type f 2>/dev/null | xargs rm -f
# 根据 top 看到的文件名替换
- 检查 sshd 后门(挖矿病毒常篡改 authorized_keys)
cat ~/.ssh/authorized_keys
# 如果发现不认识的公钥,直接清空该文件
- 恢复网络出站并重启服务
iptables -P OUTPUT ACCEPT
# 重启 web 服务器、数据库等核心服务
第四步:验证系统是否干净并做好预防
清理完不等于万事大吉,必须验证效果。
- 用 top 观察 5 分钟:CPU 应该回落到正常水平(5% 以下)。
- 用 netstat 检查连接:不再有陌生境外 IP。
- 检查 /tmp/.X11-unix 等隐藏目录:挖矿经常藏在这里。
预防建议: 开启系统防火墙只放通必要端口;
使用 fail2ban 防止暴力破解;
定期用 ClamAV 扫描(yum install clamav -y && freshclam && clamscan -r /)。
宝塔用户可以直接安装“宝塔堡”或“系统安全”插件,里面有实时监控。
常见问题解答(避坑必看)
Q:数据文件会被挖矿病毒删除吗? 极少数变种会删除竞争文件,但绝大多数挖矿病毒不碰数据。只要你不先重装系统,数据大概率完整。
Q:没有宝塔面板怎么操作? 所有命令都适用于 CentOS / Ubuntu,注意用 systemctl 管理服务即可。
Q:清理后病毒又出现了怎么办? 说明有隐藏后门(如 rootkit),建议用 unhide 工具检查隐藏进程,或者直接升级内核。
写在最后: 服务器被挖矿病毒入侵时,先备份再清理永远是黄金法则。
不要急着重装,按本文步骤一步步走,数据完全可以保住。
如果你在操作中遇到报错,先回到常见问题看看,或者检查命令有没有拼写错误。
安全无小事,后续记得定期更新系统和插件,才能挡住下次攻击。