Tester623/incident-response-playbook-engine
GitHub: Tester623/incident-response-playbook-engine
一个轻量级开源 SOAR 平台,让安全分析师通过可视化流程图创建并自动执行事件响应剧本,实时跟踪告警处置全流程。
Stars: 0 | Forks: 0
# 事件响应剧本引擎
[](https://python.org)
[](https://fastapi.tiangolo.com)
[](https://react.dev)
[](https://reactflow.dev)
[](https://en.wikipedia.org/wiki/Security_orchestration)
[](https://docker.com)
一个**轻量级 SOAR**(安全编排、自动化与响应)平台,安全分析师可以在其中以流程图的形式可视化地创建事件响应剧本,手动或根据传入的告警自动触发它们,并实时跟踪执行情况。
模拟企业级 SOAR 工具,如 Palo Alto XSOAR、Splunk SOAR 和 IBM Resilient。
## 架构
```
graph TB
subgraph Frontend["Frontend (React + Vite)"]
UI[Dashboard / Editor / Alert Queue]
RF[ReactFlow Visual Editor]
SSE[SSE Client]
end
subgraph Backend["Backend (FastAPI)"]
API[REST API]
ENG[Execution Engine]
TRIG[Trigger Service]
COND[Condition Evaluator]
AR[Action Runner]
end
subgraph Integrations["Mock Integrations"]
VT[VirusTotal]
ABUSE[AbuseIPDB]
FW[Firewall]
AD[Active Directory]
SNOW[ServiceNow]
SLACK[Slack]
EMAIL[Email]
EDR[CrowdStrike EDR]
end
subgraph Storage["Storage"]
DB[(SQLite)]
end
UI --> API
SSE -.->|Server-Sent Events| API
API --> ENG
API --> TRIG
ENG --> COND
ENG --> AR
AR --> Integrations
API --> DB
ENG --> DB
TRIG --> DB
```
## 剧本执行流程
```
sequenceDiagram
participant Alert
participant TriggerService
participant Engine
participant ActionRunner
participant ConditionEval
participant DB
participant SSE
Alert->>TriggerService: Incoming alert
TriggerService->>DB: Find matching playbook
TriggerService->>Engine: Start execution
Engine->>DB: Create execution record
Engine->>SSE: Emit "started"
loop For each step
alt Action Step
Engine->>ActionRunner: Run action
ActionRunner-->>Engine: Result + output
Engine->>DB: Update step result
Engine->>SSE: Emit "step_completed"
else Condition Step
Engine->>ConditionEval: Evaluate expression
ConditionEval-->>Engine: true/false
Engine->>SSE: Emit "step_completed"
else End Step
Engine->>DB: Mark complete
Engine->>SSE: Emit "completed"
end
end
```
## 功能
- **可视化剧本编辑器** - 使用 ReactFlow 的拖拽式流程图构建器
- **12 个模拟集成操作** - IP 富化、防火墙拦截、AD 操作、工单管理、通知
- **自动化告警分类** - 传入的告警根据类型和严重程度自动匹配剧本
- **实时执行跟踪** - Server-Sent Events 流式传输逐步进度
- **基于条件的分支** - 带有复合表达式 (AND/OR) 的 If/else 逻辑
- **5 个预构建剧本** - 钓鱼、暴力破解、恶意软件/C2、数据泄露、漏洞
- **15 个示例告警** - 预加载并在启动时自动触发
- **SOC 仪表盘** - 执行统计、成功率、MTTR 图表
- **操作库** - 所有可用操作的分类目录
- **JWT 身份验证** - 基于角色的访问权限(Admin / Analyst / Viewer),可选登录
- **审计日志** - 所有剧本、执行和告警操作的完整审计追踪
- **导出/导入剧本** - 支持 JSON 和 YAML 导出,实现跨实例移植
- **剧本复制** - 一键克隆现有剧本
- **告警去重** - 5分钟滑动窗口防止重复处理告警
- **步骤重试与超时** - 可为每个步骤配置重试次数和超时时间
- **并行步骤执行** - 用于并发执行操作的 Fork/join 模式
- **执行重试** - 从头重新运行失败或已取消的执行
- **WebSocket 支持** - 通过 SSE 和 WebSocket 进行实时更新
- **Toast 通知** - 为所有用户操作提供应用内反馈
- **过滤视图** - 对告警和剧本进行搜索、严重程度和状态过滤
## 快速开始
```
git clone https://github.com/yourusername/incident-response-playbook-engine.git
cd incident-response-playbook-engine
docker compose up
# 打开 http://localhost:3000
# Dashboard 会立即显示实时 executions
```
**零 API key。零配置。所有集成均在本地模拟。**
### 本地开发
**后端:**
```
cd backend
pip install -r requirements.txt
uvicorn main:app --reload --port 8000
```
**前端:**
```
cd frontend
npm install
npm run dev
```
## API 端点
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| `GET` | `/api/playbooks` | 列出所有剧本 |
| `GET` | `/api/playbooks/{id}` | 获取剧本及其步骤 |
| `POST` | `/api/playbooks` | 创建新剧本 |
| `PUT` | `/api/playbooks/{id}` | 更新剧本 |
| `DELETE` | `/api/playbooks/{id}` | 删除剧本 |
| `GET` | `/api/executions` | 列出执行记录 |
| `GET` | `/api/executions/{id}` | 获取执行详情 |
| `GET` | `/api/executions/{id}/live` | 用于实时更新的 SSE 流 |
| `POST` | `/api/executions/trigger` | 手动触发执行 |
| `POST` | `/api/executions/{id}/cancel` | 取消正在运行的执行 |
| `GET` | `/api/alerts` | 告警队列 |
| `POST` | `/api/alerts/ingest` | 接入新告警(自动触发) |
| `GET` | `/api/actions` | 操作库 |
| `GET` | `/api/analytics/summary` | 仪表盘统计 |
| `GET` | `/api/analytics/mttr` | 平均响应时间 |
| `POST` | `/api/auth/register` | 注册新用户 |
| `POST` | `/api/auth/login` | 登录(返回 JWT) |
| `GET` | `/api/auth/me` | 当前用户信息 |
| `GET` | `/api/audit` | 审计日志(可过滤) |
| `GET` | `/api/playbooks/{id}/export` | 导出剧本 (JSON/YAML) |
| `POST` | `/api/playbooks/import` | 导入剧本 |
| `POST` | `/api/playbooks/{id}/duplicate` | 复制剧本 |
| `POST` | `/api/executions/{id}/retry` | 重试失败的执行 |
| `WS` | `/api/executions/{id}/ws` | WebSocket 实时更新 |
## 预构建剧本
| 剧本 | 触发器 | 关键操作 |
|----------|---------|-------------|
| 钓鱼邮件响应 | `type=phishing` | IP 富化、防火墙拦截、工单管理 |
| 暴力破解 / 凭据攻击 | `type=brute_force` | IP 富化、AD 禁用、密码重置 |
| 恶意软件 / C2 通信 | `type=c2` | IP + 哈希富化、端点隔离、取证 |
| 疑似数据泄露 | `type=data_exfil` | IP 富化、隔离、漏洞扫描 |
| 漏洞扫描发现 | `type=vulnerability, severity=CRITICAL` | 工单管理、升级上报 |
## 测试
```
cd backend
python -m pytest tests/ -v
```
64 个测试涵盖:
- 条件评估器(比较、点路径、复合 AND/OR、边缘情况)
- 触发器服务(匹配逻辑、列表条件、多字段)
- 执行引擎(操作执行、分支、上下文累积、事件)
- API 端点(CRUD、告警接入、分析)
- 身份验证(注册、登录、JWT、角色)
- 审计日志(操作跟踪、过滤)
- 剧本功能(导出/导入 JSON+YAML、复制、搜索)
- 告警去重(滑动窗口)
- 执行重试(重新运行失败的执行)
### 默认凭据
| 用户名 | 密码 | 角色 |
|----------|----------|------|
| `admin` | `admin` | Admin |
| `analyst` | `analyst` | Analyst |
| `viewer` | `viewer` | Viewer |
身份验证是可选的 —— 该应用无需登录即可运行。
## 技术栈
| 层级 | 技术 |
|-------|-----------|
| 后端 | Python 3.11+、FastAPI、SQLAlchemy (异步)、SQLite |
| 前端 | React 18、Vite、TailwindCSS、ReactFlow、Recharts |
| 实时通信 | Server-Sent Events (SSE) |
| 容器化 | Docker、Docker Compose |
| 测试 | pytest、pytest-asyncio |
| CI | GitHub Actions |
## 展示的技能
- **安全编排、自动化与响应 (SOAR)** - 完整的剧本生命周期
- **剧本设计与自动化逻辑** - 带分支的可视化编辑器
- **事件响应工作流自动化** - 从告警分类到解决
- **ReactFlow 可视化编程接口** - 自定义节点类型、边路由
- **用于实时更新的 Server-Sent Events** - 实时执行跟踪
- **FastAPI 异步执行引擎** - 并发剧本执行
- **Docker 容器化** - 多服务 compose 设置
- **JWT 身份验证与 RBAC** - 基于角色的访问控制
- **审计追踪** - 完整的操作审计日志记录
- **告警去重** - 智能重复抑制
## 许可证
MIT
标签:AV绕过, FastAPI, React, SOAR, Syscalls, 剧本引擎, 可视化编排, 安全规则引擎, 请求拦截, 逆向工具