GoForum🌐 V2EX

从哪吒监控漏洞说起:我做了一个轻量级 VPS 入侵监控与告警工具 vps-sentinel

857 · 2026-06-17 15:53 · 0 次点赞 · 0 条回复

从哪吒监控漏洞说起:我做了一个轻量级 VPS 入侵监控与告警工具 vps-sentinel

最近两天,哪吒监控相关安全事件又在圈子里被讨论起来。公开安全公告里可以看到,Nezha Monitoring 近期有多条访问控制、SSRF 、跨租户权限和 Agent/面板信任边界相关漏洞被披露或更新。

这件事给我的启发很直接:
VPS 上只做“在线监控”是不够的,我们还需要知道机器有没有出现可疑登录、持久化、异常进程、异常监听端口和关键文件漂移。

所以我整理并开源了一个 Rust 写的轻量级 VPS 入侵信号监控工具:

GitHub: https://github.com/cryptoli/vps-sentinel
Release: v0.1.0

为什么需要这个工具

哪吒监控这类工具的核心价值是“服务器状态监控”:CPU 、内存、流量、延迟、在线状态等。
但一旦监控面板、Agent 权限或远程执行能力出现问题,风险就会变成:

  • 面板账号被拿下后,影响多台 Agent 机器;
  • 低权限用户越权触发任务或访问内部资源;
  • Agent 权限过高,导致攻击面扩大;
  • 机器被植入后门后,传统在线监控不一定能及时发现;
  • 服务器还在线、CPU 也正常,但 authorized_keys、systemd 、cron 、监听端口已经被改了。

vps-sentinel 不是哪吒监控的替代品,它关注的是另一个方向:

主机有没有出现“被入侵的信号”。

vps-sentinel 支持什么

1. SSH 登录监控

可以识别:

  • root SSH 登录;
  • 密码登录;
  • 普通成功登录;
  • SSH 爆破行为;
  • 基于来源 IP 的聚合告警;
  • journalctl / auth.log / secure 日志兼容读取。

默认不是只提醒陌生 IP ,而是可以按配置提醒成功登录。

2. SSH key 和关键文件完整性

重点监控:

  • authorized_keys
  • authorized_keys2
  • 关键系统配置文件
  • Web 目录中的疑似 WebShell 内容
  • 基线漂移

如果你手动改了 SSH key ,它会作为风险漂移被识别出来,而不是静默忽略。

3. 持久化检测

会检查常见持久化入口:

  • cron
  • systemd unit
  • shell profile
  • ld.so.preload
  • 可疑启动命令
  • 下载后执行
  • base64 解码后执行
  • 临时目录自启动
  • 网络到 shell 的执行链路

它不是简单字符串匹配,而是基于行为特征组合评分,降低正常运维误报。

4. 进程风险检测

支持识别:

  • 临时目录可执行文件;
  • deleted executable ;
  • memfd / 匿名执行;
  • 网络 shell 桥接;
  • 已知挖矿/扫描器身份;
  • 改名伪装进程;
  • 可疑父进程链;
  • systemd unit 与 ExecStart 上下文;
  • 可执行文件 owner 、大小、hash ;
  • cgroup/container 上下文;
  • 出站连接画像。

比如普通转发工具不会因为名字像“网络工具”就直接告警,程序会结合 shell 意图、fd 复制、TTY 、socket 、执行路径等多个信号判断。

5. 网络监听检测

会读取 /proc/net/tcp*/proc/net/udp* 并反查进程,重点关注:

  • 新增公网监听;
  • 高风险公网端口;
  • 监听 owner 相对基线变化;
  • 可疑进程监听常见端口;
  • 防火墙状态辅助判断。

80 、443 、22 这类常见端口不会被无脑信任,也不会被无脑告警。
如果黑客伪装成常见端口上的服务,仍然会结合进程身份、路径、owner 、systemd 、hash 、出站连接等上下文分析。

6. 通知渠道

目前支持:

  • Telegram
  • Email SMTP
  • Webhook
  • ntfy
  • Gotify
  • Bark
  • ServerChan

通知内容支持中英文,并且会带上 VPS 名称,适合多台服务器同时部署。

7. 低资源占用

程序使用 Rust 编写,本地 SQLite 存储。
我在测试 VPS 上通过 systemd 运行,常驻内存大约 5MB 左右,具体会随系统环境和扫描数据略有变化。

安装方式

一键安装:

curl -fsSL https://raw.githubusercontent.com/cryptoli/vps-sentinel/main/install.sh -o install.sh
sudo sh install.sh

安装时启用 Telegram:

sudo TELEGRAM_BOT_TOKEN="<your-bot-token>" \
  TELEGRAM_CHAT_ID="<your-chat-id>" \
  TELEGRAM_MIN_SEVERITY=Medium \
  VPS_NAME="prod-web-1" \
  sh install.sh

安装完成后会自动创建:

/usr/local/bin/vps-sentinel
/usr/local/bin/vs

也就是说以后可以直接用简写:

sudo vs doctor
sudo vs scan
sudo vs reload

常用命令

检查运行环境:

sudo vs doctor --config /etc/vps-sentinel/config.toml

校验配置:

sudo vs config validate --config /etc/vps-sentinel/config.toml

执行一次扫描但不发送通知:

sudo vs scan --no-notify --config /etc/vps-sentinel/config.toml

测试通知渠道:

sudo vs notify test --config /etc/vps-sentinel/config.toml

修改配置后重载:

sudo vs reload --config /etc/vps-sentinel/config.toml

更新程序:

curl -fsSL https://raw.githubusercontent.com/cryptoli/vps-sentinel/main/update.sh -o update.sh
sudo sh update.sh

停止服务:

sudo vps-sentinel-stop

和哪吒监控的关系

哪吒监控适合看服务器在线状态和资源指标。
vps-sentinel 更适合做入侵信号监控。

二者关注点不同:

类型 关注点
哪吒监控 在线状态、CPU 、内存、流量、延迟
vps-sentinel 登录、进程、端口、持久化、关键文件、WebShell 、通知告警

我的建议是:

  • 如果你需要状态面板,可以继续用成熟监控工具;
  • 如果你担心 VPS 被登录、被植入后门、被加 SSH key 、被改 systemd/cron ,可以加一层 vps-sentinel
  • 不建议把主机入侵监控当普通 Docker 容器运行,因为普通容器默认只能看到容器自己的进程和文件系统,不能可靠监控宿主机。

哪吒事件给我们的提醒

这次事件不应该简单理解成“某个项目不能用”。真正的问题是:

只要一个系统拥有跨机器管理能力、远程执行能力或高权限 Agent ,它本身就必须被当成高价值攻击面来看待。

所以除了更新存在漏洞的软件,我们还应该关注这些问题:

  • 有没有异常 SSH 登录?
  • 有没有新增 SSH key ?
  • 有没有新增 systemd/cron 持久化?
  • 有没有异常公网监听?
  • 有没有可疑进程伪装成正常服务?
  • 有没有 WebShell 痕迹?
  • 有没有被植入挖矿或扫描工具?
  • 告警消息能不能第一时间发到手机?

这正是 vps-sentinel 想解决的问题。

项目地址

GitHub:

https://github.com/cryptoli/vps-sentinel

欢迎测试、提 issue 、提 PR 。
这个项目会继续围绕“低资源占用、低误报、可解释告警、适合普通 VPS 用户”方向优化。

0 条回复
添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: 857
发布: 2026-06-17
点赞: 0
回复: 0