From 1b645324067f5059c4d47772d03ae91e726123d6 Mon Sep 17 00:00:00 2001 From: wuko233 Date: Tue, 17 Feb 2026 11:27:52 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0README=E4=BB=A5?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A1=B9=E7=9B=AE=E4=BB=8B=E7=BB=8D=E5=92=8C?= =?UTF-8?q?=E5=BF=AB=E9=80=9F=E5=BC=80=E5=A7=8B=E6=8C=87=E5=8D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 132 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 122 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d8a1ef8..683c6a9 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,131 @@ -# sysmonitord +# SysMonitord - 轻量级 Linux 安全终端探针 -重写VigilGoGuard,更符合工程规范 +`SysMonitord` 是一个基于 Go 语言开发的轻量级主机安全监控代理(HIDS/EDR Agent)。它采用**白名单机制**来监控文件系统的完整性,结合实时 SSH 审计与系统状态采集,通过 WebSocket 与中心服务器保持实时通讯。 -多线程支持、更加模块化,以及... +设计目标:**低资源占用、高灵敏度、配置动态下发。** -## ToDo +## ✨ 核心特性 -1. 用户登录监控 (ssh, su, sudo) +- **🛡️ 文件完整性防护 (FIM)** + - **白名单引擎**:基于文件 Hash (SHA256) 的白名单校验,拒绝未授权的二进制文件。 + - **双模感知**: + - **实时监听 (Watcher)**:基于 `inotify`,毫秒级感知文件创建、修改、删除。 + - **主动巡逻 (Scanner)**:周期性全盘扫描,具备 **CPU 负载避让** 机制(CPU > 50% 自动休眠),防止影响业务。 -2. 进程监控 (异常进程、资源占用) +- **🔌 动态配置与通讯** + - **远程配置**:启动时通过 HTTP 拉取最新的官方策略(白名单)和用户配置。 + - **双通道长连接**: + - **控制通道**:与中心服务器保持 WebSocket 连接,上报状态和接收指令。 + - **审计通道**:独立的 WebSocket 连接用于传输敏感日志(如 SSH 登录记录)。 + - **断线重连**:内置指数退避算法,网络波动自动恢复。 -3. 文件监控 (关键文件变更) +- **👁️ 行为审计** + - **SSH 监控**:实时分析 `/var/log/secure` 或 `journald`,捕获异常登录尝试。 + - **资源监控**:实时采集 CPU、内存、磁盘 IO 等系统指标。 -4. 网络连接监控 +## 🛠️ 架构概览 -5. 系统资源监控 (CPU、内存、磁盘) +```mermaid +graph TD + A[启动 Start] --> B[下载配置 HTTP] + B --> C[初始化白名单引擎 Whitelist Manager] + C --> D{启动子系统} + D --> E[网络客户端 Network Client] + D --> F[感知系统 Sensor] + D --> G[监控系统 Monitor] -6. 安全事件报警 + 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. 编译项目 + +```bash +# 下载依赖 +go mod tidy + +# 编译二进制文件 +go build -o sysmonitord cmd/sysmonitord/main.go +``` + +### 2. 运行 + +由于涉及系统底层文件监控,建议使用 `sudo` 运行: + +```bash +sudo ./sysmonitord +``` + +## ⚙️ 配置说明 + +程序启动时会请求两个 JSON 配置文件。你需要开发一个简单的 HTTP Server 来提供这些 JSON。 + +### 1. 官方配置 (Official Config) +用于定义“什么是合法的”。 + +```json +{ + "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) +用于定义运行时行为。 + +```json +{ + "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) + +- [x] 基础框架搭建 +- [x] 核心白名单逻辑实现 +- [x] 网络通信层 (HTTP/WebSocket) +- [x] 文件扫描与实时监控集成 +- [ ] **后端控制台开发** (接收上报数据并可视化) +- [ ] **主动防御能力** (发现恶意文件自动隔离/删除) +- [ ] **一键安装脚本** (Systemd 集成) \ No newline at end of file