推翻重做的VigilGoGuard,更符合工程规范
Go to file
wuko233 7a85688719 fix: 更新配置文件URL以使用新的端口和API版本 2026-03-13 15:13:53 +08:00
cmd/sysmonitord fix: 更新配置文件URL以使用新的端口和API版本 2026-03-13 15:13:53 +08:00
internal fix: 彻底修复拼写错误 2026-03-13 15:12:19 +08:00
.gitignore fix: 修复函数名称拼写错误并更新.gitignore文件 2026-03-13 08:47:14 +08:00
go.mod chore: 添加fsnotify依赖以支持文件系统通知功能 2026-02-16 18:23:43 +08:00
go.sum chore: 添加fsnotify依赖以支持文件系统通知功能 2026-02-16 18:23:43 +08:00
README.md docs: 更新README以添加项目介绍和快速开始指南 2026-02-17 11:27:52 +08:00

SysMonitord - 轻量级 Linux 安全终端探针

SysMonitord 是一个基于 Go 语言开发的轻量级主机安全监控代理HIDS/EDR Agent。它采用白名单机制来监控文件系统的完整性,结合实时 SSH 审计与系统状态采集,通过 WebSocket 与中心服务器保持实时通讯。

设计目标:低资源占用、高灵敏度、配置动态下发。

核心特性

  • 🛡️ 文件完整性防护 (FIM)

    • 白名单引擎:基于文件 Hash (SHA256) 的白名单校验,拒绝未授权的二进制文件。
    • 双模感知
      • 实时监听 (Watcher):基于 inotify,毫秒级感知文件创建、修改、删除。
      • 主动巡逻 (Scanner):周期性全盘扫描,具备 CPU 负载避让 机制CPU > 50% 自动休眠),防止影响业务。
  • 🔌 动态配置与通讯

    • 远程配置:启动时通过 HTTP 拉取最新的官方策略(白名单)和用户配置。
    • 双通道长连接
      • 控制通道:与中心服务器保持 WebSocket 连接,上报状态和接收指令。
      • 审计通道:独立的 WebSocket 连接用于传输敏感日志(如 SSH 登录记录)。
    • 断线重连:内置指数退避算法,网络波动自动恢复。
  • 👁️ 行为审计

    • SSH 监控:实时分析 /var/log/securejournald,捕获异常登录尝试。
    • 资源监控:实时采集 CPU、内存、磁盘 IO 等系统指标。

🛠️ 架构概览

graph TD
    A[启动 Start] --> B[下载配置 HTTP]
    B --> C[初始化白名单引擎 Whitelist Manager]
    C --> D{启动子系统}
    D --> E[网络客户端 Network Client]
    D --> F[感知系统 Sensor]
    D --> G[监控系统 Monitor]

    E --> |WebSocket| H[中心服务器]
    E --> |WebSocket| I[审计服务器]

    F --> |inotify| J[实时监听 Watcher]
    F --> |Walk| K[周期扫描 Scanner]
  
    G --> L[SSH 分析器]
    G --> M[性能采集器]

    J & K & L & M --> |Alert/Metrics| E

🚀 快速开始

环境要求

  • 操作系统: Linux (依赖 inotify/proc 文件系统)
  • 权限: root (用于读取系统日志及遍历关键目录)
  • 构建环境: Go 1.18+

1. 编译项目

# 下载依赖
go mod tidy

# 编译二进制文件
go build -o sysmonitord cmd/sysmonitord/main.go

2. 运行

由于涉及系统底层文件监控,建议使用 sudo 运行:

sudo ./sysmonitord

⚙️ 配置说明

程序启动时会请求两个 JSON 配置文件。你需要开发一个简单的 HTTP Server 来提供这些 JSON。

1. 官方配置 (Official Config)

用于定义“什么是合法的”。

{
  "hash_whitelist": {
    "/usr/bin/ls": "sha256_hash_value_here",
    "/usr/sbin/nginx": "sha256_hash_value_here"
  },
  "ignored_paths": [
    "/tmp/logs",
    "/var/cache"
  ],
  "update_interval": 3600
}

2. 用户配置 (User Config)

用于定义运行时行为。

{
  "audit_server_url": "ws://audit.example.com/ws",
  "reporting_interval": 60,
  "alert_threshold": 5
}

📂 项目结构

sysmonitord/
├── cmd/
│   └── sysmonitord/   # 程序入口
│       └── main.go
├── internal/
│   ├── config/        # 配置结构体定义
│   ├── monitor/       # SSH 日志分析与系统资源采集
│   ├── network/       # HTTP 加载器与 WebSocket 客户端
│   ├── scanner/       # 文件扫描 (Scanner) 与实时监听 (Watcher)
│   └── whitelist/     # 核心白名单判定逻辑
├── go.mod
└── README.md

🗓️ 开发计划 (Roadmap)

  • 基础框架搭建
  • 核心白名单逻辑实现
  • 网络通信层 (HTTP/WebSocket)
  • 文件扫描与实时监控集成
  • 后端控制台开发 (接收上报数据并可视化)
  • 主动防御能力 (发现恶意文件自动隔离/删除)
  • 一键安装脚本 (Systemd 集成)