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

857 2026-06-17 15:51 1

从哪吒监控漏洞说起:我做了一个轻量级 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 用户”方向优化。

最新回复 (1)
  • feelinglucky 06-18 10:47
    1
    感谢!我试用下看看
* 帖子来源V2EX
返回