摘要:CPU 飙高、机器卡顿、云安全中心告警挖矿——本文给出通用排查清单:先隔离与快照,再查进程、定时任务、启动项、异常用户与出站连接,并说明何时该清后门、何时该重装。命令以常见 Linux 发行版为例,事实引阿里云帮助中心与宝塔官方文档(查询日 2026-10-03),不编造某次真实入侵故事。
公网上的云服务器被自动化扫描很常见。挖矿木马一旦跑起来,最直观的感觉是:CPU 长时间打满、网站变慢、SSH 卡顿,甚至连不上。阿里云帮助中心《挖矿病毒防护和处理指南》也写明:挖矿会恶意抢占 CPU,实例卡顿或无法远程连接往往是用户最早察觉的信号;开启安全加固时,云安全中心可能以「紧急」等级告警挖矿或木马。
本文是通用排查清单,不是某次真实入侵的复盘。命令以常见 Linux(Ubuntu/Debian/CentOS 系)为例,路径与服务名因发行版、面板版本而异,请以你机器实际输出与厂商文档为准。
查询日期:2026-10-03。操作前务必在云控制台做快照/备份;改防火墙与 SSH 时保留控制台 VNC/救援通道,避免把自己锁在外面。

怎么发现异常
| 信号 | 说明 |
|---|---|
| CPU / 负载长期偏高 | top / 云监控里用户态 CPU 接近满载,业务进程却不多 |
| 云厂商安全告警 | 挖矿程序、矿池通信、恶意域名访问等 |
| 出站流量异常 | 对陌生 IP/端口的持续连接 |
| 面板或 SSH 异常登录 | 陌生 IP、非常规时段登录成功 |
| 业务被劫持 | 站点跳转、文件被改、日志被清空 |
若已装宝塔面板,可先看面板「安全」相关模块;官方文档《Linux 主机安全检测》说明其一键检测含账号弱口令、SSHD、后门、挖矿进程、Rootkit、历史命令与日志异常等多项,便于辅助溯源(仍需结合命令行核对,不能只信评分)。

第一步:隔离(断外网 / 快照)
发现疑似挖矿后,先止血,再慢慢清。阿里云文档建议:通过修改安全组限制公网与 SSH 访问,达到隔离效果;并对重要数据先做快照。
建议顺序:
- 云控制台创建快照(系统盘 + 有数据的数据盘)。
- 收紧安全组:入方向 SSH 只放你临时办公的 IP;若业务允许,先关掉对公网的业务端口,或整机只保留控制台救援通道。
- 出站可临时收紧(有的厂商支持出站规则):阻断对陌生矿池 IP 的访问,避免一边清一边继续挖。
- 若实例因挖矿被厂商管控关停,按控制台「安全管控事件」说明先解除锁定,再清木马(以各云厂商当前页面为准)。
隔离不等于处理完成;只是给你时间查持久化后门。
第二步:查进程与占用
登录后先看谁在吃 CPU(发行版工具名可能略有差异):
top -c
ps -eo pid,ppid,user,cmd,%cpu --sort=-%cpu | head -30
可疑迹象示例(不是认定标准):
- 进程名伪装成
logrotate、kworker、随机字符串,却路径在/tmp、/dev/shm、用户家目录隐藏文件夹。 - CPU 占比异常高,且不是你部署的业务。
- 用
ls -al /proc/<PID>/exe看可执行文件真实路径,再md5sum到威胁情报平台比对(阿里云文档有类似步骤说明)。
结束进程前先记下 PID、路径、启动命令;只 kill 而不清定时任务,往往会反复回来。
第三步:查定时任务与启动项
挖矿家族常用 crontab / systemd 持久化。阿里云文档强调:若只删挖矿进程和文件、不清理计划任务,会出现「删了又来」。
当前用户与指定用户:
crontab -l
sudo crontab -u root -l
# 其他业务用户按同样方式查
系统级计划任务目录(按需 ls):
/etc/crontab
/etc/cron.d/
/etc/cron.hourly/
/etc/cron.daily/
/var/spool/cron/ # 或 /var/spool/cron/crontabs/
systemd 自启:
systemctl list-unit-files --state=enabled
# 对可疑 unit:
systemctl cat 可疑服务名.service
同时检查 /etc/rc.local、/etc/init.d/、用户级 ~/.config/systemd/user/ 等。发现下载脚本、挖矿参数、陌生二进制路径的条目,记录后删除或禁用,再杀进程。
若文件提示 Operation not permitted,可能被加了 immutable 属性;阿里云文档示例:lsattr 看到 i 标志后,用 chattr -i 文件 再删(操作前确认路径无误)。
第四步:查异常用户、SSH 与预加载劫持
# 账号
cut -d: -f1 /etc/passwd
sudo grep -E 'useradd|new user' /var/log/auth.log /var/log/secure 2>/dev/null | tail -50
# SSH 公钥(每个可能登录的用户都要看)
sudo find /home /root -name authorized_keys -ls 2>/dev/null
# 删掉不认识的公钥行;并轮换你自己的密钥
# 预加载劫持(可隐藏 top/ps/netstat)
cat /etc/ld.so.preload
# 若有陌生 .so,先备份再清空该文件(确认无业务依赖后再处理)
面板用户:查宝塔 / 1Panel 等后台的登录日志与最近改密记录;面板本身若暴露公网,应对照新服务器安全基线收紧端口与密钥登录。
第五步:查网络连接
ss -antp
# 或
netstat -antp
关注:
- 对陌生公网 IP 的 ESTABLISHED 连接(尤其高 CPU 进程发起的)。
- 监听在异常高端口、非业务服务的进程。
可对确认的矿池 / C2 地址在主机防火墙临时 DROP(示例,把地址换成你核实过的):
sudo iptables -A INPUT -s 可疑地址 -j DROP
sudo iptables -A OUTPUT -d 可疑地址 -j DROP
长期规则建议改到云安全组或发行版推荐的防火墙工具,并做持久化,避免重启失效。
第六步:清后门还是重装?
| 情况 | 更稳妥的选择 |
|---|---|
| 刚发现、持久化点少、业务简单、有完整快照 | 可按上面清单清进程→任务→启动项→公钥→预加载,再全盘杀毒/面板安全检测,观察 24–72 小时 |
| 反复复发、系统命令被替换、rootkit 特征、日志被大量清空 | 备份数据后重装 / 初始化云盘 更省时间;阿里云文档亦写明挖矿往往很难彻底清干净,重装更有把握 |
| 跑过生产数据库、支付、用户隐私 | 默认按「已失陷」处理:轮换所有密钥与面板密码、检查业务 webshell、必要时重装并从干净备份恢复 |
清理后立刻做:
- 轮换 SSH 密钥、所有系统用户密码、面板与数据库密码、云 API Key。
- 打操作系统与中间件补丁(Redis、面板、PHP、WordPress 插件等常见入口)。
- 确认异地备份可用——本机备份在失陷后不可信,见网站定期备份方案。
- HTTPS 与证书若被改过,核对证书与站点文件,参见免费证书自动续期。
预防:别等第二次
- 新机器先做 SSH 密钥、禁密码、防火墙、自动更新。
- 面板不要对全网裸奔:改端口、安全入口、TOTP、安全组只放自己 IP。
- 少开 3306 / Redis / phpMyAdmin 到公网;弱口令仍是挖矿常见入口。
- 打开云厂商主机安全 / 安全中心基础检测;有告警先隔离再查。
- 定期异地备份,并偶尔做一次恢复演练。
相关阅读
来源与查询日期
- 阿里云帮助中心:挖矿病毒防护和处理指南(隔离安全组、快照、进程/计划任务/自启/SSH 公钥/
ld.so.preload/恶意账号、反复感染原因等) - 阿里云安全中心:挖矿程序处理最佳实践
- 宝塔官方文档:Linux 主机安全检测(含挖矿进程、后门、Rootkit 等检测项;页面显示更新于 2026-07-07)
- 查询日期:2026-10-03。云控制台菜单名与面板功能会变,以各厂商当前文档为准。
风险提示:误杀业务进程、改错防火墙或清空错误文件可能导致停服或无法登录。操作前保留云控制台救援方式与快照。本文不构成安全应急服务承诺,严重事件请联系云厂商安全支持或专业应急团队。云/建站类联盟链接尚未配置时,文中仅放官网与官方文档(affiliate_later)。