sysmonitord/README.md

131 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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/secure``journald`,捕获异常登录尝试。
- **资源监控**:实时采集 CPU、内存、磁盘 IO 等系统指标。
## 🛠️ 架构概览
```mermaid
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. 编译项目
```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 集成)