Lollobar17/Homelab_SIEM

GitHub: Lollobar17/Homelab_SIEM

一个用 Python 和 Flask 构建的轻量级自托管 SIEM 系统,支持日志收集、威胁检测和实时仪表盘,专为家庭实验室和安全学习设计。

Stars: 0 | Forks: 0

# HomeLab SIEM 一个轻量级、自托管的**安全信息与事件管理**系统,使用纯 Python 构建。 旨在通过实践学习网络安全概念——日志收集、威胁检测以及实时仪表盘。 ![Python](https://img.shields.io/badge/Python-3.10+-3776AB?style=flat&logo=python&logoColor=white) ![Flask](https://img.shields.io/badge/Flask-3.0-black?style=flat&logo=flask) ![SQLite](https://img.shields.io/badge/Storage-SQLite-003B57?style=flat&logo=sqlite) ![License](https://img.shields.io/badge/License-MIT-green?style=flat) ## 功能特性 | 功能 | 详情 | |---|---| | **日志收集** | 追踪本地文件 + 监听 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仪表盘, 信息收集自动化, 威胁检测, 安全信息和事件管理, 安全运维, 家庭实验室, 无后门, 日志管理, 网络安全, 网络安全审计, 自托管, 逆向工具, 速率限制, 隐私保护