SHAROZ221/SecFlow-Engine
GitHub: SHAROZ221/SecFlow-Engine
用 YAML 声明式 playbook 驱动的轻量 SOAR 引擎,自动化 SOC 告警分诊全流程(丰富、决策、隔离、建单、通知)。
Stars: 2 | Forks: 0
# SOAR-Lite Playbook 引擎
一个轻量级的 SOAR(安全编排、自动化与响应)
playbook 引擎,用于自动化 SOC 告警
分诊的重复性初始步骤:**丰富信息 → 决策 → 隔离 → 建单 → 通知**。
其构建理念旨在还原真实工具(Splunk SOAR、Shuffle、Tines)的运作方式:
playbook 以 YAML 声明式定义,并由 Python 引擎
针对传入的告警执行相应步骤。
## 为什么会有这个项目
大多数 SOC 告警分诊都遵循相同的人工模式:检查 IP
信誉,判断其严重程度,可能进行拦截,记录工单,
通知团队。本项目将该 pipeline 进行端到端自动化,因此
分析师只需审查/批准,而无需手动执行每一个步骤。
## 架构
```
Alert (JSON) --> Playbook Engine (main.py) --> playbook.yaml (defines steps)
|
+---------------+----------------+------------------+
| | | |
enrichment.py containment.py ticketing.py notify.py
(AbuseIPDB) (dry-run/live) (SQLite ticket (Telegram)
queue)
```
## 流程
1. **丰富信息** — 在 AbuseIPDB 中查询告警的源 IP
(滥用置信度分数、ISP、国家/地区、报告次数)。
2. **决策** — 将滥用分数映射为严重程度:`critical`
(>=75)、`medium` (>=25) 或 `low`。
3. **隔离** — 针对于 `critical` 告警,生成主机封禁
命令。**默认为试运行** — 它仅记录*将要*
执行的命令,而不会实际执行。提供了一个 `--live-contain` flag,用于
您确实希望其运行的实验环境。
4. **建单** — 为每个
到达此阶段的告警在本地 SQLite 队列中创建工单,无论其严重程度如何。
5. **通知** — 针对 `critical`/`medium`
严重程度的告警发送 Telegram 告警。
每次运行都会在 `evidence/` 目录下生成一份 JSON 运行日志,记录每个
步骤的输入/输出 — 这对于作为审计跟踪以及
作为您作品集/面试的实际工作证明非常有用。
## 设置
```
pip install -r requirements.txt
```
可选的环境变量(如果不提供这些变量,引擎也能正常运行,
将使用安全的模拟回退机制):
```
export ABUSEIPDB_API_KEY="your_key_here"
export TELEGRAM_BOT_TOKEN="your_bot_token"
export TELEGRAM_CHAT_ID="your_chat_id"
```
## 用法
```
python main.py --alert sample_alerts/sample_alert_malicious_ip.json
```
要实际执行隔离(仅限实验环境,需要 root 权限):
```
python main.py --alert sample_alerts/sample_alert_malicious_ip.json --live-contain
```
## 客观范围(它是什么以及不是什么)
- 隔离功能**默认为试运行,且在本 repo 中刻意未连接到
真实的防火墙/EDR** — 这是对
决策与执行逻辑的安全演示,而非生产级的隔离工具。
如果您稍后在自己的实验室中对真实的 iptables 规则测试了 `--live-contain`,请注意将其具体表述为“在隔离的
实验 VM 中进行过实机测试”,而不是暗示它已经具备了生产级的健壮性。
- 工单系统使用本地 SQLite 队列作为真实系统
(Jira/ServiceNow/GLPI)的替代。如果您想要演示真实的集成,将 `ticketing.py` 替换为 API 调用是
顺理成章的下一步。
- 只要您提供 AbuseIPDB key,信息丰富功能就是真实且实时的。
## 可能的扩展
- 添加第二个 playbook(例如,钓鱼邮件分诊:丰富发件人
域名信息,在 VirusTotal 中检查附件 hash,隔离
邮箱)。
- 将 SQLite 工单系统替换为真实的 Jira/GLPI API 调用。
- 添加一个 Flask 仪表板以查看运行日志和待处理的隔离
操作(与您其他项目中的仪表板模式保持一致)。
- 将 `--live-contain` 接入真实的隔离实验 VM 并截取
证据截图,就像您在 MiniNIDS 中所做的那样。
## 技术栈
Python、PyYAML、Requests、SQLite、AbuseIPDB API、Telegram Bot API。
标签:PB级数据处理, Python, SOAR, SOC告警分诊, 威胁情报, 字符串匹配, 安全运维, 开发者工具, 恶意代码分类, 无后门, 自动化响应, 逆向工具