docs: 更新README以添加项目介绍和快速开始指南
This commit is contained in:
parent
0eb4da3bcd
commit
1b64532406
132
README.md
132
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 集成)
|
||||
Loading…
Reference in New Issue
Block a user