服务器被挖矿了?3 分钟彻底查杀 + 永久防护
一、先看症状:你的服务器是不是在“偷偷打工”
挖矿病毒最典型的特征是 CPU 占用率持续 100% 或 200% 以上。
你可以通过 SSH 登录服务器,输入 top 命令,按 P 按 CPU 使用率排序。
如果看到类似 xmrig、minerd、kdevtmpfsi 等陌生进程占满 CPU,基本可以断定中招了。
另外,查看带宽流量(宝塔面板 - 监控 - 流量图)也能辅助判断。
二、准备工作
- 一台被感染的服务器(云服务器或物理机均可)。
- root 权限的 SSH 连接(或 sudo 权限)。
- 如果使用了宝塔面板,提前登录面板后台。
- 一个干净的命令行窗口(不建议同时做其他操作)。
三、3 分钟查杀挖矿病毒
1. 冻结可疑进程并记录 PID
执行 top -b -n1 | grep -E 'xmrig|minerd|kdevtmpfsi' 直接筛选挖矿相关的关键词。
如果看不到明显关键词,就观察 CPU 超过 80% 的非系统进程。
记下 PID(例如 12345)。
2. 找到病毒文件路径
使用 ls -la /proc/12345/exe 查看进程对应的可执行文件路径。
一般病毒会藏在 /tmp、/var/tmp、/dev/shm 或用户家目录下。
用 lsof -p 12345 | grep 'txt' 也能看到加载的二进制文件。
3. 杀死进程并删除文件
先停掉进程:kill -9 12345。
然后立即删除文件:rm -f /var/tmp/.systemd-private-xxx/xxx(替换成实际路径)。
注意,很多病毒会立刻自重启,所以最好先停止相关服务或改文件权限。
4. 清理定时任务和开机启动
检查 crontab:crontab -l 查看当前用户,cat /etc/crontab 查看系统定时任务。
病毒常通过 @reboot 或每分钟下载脚本的方式维持存活。
删除所有可疑条目。
宝塔用户可以在面板“计划任务”中检查并删除异常任务。
5. 检查 SSH 密钥和用户
cat ~/.ssh/authorized_keys 看有没有不认识的公钥。cat /etc/passwd 检查是否有奇怪用户(如 test、mysql)。
如果有,立即删除用户:userdel -r 用户名。
四、永久防护:让病毒再也进不来
1. 禁止 root 直接 SSH 登录
编辑 /etc/ssh/sshd_config,找到 PermitRootLogin 改为 no。
然后重启 sshd:systemctl restart sshd。
以后用普通用户登录再 su 到 root。
2. 修改 SSH 端口
同样在 /etc/ssh/sshd_config 里修改 Port 为五位数字(如 22222)。注意:修改后记得在云服务商安全组和宝塔防火墙放行新端口,否则会被拒之门外。
3. 安装 fail2ban 防暴力破解
依赖包安装后执行:
yum install fail2ban -y # CentOS
apt install fail2ban -y # Ubuntu
systemctl enable fail2ban
systemctl start fail2ban
配置文件 /etc/fail2ban/jail.local 里开启 sshd 保护即可。
默认能封禁尝试次数过多的 IP。
4. 宝塔面板简单防护
在宝塔面板 - 安全 - 防火墙中:
- 只放行业务必须的端口(如 80,443,22 建议改为非标端口)。
- 打开“SSH 安全登录”开关,设置 IP 白名单(如果固定 IP)。
- 定期扫描:宝塔“文件” - 目录扫描、系统扫描(部分付费插件)。
5. 保持系统与软件更新
定期执行 yum update 或 apt update && apt upgrade,及时修补已知漏洞。
五、效果验证与高频问题
验证是否清理干净
- 再次运行
top,观察 CPU 是否回落到 10% 以下(根据业务正常值)。 - 检查 crontab 和
/etc/crontab确认无异常任务。 - 使用
netstat -antp | grep -E '3333|14444|8888'等常见挖矿端口,确认无异常连接。 - 宝塔“安全” - “SSH 登录日志” 检查最近失败的登录尝试。
Q:杀了进程后几分钟又冒出来了怎么办?
说明有守护进程或定时任务在自动下载。
先断网(云控制台关闭外网),再彻底清理。
重点检查 /etc/cron.d/、/var/spool/cron/、systemd 服务(systemctl list-units --state=active | grep -i miner)。
删除所有相关文件后联网测试。
Q:误删了系统文件怎么办?
如果不确定文件是否系统自带,先 kill -STOP 冻结进程,搜索该文件名看是否为已知软件包的一部分。
宁可先保留可疑文件,也不要盲目删除系统关键文件(如 libc.so、sudo 等)。
Q:清理后服务器性能依然很差?
病毒可能已经留下了后门(如隐藏 rootkit)。
建议重装系统或使用 rootkit 查杀工具(chkrootkit)。
对于数据重要的情况,备份数据后重装最保险。
如果你正在处理服务器被挖矿的问题,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。