某天下午看监控,小规格云主机负载突然冲到八百多。业务流量并不大——真正忙的是一堆伪装成系统进程的 Perl 外连,以及一台对外打 SSH 的暴力破解工具。这不是性能问题,是入侵。
下文脱敏记录入口、载荷、清理与加固;具体 IP、实例号、业务名与账号一律略去。
机器上装过常见的 Linux 面板。临时目录里留下了带版本号的恶意脚本文件名(形如某面板版本号的 .pl),以及同类「加速 / 面板」命名的 Perl 载荷。结合进程与持久化痕迹,判断入口更像是面板已知漏洞或未授权入口,而不是先撞开 SSH。
教训很直白:面板对外暴露、版本滞后,等于多开一扇管理后门。业务端口再干净,也挡不住管理面被打穿。
| 阶段 | 发生了什么 |
|---|---|
| 入侵后数周 | 暴力破解二进制在隐藏目录里常驻,对外扫 SSH |
| 同期 | IRC 僵尸木马伪装成 klogd / acpid / sshd / httpd 等,连上公网 C2 |
| 排查当日 | 负载异常 → 杀进程、清外连、拆持久化 → 业务以生产配置拉起 |
从植入到被发现,中间可以空窗很久。负载与外连数飙升,往往才是「终于看得见」的那一刻。
1. IRC 僵尸(主威胁)
可执行体是系统里的 perl,进程名伪装成常见守护进程。连公网 IRC 端口做 C2,单机可拉出数百条外连。持久化靠 crontab 与开机脚本(如 rc.local),重启也会回来。
2. SSH 暴力破解工具
藏在 /tmp 下隐蔽目录,长期占用 CPU,把这台机变成扫别人的炮灰——这也是负载离谱的主因之一。
3. 隐蔽隧道类工具
通过公共 CDN 拉取中继客户端,在共享内存目录里落隐藏工作区,用来绕过常规防火墙视线建隧道。计数文件、重启脚本一类痕迹一并清掉。
4. /tmp 里的隐藏目录与杂散二进制
大量点开头目录、来路不明的可执行文件。临时目录可写且常被忽略,是这类载荷的首选落脚点。
按「先断手脚,再拆窝,最后查钥匙」的顺序:
/tmp、共享内存目录下的隐藏目录与可疑脚本 / 二进制authorized_keys 与 sshd 配置是否被加后门公钥或改登录策略清理后负载从三位数跌回接近空闲。业务能起来,不等于安全债结清——只说明「当前这一轮」被打断了。
入侵一旦坐实,默认凭据与面板会话都可能已泄露。优先级大致是:
| 优先级 | 事项 |
|---|---|
| 高 | 轮换 root / 面板 / 数据库 / 缓存等全部密码与密钥;面板升到当前修复版本或考虑弃用公网面板 |
| 中 | SSH 改密钥登录、关密码登录、收紧 root 与端口;防火墙只放必要入站 |
| 中 | 第三方回调 / JS-SDK 等若绑定出口 IP,在控制台更新白名单(勿把真实 IP 写进公开文档) |
| 低 | 复查其它系统用户、非常驻服务、异常监听端口,必要时重装系统再迁业务 |
若只杀进程不换密、不升级面板,同一入口会再来一遍。
sshd 若实际是 /usr/bin/perl,名字再像系统服务也不可信。小主机也能被拖进僵尸网络。复盘写下来,是为了下次负载异常时,第一反应不是「加机器」,而是「谁在用这台机器打别人」。