服务器中挖矿程序该如何清理
学完这篇,你能在一台被入侵的 Linux 服务器上定位挖矿进程、连根拔掉它的自启项和后门,并做基本的加固收尾。下面按操作顺序来,建议全程用 root 或 sudo 执行。
第一步:确认是不是挖矿,拿到 PID
先看 CPU 占用,挖矿程序的典型特征是某个陌生进程长期吃满单核或多核。执行:
top
进入后按 P(大写)按 CPU 排序,按 1 展开每个核心。也可以直接:
ps aux --sort=-%cpu | head -20
记下可疑进程的 PID、启动用户和命令行。常见名字会伪装成 kworker、[kthreadd]、sysupdate、python3、随机字符串等。
注意:
ps、ls、top、netstat都可能被替换成夹带私货的版本。怀疑时用rpm -Va(CentOS 7)或dpkg -V(Ubuntu 20.04)校验系统命令是否被改动,或直接调用绝对路径/usr/bin/ps aux。
第二步:隔离服务器,别急着删
目的是先掐断它的网络和自启链路,避免边删边被重新拉起。在云控制台(阿里云 ECS 的「安全组」、腾讯云 CVM 的「防火墙」)把出站规则改成只放行 22 端口,或直接在本机执行:
iptables -I OUTPUT -p tcp --dport 3333 -j DROP
iptables -I OUTPUT -p tcp --dport 5555 -j DROP
3333、5555、7777、14444 是挖矿矿池常用端口,也可直接封矿池 IP。
第三步:定位进程对应的文件和网络连接
这一步要拿到「它从哪来、在哪、连着谁」。执行:
ls -l /proc/<PID>/exe
readlink /proc/<PID>/cwd
cat /proc/<PID>/cmdline | tr '\0' ' '
ss -antp | grep <PID>
/proc/<PID>/exe 是程序的真实路径(即使被删了也会显示 (deleted)),cwd 是它运行目录。顺手检查高危目录:
ls -la /tmp /var/tmp /dev/shm
这三个目录是挖矿程序最爱落脚的地方。
注意:如果要做溯源或上报,先把
/proc/<PID>/下的exe、cmdline、maps打包备份,删完就找不回来了。
第四步:排查所有持久化入口
挖矿程序通常有多个后门,只杀进程会立刻复活。逐项检查:
crontab -l -u root
ls -la /etc/cron.d/ /etc/cron.hourly/ /var/spool/cron/
systemctl list-units --type=service --state=running
ls -la /etc/systemd/system/*.service
cat /etc/rc.local
cat /etc/ld.so.preload
cat /root/.ssh/authorized_keys
重点看:可疑的 systemd 服务、奇怪的 cron 任务(常带 curl | bash 或 base64 串)、/etc/ld.so.preload 里指向的陌生 .so 文件、authorized_keys 里不认识的公钥。同时 cat /etc/passwd 看有没有新增的 UID 0 用户。
第五步:清除进程、文件和自启项
按「先断自启,再杀进程,最后删文件」的顺序做:
systemctl disable --now <恶意服务名>
crontab -r -u root # 确认 cron 里没有正常业务再执行
chattr -i /tmp/xxx # 被加了不可删除属性的话先解锁
kill -9 <PID>
rm -f /tmp/xxx /etc/systemd/system/xxx.service
systemctl daemon-reload
chattr -i 很关键,很多挖矿程序会给自己的文件和 cron 配置加 +i 属性,不解锁删不掉。
注意:如果有多个互相守护的进程,先一次性全
kill -9,否则删一个另一个会立刻把它拉起来。
第六步:加固并复查
清理完不等于安全,漏洞入口必须堵上:
- 改掉 root 及所有可疑账户密码:
passwd root - 打补丁:CentOS 7 用
yum update -y,Ubuntu 20.04 用apt update && apt upgrade -y - 关闭不必要的对外端口,
firewall-cmd --list-ports或ufw status核对 - 打开云厂商的主机防护:阿里云「云安全中心 > 主机防护 > 病毒查杀」,腾讯云「主机安全 > 入侵检测」,跑一次全盘扫描
- 观察 24 小时:
watch -n 5 'ps aux --sort=-%cpu | head -5',看 CPU 是否再次飙高
如果确认数据无价值、漏洞又说不清来源,重装系统比手工清理更可靠。
小结
- 先确认 PID 和真实路径(
/proc/<PID>/exe),别一上来就kill - 清理顺序:断网 → 断自启 → 杀进程 → 删文件 → 加固
- 必查四处持久化:cron、systemd、
/etc/ld.so.preload、~/.ssh/authorized_keys - 遇到删不掉的用
chattr -i解锁,怀疑命令被替换就用rpm -Va校验 - 清理完必须打补丁、改密码、开启云主机防护,否则很快会二次中招
原文链接:https://www.gj0.com/thread-194.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。