服务器CPU飙升100%?排查挖矿进程与安全加固指南
最近服务器圈子里有个挺让人头疼的现象,那就是好好的小鸡突然变得卡顿不堪。登录后台一看,好家伙,CPU 直接 100% 顶着跑,负载报警,Web 服务响应极慢。这种情况十有八九不是代码出 Bug,而是被“蹭”去挖矿了。
服务器 CPU 飙升时的 top 命令监控界面,可以看到异常进程的资源占用情况。
今天就跟大家聊聊,当你发现服务器被植入挖矿程序时,该怎么一步步排查、清理,以及最重要的——如何防止再次发生。
一、 现象与初步排查
故障的起点通常很简单:网站打不开了,或者 SSH 登录上终端后输入命令都有延迟。这时候第一反应肯定是看资源占用情况。
常用的命令就那几个:
top或htop:能看到哪个进程在吃 CPU。如果有个莫名其妙的进程名,或者 CPU 占用率是个位数的进程负载极高,那就要小心了。ps -ef:查看进程树,看看父进程是谁,是不是从哪个可疑的目录启动的。
在这次我们要讨论的案例中,楼主直接通过文件名定位到了问题。虽然原贴里是直接用 find 命令找已知挖矿软件 xmrig,但我们在实战中往往不知道文件名怎么办?很简单,按 CPU 占用排序找进程路径:
top -c
# 按 P (大写) 可以按 CPU 使用率排序,按 c 可以显示完整命令行
二、 锁定“元凶”与路径分析
深藏在系统目录下的挖矿程序路径,其中 moneroocean 和 xmrig 是明显的特征。
挖矿程序为了避免被简单的 rm 删除,通常会藏在很深或者不起眼的目录下。在这次的事件中,问题路径出现在了:
/opt/1panel/apps/hermes-agent/Hermes-Agent/data/moneroocean/xmrig
这个路径有点意思。
- 目录名可疑:如果你没听说过或没安装过名为
hermes-agent的应用,那它的出现就很突兀。hermes这个名字本身很常见,但在/opt/1panel/apps下出现非官方应用,意味着面板可能是突破口。 - 子目录露馅:
moneroocean是门罗币的一个矿池名称。正常的应用程序几乎不会以矿池名称来命名数据目录。看到这个词,基本可以直接确诊为挖矿木马。 - 软件性质:
xmrig是开源的门罗币挖矿软件,因为性能好、开源免费,常被黑客滥用。看到它在服务器上跑,除了你自己在跑实验,否则就是中毒。
三、 清理步骤:删除还是重装?
看到挖矿进程,评论区里有的大佬建议直接“重装系统大法好”。这确实是最干净、最彻底的办法,但如果你和楼主一样,觉得重装太麻烦,或者服务器上有重要配置不想折腾,可以尝试手动清理。但请注意,手动清理有残留风险,必须操作仔细。
1. 终止进程 不要直接删文件,因为进程可能还会写日志或者生成新文件。先停掉它:
kill -9 <PID>
# 或者用 pkill 终止同名进程
pkill xmrig
2. 删除恶意文件
使用 rm -rf 强制删除整个可疑目录:
rm -rf /opt/1panel/apps/hermes-agent
3. 检查定时任务(关键!)
黑客为了持久化,通常会修改 crontab。一定要检查 /var/spool/cron/ 下的文件,还有 /etc/crontab,看看有没有奇怪的定时下载脚本或重启命令。
crontab -l
cat /etc/crontab
4. 检查启动项
查看 systemd 服务列表,看看有没有注册了奇怪的自启动服务。
systemctl list-units --type=service --state=running
四、 深度复盘:他是怎么进来的?
删了文件不代表万事大吉,最关键的是找到“洞”,堵上它。
既然挖矿文件在 1Panel 的应用目录下,我们需要重点排查以下几个风险点:
- 面板弱口令:是不是还在用默认密码?是不是密码设得太简单(如 123456)?黑客全网的扫描脚本秒破弱口令,进去后发现不是 root 权限,就利用面板的功能漏洞上传 Webshell。
- 应用漏洞/未授权访问:如果你确实安装了 Hermes 相关的组件,请确认该组件是否存在已知的 RCE(远程代码执行)漏洞。很多第三方应用或者未经安全审计的 Docker 镜像,都可能携带后门或存在配置缺陷。
- API 泄露:检查 Nginx 或其他 Web 服务的日志,看是否有频繁 POST 请求或异常访问记录。
五、 安全加固建议
不想下次再出现这种“请黑客免费挖矿”的情况,请务必做好以下几点:
- 修改重要端口:SSH 默认的 22 端口改掉,面板端口也不要用默认的。禁止 root 远程登录,改为使用普通用户 + 密钥登录。
- 防火墙策略:只开放 80/443 网站端口和你自己用的 SSH 端口,其余端口一律通过防火墙(如 ufw/iptables)封锁,特别是 1Panel 的端口,不要暴露在公网。
- 面板安全:
- 不要暴露面板:如果没有特殊需求,服务器管理面板尽量只监听
127.0.0.1,通过 SSH 隧道访问。 - 安装官方应用:尽量只从官方应用商店安装应用,对于来路不明的第三方应用,慎装。
- 不要暴露面板:如果没有特殊需求,服务器管理面板尽量只监听
- 安装监控工具:像 NodeQuery、ServerStatus 或者云厂商的监控,设置 CPU 阈值报警。异常飙升能第一时间收到通知,损失降到最低。
总结
遇到 CPU 飙升别慌,先看进程,再找路径,顺藤摸瓜查定时任务。清理虽然麻烦,但如果不重装系统,就一定要把入口找出来封死。安全无小事,千万别因为嫌麻烦就留后门,下次可能就不止是挖矿那么简单了。

评论已关闭