Linux 服务器被植入挖矿进程
前两天有读者问:服务器突然很卡,CPU占用飙到100%,会不会是被植入了挖矿程序?
这种情况在Linux服务器上非常常见,尤其是SSH密码弱或存在未修补漏洞的机器。
本文就手把手教你如何手动查杀挖矿进程,全程用命令操作,零基础也能跟着做。
第一步:快速定位可疑进程
拿到服务器后,先不要急着杀掉所有高占用进程,否则可能触发挖矿程序的自保护机制。
建议按以下顺序排查:
- 查看CPU占用最高的进程
执行 top -c,按 Shift + P 按CPU使用率排序。观察占用靠前的进程名,正常的系统进程(如sshd、nginx、java)路径一般在/usr、/opt等标准目录;挖矿进程通常伪装成类似 [kthreadd]、[kswapd0] 的系统名,或者使用随机字符、/tmp/.systemd等路径。
重点:记录下进程PID(比如12345)和完整命令行(第二列显示的命令行参数,按c键可展开)。
- 确认进程是否挖矿
如果进程名看起来很可疑,用 ls -l /proc/12345/exe 查看其可执行文件真实路径。
挖矿程序常藏在/tmp、/var/tmp、/dev/shm或隐藏目录(如.systemd/.lib)下。
另外,挖矿进程通常会连接矿池,用 lsof -p 12345 看网络连接,一般会连接到境外IP的443或3333等端口。
第二步:暂停进程并获取关键文件
不要直接用 kill -9,很多挖矿程序会监控自身进程,被杀后自动拉起。
先用 kill -STOP 12345 暂停进程,让它不再消耗CPU,同时阻止它自动恢复。
接着马上备份关键信息:
cp /proc/12345/exe /root/malware_sample(可执行文件副本,留作分析)cp /proc/12345/cmdline /root/malware_cmdline(启动参数)lsof -p 12345 > /root/malware_lsof.txt(文件句柄和网络连接)
获取完整信息后,再执行 kill -9 12345 彻底杀死进程。
注意这一步要快,避免被守护进程发现。
第三步:清理恶意文件和持久化后门
杀掉进程只是治标,必须删除磁盘上的文件和启动项,否则重启后又会复活。
重点检查以下位置:
常见的隐藏路径:
~/.ssh/authorized_keys检查是否被添加了攻击者的公钥(出现不认识的公钥行,说明SSH后门已植入)/etc/rc.local、~/.bashrc、~/.profile检查是否有可疑启动命令/etc/cron.d/、/var/spool/cron/crontabs/检查定时任务,挖矿脚本常通过*/5 * * * * wget ...形式远程下载/etc/systemd/system/检查是否有恶意服务单元文件,用systemctl list-units --type=service --state=running列出所有运行的服务
清理命令示例:
- 删除恶意文件:
rm -rf /tmp/.systemd /var/tmp/.systemd(根据上一步定位的路径) - 清理SSH后门:用
vi ~/.ssh/authorized_keys删除异常公钥行 - 清理定时任务:用
crontab -e删除异常条目,或用systemctl stop malicious-service && systemctl disable malicious-service
避坑提示:有些挖矿程序会写内核模块(通过lsmod查看),或者在/etc/ld.so.preload中注入动态库。检查/etc/ld.so.preload文件是否存在,如果存在并指向异常路径,用echo '' > /etc/ld.so.preload清空文件内容。
第四步:验证清理效果并加固服务器
清理完毕后,重启服务器让所有变更生效(shutdown -r now 或 reboot)。
重启后立即观察:
top或htop确认CPU占用是否恢复正常的10%以下netstat -antp查看是否有异常外联连接systemctl list-units --type=service --state=running确认无异常服务- 定时任务检查:
crontab -l和ls -la /etc/cron.*确认干净 - 重新检查
/etc/ld.so.preload、~/.ssh/authorized_keys等敏感文件
常见问题解答:
- Q:杀完进程过一会又出现怎么办?
A:说明有守护进程或定时任务还在执行,重新从第1步排查,重点关注/etc/cron.d/、/var/spool/cron/crontabs/和~/.config/等目录。
- Q:用top找不到高占用进程,但CPU依然很高?
A:
可能是挖矿程序已升级为驱动级隐藏,
使用htop(更强大的监控工具)或者直接cat /proc/cpuinfo | grep 'cpu MHz'看频率,
同时检查/sys/devices/system/cpu/下的异常文件。
- Q:清理后服务器正常了,但过了两天又中招?
A:
可能是SSH密码太弱或者开放了不必要的端口,
务必修改所有用户密码为强密码,
关闭root远程登录(PermitRootLogin no),
并安装denyhosts或fail2ban。
如果你正在处理Linux服务器被植入挖矿进程,如何手动查杀?
,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
对新手来说,最实用的还是每次发现异常后坚持从进程、文件、定时任务三个维度逐一清理,配合系统加固,基本能解决95%的挖矿问题。