yatuk/soc-n8n-workflows

GitHub: yatuk/soc-n8n-workflows

该项目提供十个基于 n8n 的生产级 SOC 自动化工作流,覆盖告警分诊、IOC 富化、自动遏制和报告生成,帮助安全团队以低成本实现 SOAR 能力。

Stars: 4 | Forks: 0

🛡️ SOC n8n Workflows

十个基于 n8n 的生产级 SOAR 剧本 —— 分诊、富化、遏制、报告

License: MIT n8n 10 workflows No secrets Validation


检测
04 05 06 07 10
富化
01 02 03 08
响应
02 04 07 10
报告
03 05 06 08 09
暴力破解、漂移、
内部风险
VT · AbuseIPDB ·
LLM 判定
人工审批
遏制
摘要、简报、
KPI 报告

## 这是什么? 十个 n8n 工作流,涵盖了安全运营中心 (SOC) 的日常自动化范畴。每个工作流都可以直接导入 n8n(**Workflows → Import from File**),并附带各自的 README(测试 `curl`、MITRE ATT&CK 映射、生产环境说明)和 Mermaid 图表。 | # | 工作流 | 检测 | 富化 | 响应 | 报告 | LLM | 人工介入 | |---|----------|:---:|:---:|:---:|:---:|:---:|:---:| | 01 | [基于 LLM 判定的告警分诊](workflows/01-alert-triage-llm/) | | ✅ | | ✅ | ✅ | | | 02 | [钓鱼邮件分诊](workflows/02-phishing-email-triage/) | ✅ | ✅ | ✅ | | ✅ | | | 03 | [IOC 富化流水线](workflows/03-ioc-enrichment-pipeline/) | | ✅ | | ✅ | | | | 04 | [暴力破解 → 自动遏制](workflows/04-bruteforce-auto-containment/) | ✅ | ✅ | ✅ | | ✅ | ✅ | | 05 | [云配置错误漂移检测](workflows/05-cloud-misconfig-drift/) | ✅ | | | ✅ | | | | 06 | [CVE 监控与相关性过滤](workflows/06-cve-watch-relevance/) | ✅ | ✅ | | ✅ | ✅ | | | 07 | [凭证泄露监控](workflows/07-credential-leak-monitor/) | ✅ | | ✅ | | | | | 08 | [威胁情报源聚合器](workflows/08-threat-intel-aggregator/) | | ✅ | | ✅ | ✅ | | | 09 | [SOC 周报生成器](workflows/09-soc-report-generator/) | | | | ✅ | ✅ | | | 10 | [内部威胁 / 异常访问](workflows/10-insider-threat-detection/) | ✅ | | ✅ | | ✅ | | ## 架构 ``` SIEM / IdP / EDR / Email / Feeds │ (webhook / cron / IMAP) │ ┌──────────────────▼──────────────────┐ │ n8n │ │ normalize → enrich → decide → act │ │ │ │ │ │ │ Code VT/AIPDB LLM │ │ nodes Shodan verdict │ └──────┬───────────┬──────────┬───────┘ │ │ │ Slack Jira Mock EDR/IdP (notify) (ticket) (containment) ``` 所有十个剧本的共同模式:将原始供应商输入**标准化**为稳定的内部 schema,使用威胁情报进行**富化**,让确定性逻辑控制哪些数据可以到达 **LLM**(仅限于判定和摘要 —— 绝不用于遏制),并在执行任何破坏性操作前要求**人工审批**。 ### 示例:01 — 基于 LLM 判定的告警分诊 ``` flowchart LR A[/"Webhook
POST /siem-alert"/] --> B["Normalize Alert
(Splunk | Elastic → internal schema)"] B --> C{"Severity Gate"} C -- "informational" --> H["Archive
(no LLM call)"] C -- "≥ low" --> D["LLM Triage
Tier-2 analyst prompt"] D --> E["Parse & Validate Verdict
(fail ⇒ needs_review)"] E --> F{"Route by Verdict"} F -- "true_positive" --> G1["Slack: Escalate TP"] F -- "FP / benign" --> G2["Slack: FP Digest"] F -- "fallback" --> G3["Slack: Analyst Review"] G1 --> R[/"Respond to SIEM"/] G2 --> R G3 --> R H --> R ``` 格式错误的 LLM 响应只会路由到*分析师审查* —— 永远不会触发默认判定。 ### 示例:04 — 暴力破解 → 自动遏制(人工介入) ``` flowchart LR A[/"Webhook
Okta auth events"/] --> B["Detect Pattern
(brute force | spray)"] B --> C{"Detected?"} C -- "no" --> Z["End"] C -- "yes" --> D["AbuseIPDB
enrichment"] D --> E["LLM: attack
or false alarm?"] E --> F{"High confidence?"} F -- "no" --> G["Slack: analyst review
(no auto-action)"] F -- "yes" --> I["Slack: approval request"] I --> W["⏸ Wait node
(30m timeout ⇒ DENY)"] W --> K{"Approved?"} K -- "no" --> L["Slack: declined"] K -- "yes" --> M["EDR contain +
Okta suspend (mock)"] M --> O["Slack: executed"] ``` 自动化发起提议,指定人员批准,超时则不执行任何操作。每个工作流文件夹都有像这样的 `diagram.md`。 ## 快速开始 ### 1. 运行 n8n ``` docker run -it --rm -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n ``` ### 2. 导入与配置 通过 **Workflows → Import from File** 导入任意 `workflows/*/workflow.json`,然后创建节点所需的占位符凭证(例如 `VirusTotal API - PLACEHOLDER`)。完整列表见 [.env.example](.env.example)。 ### 3. 发送测试 payload ``` curl -X POST "http://localhost:5678/webhook/siem-alert" \ -H "Content-Type: application/json" \ -d '{"search_name":"ESCU - Encoded PowerShell","result":{"severity":"high","host":"WKS-042","user":"j.smith","src_ip":"10.20.14.55"}}' ``` ## 设计原则 | 原则 | 实践 | |---|---| | **LLM 提供建议,人类做出决定** | 没有任何模型输出会直接触发遏制;工作流 04 展示了审批网关(Wait 节点 + resume URL,超时 = 拒绝) | | **尽早标准化** | Splunk 和 Elastic 的数据结构在第一个 Code 节点中统一合并为一个内部 schema | | **可见的失败** | TI API 故障会降级为 `lookup_failed` 字段,绝不会静默丢弃告警 | | **事实胜于描述** | 数字和 IOC 始终来自 Code 节点;LLM 仅负责编写其周围的文字描述 | | **JSON 中无密钥** | 占位符凭证引用 + `*.example.com` 模拟 endpoint —— 由验证器强制执行 |
仓库结构 ``` soc-n8n-workflows/ ├── README.md ← you are here ├── ARCHITECTURE.md design decisions, n8n vs. XSOAR, honest limitations ├── LICENSE MIT ├── .env.example every credential, mapped to the workflows using it ├── workflows/ │ ├── 01-alert-triage-llm/ │ │ ├── workflow.json importable n8n export │ │ ├── README.md what/trigger/test/MITRE/production notes │ │ └── diagram.md mermaid flowchart │ └── ... (02–10, same structure) └── scripts/ └── validate-workflows.js ```
## 链接 | 资源 | 位置 | |---|---| | **设计决策与 n8n vs. XSOAR** | [ARCHITECTURE.md](ARCHITECTURE.md) | | **凭证模板** | [.env.example](.env.example) | | **工作流验证器** | [scripts/validate-workflows.js](scripts/validate-workflows.js) | | **许可证** | [LICENSE](LICENSE) (MIT) |
作为 SOC 自动化作品集构建 · n8n · MIT
标签:C2, Homebrew安装, n8n, SOAR, 大模型辅助分析, 威胁情报, 安全运营, 开发者工具, 扫描框架, 自动化剧本, 自定义脚本, 请求拦截