通过以下 Referral 链接购买 DigitalOcean 主机,你将可以帮助 V2EX 持续发展
DigitalOcean - SSD Cloud Servers
857
V2EX  ›  VPS

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

  •  
  •   857 · 17h 38m ago · 220 views

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

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5197 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 81ms · UTC 01:30 · PVG 09:30 · LAX 18:30 · JFK 21:30
    ♥ Do have faith in what you're doing.