最近服务器圈子里有个挺让人头疼的现象,那就是好好的小鸡突然变得卡顿不堪。登录后台一看,好家伙,CPU 直接 100% 顶着跑,负载报警,Web 服务响应极慢。这种情况十有八九不是代码出 Bug,而是被“蹭”去挖矿了。

Server top command showing high CPU usage

服务器 CPU 飙升时的 top 命令监控界面,可以看到异常进程的资源占用情况。

今天就跟大家聊聊,当你发现服务器被植入挖矿程序时,该怎么一步步排查、清理,以及最重要的——如何防止再次发生。

一、 现象与初步排查

故障的起点通常很简单:网站打不开了,或者 SSH 登录上终端后输入命令都有延迟。这时候第一反应肯定是看资源占用情况。

常用的命令就那几个:

  • tophtop:能看到哪个进程在吃 CPU。如果有个莫名其妙的进程名,或者 CPU 占用率是个位数的进程负载极高,那就要小心了。
  • ps -ef:查看进程树,看看父进程是谁,是不是从哪个可疑的目录启动的。

在这次我们要讨论的案例中,楼主直接通过文件名定位到了问题。虽然原贴里是直接用 find 命令找已知挖矿软件 xmrig,但我们在实战中往往不知道文件名怎么办?很简单,按 CPU 占用排序找进程路径:

top -c
# 按 P (大写) 可以按 CPU 使用率排序,按 c 可以显示完整命令行

二、 锁定“元凶”与路径分析

Suspicious mining software directory path in file system

深藏在系统目录下的挖矿程序路径,其中 moneroocean 和 xmrig 是明显的特征。

挖矿程序为了避免被简单的 rm 删除,通常会藏在很深或者不起眼的目录下。在这次的事件中,问题路径出现在了:

/opt/1panel/apps/hermes-agent/Hermes-Agent/data/moneroocean/xmrig

这个路径有点意思。

  1. 目录名可疑:如果你没听说过或没安装过名为 hermes-agent 的应用,那它的出现就很突兀。hermes 这个名字本身很常见,但在 /opt/1panel/apps 下出现非官方应用,意味着面板可能是突破口。
  2. 子目录露馅moneroocean 是门罗币的一个矿池名称。正常的应用程序几乎不会以矿池名称来命名数据目录。看到这个词,基本可以直接确诊为挖矿木马。
  3. 软件性质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 的应用目录下,我们需要重点排查以下几个风险点:

  1. 面板弱口令:是不是还在用默认密码?是不是密码设得太简单(如 123456)?黑客全网的扫描脚本秒破弱口令,进去后发现不是 root 权限,就利用面板的功能漏洞上传 Webshell。
  2. 应用漏洞/未授权访问:如果你确实安装了 Hermes 相关的组件,请确认该组件是否存在已知的 RCE(远程代码执行)漏洞。很多第三方应用或者未经安全审计的 Docker 镜像,都可能携带后门或存在配置缺陷。
  3. API 泄露:检查 Nginx 或其他 Web 服务的日志,看是否有频繁 POST 请求或异常访问记录。

五、 安全加固建议

不想下次再出现这种“请黑客免费挖矿”的情况,请务必做好以下几点:

  1. 修改重要端口:SSH 默认的 22 端口改掉,面板端口也不要用默认的。禁止 root 远程登录,改为使用普通用户 + 密钥登录。
  2. 防火墙策略:只开放 80/443 网站端口和你自己用的 SSH 端口,其余端口一律通过防火墙(如 ufw/iptables)封锁,特别是 1Panel 的端口,不要暴露在公网。
  3. 面板安全
    • 不要暴露面板:如果没有特殊需求,服务器管理面板尽量只监听 127.0.0.1,通过 SSH 隧道访问。
    • 安装官方应用:尽量只从官方应用商店安装应用,对于来路不明的第三方应用,慎装。
  4. 安装监控工具:像 NodeQuery、ServerStatus 或者云厂商的监控,设置 CPU 阈值报警。异常飙升能第一时间收到通知,损失降到最低。

总结

遇到 CPU 飙升别慌,先看进程,再找路径,顺藤摸瓜查定时任务。清理虽然麻烦,但如果不重装系统,就一定要把入口找出来封死。安全无小事,千万别因为嫌麻烦就留后门,下次可能就不止是挖矿那么简单了。

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭