如何判断服务器是否中了挖矿病毒,怎么清除挖矿病毒
在当今的互联网环境下,服务器被入侵并沦为“矿工”的案例层出不穷。这不仅会导致昂贵的算力资源被浪费,还可能造成业务中断甚至数据泄露。
作为一名开发者或系统管理员,如何快速识别并“清理门户”?这是一份实操指南。
第一部分:如何判断服务器中了挖矿病毒?
挖矿程序通常会消耗大量的 CPU 或 GPU 资源,表现得非常“贪婪”。你可以通过以下几个维度进行排查:
1. 观察资源占用(最直观)
使用 top 或 htop 命令观察。
-
高 CPU 占用: 如果 CPU 长期处于 90% - 100%,且排在首位的进程名看起来很奇怪(如随机乱码或冒充系统进程名为
sysupdate),则高度可疑。 -
隐身策略: 有些高级病毒会在你运行
top命令时自动退出,关掉命令后又重新启动。如果你发现系统负载(Load Average)很高,但top里看不到高占用进程,说明可能遇到了这种“躲猫猫”病毒。
2. 检查异常网络连接
挖矿程序需要与矿池(Pool)通信来获取任务并提交成果。
-
使用命令:
netstat -antp或ss -antp。 -
疑点: 观察是否有连接到非常规端口(如 3333, 4444, 14444)或境外 IP 的加密通信(TLS/SSL)。
3. 查看定时任务(Crontab)
为了实现“死灰复燃”,挖矿脚本通常会把自己写进定时任务。
-
检查命令:
crontab -l以及/etc/crontab。 -
重点关注: 那些包含
curl或wget从未知 URL 下载脚本并执行的条目。
4. 检查系统日志
查看 /var/log/auth.log (Ubuntu/Debian) 或 /var/log/secure (CentOS)。
-
检查是否有大量高频的 SSH 登录失败记录,这通常意味着病毒是通过暴力破解进来的。
第二部分:如何彻底清除挖矿病毒?
清除挖矿病毒不能只靠“杀进程”,因为它们往往有守护进程或定时任务保护。请按照以下步骤操作:
步骤 1:切断外网连接
如果业务允许,先通过安全组(Security Group)或防火墙封禁非必要的出站流量,尤其是针对可疑 IP 的访问,防止病毒下载后续组件。
步骤 2:阻断定时任务
在杀掉进程前,必须先铲除它的“根”。
-
编辑定时任务:
crontab -e,删除所有可疑行。 -
检查目录:
/etc/cron.d/、/etc/cron.daily/等,清理异常文件。
步骤 3:终止病毒进程
-
找到 PID:从
top或ps -ef中确定。 -
强行停止:
kill -9 <PID>。 -
注意: 如果杀掉后立即重启,请检查是否有关联的系统服务(Systemd Service)。使用
systemctl list-units查找可疑服务并停止。
步骤 4:清理病毒文件
-
通过
ls -l /proc/<PID>/exe找到病毒文件在磁盘上的真实路径。 -
将其删除。同时检查
/tmp/、/var/tmp/和/dev/shm/,这些是病毒最喜欢藏身的目录。
步骤 5:修复 SSH 后门
挖矿病毒常会在 ~/.ssh/authorized_keys 中添加自己的公钥,以便随时再次进入。
-
务必清理该文件,删除不属于你的公钥。
第三部分:预防永远胜于治疗
-
强密码策略: 永远不要使用弱密码,建议直接禁用密码登录,改用 SSH 密钥对。
-
最小权限原则: 业务程序不要使用
root权限运行。 -
定期更新: 修复已知的系统漏洞(如 Log4j、Redis 漏洞等),这些通常是病毒进入的通道。
-
安全组配置: 仅放行必要的端口(如 80, 443),严禁对公网开放 Redis(6379)、MySQL(3306)等高危端口。
避坑提示: 有些挖矿病毒会修改
/etc/ld.so.preload来劫持系统命令。如果你发现ls或top命令的结果不可信,记得检查这个文件。
更多服务器安全知识可以关注纽特云官网https://www.niuteyun.com/