Lollobar17/Homelab_SIEM
GitHub: Lollobar17/Homelab_SIEM
一个用 Python 和 Flask 构建的轻量级自托管 SIEM 系统,支持日志收集、威胁检测和实时仪表盘,专为家庭实验室和安全学习设计。
Stars: 0 | Forks: 0
# HomeLab SIEM
一个轻量级、自托管的**安全信息与事件管理**系统,使用纯 Python 构建。
旨在通过实践学习网络安全概念——日志收集、威胁检测以及实时仪表盘。




## 功能特性
| 功能 | 详情 |
|---|---|
| **日志收集** | 追踪本地文件 + 监听 UDP syslog (端口 5140) |
| **日志解析** | SSH/auth, Apache/Nginx 访问日志, kernel/dmesg, syslog |
| **威胁检测** | 规则引擎包含 8 条内置规则(SSH 暴力破解、SQLi、路径遍历等) |
| **MITRE ATT&CK** | 每条规则均映射到一个 MITRE 技术ID |
| **仪表盘** | 实时 Web UI — KPI、时间轴图表、警报表、事件流 |
| **REST API** | `/api/events`, `/api/alerts`, `/api/stats`, `/api/ingest` |
| **演示模拟器** | 无需真实 Linux 系统即可生成逼真的虚假日志 |
## 快速开始
```
# 1. Clone
git clone https://github.com/YOUR_USERNAME/homelab-siem.git
cd homelab-siem
# 2. 安装依赖 (Python 3.10+)
pip install -r requirements.txt
# 3. 运行 SIEM
python app.py
# 4. 打开仪表板
# http://localhost:5000
# 5. (可选) 在第二个终端中输入演示日志
python simulate_logs.py
```
`data/siem.db` SQLite 数据库会在首次运行时自动创建。
## 架构
```
┌──────────────────────────────────────────────────────┐
│ HomeLab SIEM │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ File Tailers │ │ UDP Syslog │ ← collectors │
│ │ (auth.log, │ │ (port 5140) │ │
│ │ nginx, …) │ └──────┬───────┘ │
│ └──────┬───────┘ │ │
│ └─────────┬────────┘ │
│ ▼ │
│ ┌────────────────┐ │
│ │ collector.py │ parse_log_line() │
│ │ (parser) │ │
│ └───────┬────────┘ │
│ ▼ │
│ ┌────────────────┐ │
│ │ detector.py │ analyze_event() │
│ │ (rule engine) │ → alerts[] │
│ └───────┬────────┘ │
│ ▼ │
│ ┌────────────────┐ │
│ │ storage.py │ SQLite │
│ │ (events + │ data/siem.db │
│ │ alerts DB) │ │
│ └───────┬────────┘ │
│ ▼ │
│ ┌────────────────┐ │
│ │ app.py │ Flask REST API │
│ │ + dashboard │ + HTML dashboard │
│ └────────────────┘ │
└──────────────────────────────────────────────────────┘
```
## API 参考
| 方法 | 端点 | 描述 |
|---|---|---|
| `GET` | `/api/stats` | KPI、时间轴、Top IP |
| `GET` | `/api/events?limit=N&category=auth` | 最近事件 |
| `GET` | `/api/alerts?limit=N&severity=HIGH` | 最近警报 |
| `GET` | `/api/rules` | 所有检测规则 |
| `POST` | `/api/ingest` | 手动接入日志行 |
| `GET` | `/api/health` | 健康检查 |
**接入示例:**
```
curl -X POST http://localhost:5000/api/ingest \
-H "Content-Type: application/json" \
-d '{"raw": "Failed password for root from 1.2.3.4 port 22 ssh2", "source": "myserver"}'
```
## 检测规则
| ID | 名称 | 严重程度 | MITRE |
|---|---|---|---|
| AUTH-001 | SSH 暴力破解 | HIGH | T1110 |
| AUTH-002 | Root 登录尝试 | HIGH | T1078 |
| AUTH-003 | 成功 Root 登录 | CRITICAL | T1078.003 |
| AUTH-004 | Sudo 权限提升 | MEDIUM | T1548.003 |
| WEB-001 | 目录遍历 | MEDIUM | T1083 |
| WEB-002 | Web 暴力破解 (4xx 泛洪) | MEDIUM | T1110 |
| WEB-003 | SQL 注入尝试 | HIGH | T1190 |
| SYS-001 | OOM Killer 已激活 | MEDIUM | – |
### 添加自定义规则
打开 `siem/detector.py` 并在 `RULES` 列表中添加条目:
```
{
"id": "CUSTOM-001",
"name": "My Rule",
"description": "Detects XYZ behaviour.",
"severity": "HIGH", # CRITICAL | HIGH | MEDIUM | LOW
"category": "auth",
"mitre": "T1234",
"match": lambda e: "badword" in e.get("raw","").lower(),
"threshold": None, # None = fire on every match
},
```
## 配置
编辑 `config.json`:
```
{
"syslog_enabled": true,
"syslog_port": 5140,
"watch_files": [
{ "path": "/var/log/auth.log", "name": "auth" }
],
"web_port": 5000
}
```
**从另一台主机发送 syslog:**
```
logger -n 127.0.0.1 -P 5140 --udp "test message from $(hostname)"
```
## 项目结构
```
homelab-siem/
├── app.py # Flask app + API routes
├── config.json # User configuration
├── requirements.txt
├── simulate_logs.py # Demo log generator
├── siem/
│ ├── __init__.py
│ ├── collector.py # File tailer + UDP syslog receiver + parser
│ ├── detector.py # Detection rule engine
│ └── storage.py # SQLite persistence layer
├── templates/
│ └── dashboard.html # Single-page web dashboard
└── data/
└── siem.db # Auto-created SQLite database
```
## 在演示模式下运行
如果你没有包含真实日志的 Linux 服务器:
```
# 终端 1 — 启动 SIEM
python app.py
# 终端 2 — 生成模拟事件
python simulate_logs.py --rate 2.0
```
模拟器会生成 SSH 攻击、Web 扫描、SQL 注入尝试等,让你能看到检测规则实时触发。
## 路线图
- [ ] 源 IP 的 GeoIP 查询
- [ ] Discord / Telegram 警报通知
- [ ] Docker Compose 设置
- [ ] 仪表盘 UI 中的规则编辑器
- [ ] CSV / JSON 导出
## 学习资源
如果你是网络安全新手并想深入学习:
- [MITRE ATT&CK](https://attack.mitre.org) — 对手战术与技术
- [TryHackMe](https://tryhackme.com) — 实战实验室
- [The Elastic SIEM Guide](https://www.elastic.co/what-is/siem)
## 许可证
MIT — 自由使用,学无止境。
标签:AMSI绕过, CISA项目, Cloudflare, Flask, MITRE ATT&CK, OISF, PB级数据处理, PE 加载器, Python, SQLite, SQL注入检测, SSH暴力破解检测, TCP/UDP协议, UDP Syslog, Web仪表盘, 信息收集自动化, 威胁检测, 安全信息和事件管理, 安全运维, 家庭实验室, 无后门, 日志管理, 网络安全, 网络安全审计, 自托管, 逆向工具, 速率限制, 隐私保护