yatuk/soc-n8n-workflows
GitHub: yatuk/soc-n8n-workflows
该项目提供十个基于 n8n 的生产级 SOC 自动化工作流,覆盖告警分诊、IOC 富化、自动遏制和报告生成,帮助安全团队以低成本实现 SOAR 能力。
Stars: 4 | Forks: 0
🛡️ SOC n8n Workflows
十个基于 n8n 的生产级 SOAR 剧本 —— 分诊、富化、遏制、报告
检测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 ```
作为 SOC 自动化作品集构建 · n8n · MIT
标签:C2, Homebrew安装, n8n, SOAR, 大模型辅助分析, 威胁情报, 安全运营, 开发者工具, 扫描框架, 自动化剧本, 自定义脚本, 请求拦截