MdShafiurRahman0/n8n-SOC-Incident-Response-Automator

GitHub: MdShafiurRahman0/n8n-SOC-Incident-Response-Automator

基于 n8n 构建的 SOC 事件响应自动化工作流,实现 Wazuh 告警到 Slack 交互审批再到 Jira 工单创建的端到端联动。

Stars: 0 | Forks: 0

# 交互式 SOC 自动化:通过 n8n 实现 Wazuh 到 Slack 再到 Jira 的联动 ## 📌 概述 本项目实现了一个带有“人机协同”审批流程的高级安全编排、自动化与响应 (SOAR) 工作流。 在 **Wazuh** 中触发的安全警报会被发送到 **n8n** webhook。随后,n8n 会格式化并向 **Slack** 发送一条带有“批准”和“拒绝”按钮的交互式消息。如果 SOC 工程师点击“批准”,n8n 将自动在 **Jira** 中创建一个高优先级的工单,以便立即进行事件响应。 ## 🚀 前置条件 * 已安装 **Docker**。 * 正在运行 **Wazuh Manager**。 * 拥有 **Slack Workspace**,并具备创建应用和使用交互功能的权限。 * 拥有 **Jira Software** 账号及 API token。 ## 🛠️ 分步实施指南 ### 第 1 步:n8n Docker 设置 使用 Docker 在本地运行 n8n。在终端中执行以下命令: ``` docker run -it --rm \ --name n8n \ -p 5678:5678 \ -e N8N_ENFORCEMENT_AGREEMENT=true \ -v n8n_data:/home/node/.n8n \ n8nio/n8n ``` ### 第 2 步:为 Slack 应用配置交互功能 要在 Slack 中使用按钮,您需要在 Slack 应用中启用交互功能。 1. 前往 [Slack API Dashboard](https://api.slack.com/apps) 并创建一个应用(例如:`SOC-Alert-Bot`)。 2. 在 **OAuth & Permissions** 下添加 `chat:write` 权限范围,并将该应用安装到您的工作区。 3. 复制 **Bot User OAuth Token**(`xoxb-...`)。 4. 在左侧菜单中转到 **Interactivity & Shortcuts**,并将其切换为 **ON**。 5. 您需要在此处粘贴一个 **Interactivity Request URL**(我们将在第 4 步中从 n8n 获取此 URL)。 ### 第 3 步:配置 Jira API 访问 1. 登录您的 Atlassian/Jira 账号。 2. 前往 **Account Settings > Security > Create and manage API tokens**。 3. 创建新的 API token 并复制它。保存您的 Jira 电子邮件地址和此 token,以备 n8n 凭据使用。 ### 第 4 步:构建 n8n 工作流 在浏览器中打开 `http://localhost:5678` 上的 n8n,并创建以下流水线: **1. 主 Webhook(来自 Wazuh):** * 添加一个 **Webhook** 节点。方法设置为:`POST`。复制测试 URL。 **2. Slack 节点(发送交互式消息):** * 连接一个 **Slack** 节点。使用您的 Bot Token 进行身份验证。 * 设置 Resource: `Message`,Operation: `Post`。 * 在 **Blocks**(Block Kit)部分,将其配置为发送警报详情和两个交互式按钮:“批准”(值为:`approved`)和“拒绝”(值为:`declined`)。 **3. 辅助 Webhook(Slack 交互回调):** * 添加第二个 **Webhook** 节点。方法设置为:`POST`。 * 复制此 webhook 的 URL,并将其粘贴到您的 Slack 应用设置(来自第 2 步)的 **Interactivity Request URL** 字段中。 **4. IF 节点(决策逻辑):** * 在辅助 Webhook 之后连接一个 **IF** 节点。 * 条件:检查来自 Slack 按钮点击的传入 payload 是否等于 `approved`。 **5. Jira 节点(创建工单):** * 将一个 **Jira Software** 节点连接到 IF 节点的 `True` 输出。 * 使用您的 Jira 电子邮件和 API token 进行身份验证。 * Resource: `Issue`,Operation: `Create`。 * 设置 Project Key、Issue Type(例如:`Bug` 或 `Task`)、Priority(`High`),并将 Wazuh 警报详情映射到 Summary 和 Description 字段。 ### 第 5 步:配置 Wazuh 以触发 n8n 将以下集成代码块添加到您的 Wazuh Manager 的 `ossec.conf` 文件中,以将警报(Level 7 及以上)转发到您的主 Webhook。 ``` custom-n8n http://YOUR_N8N_IP:5678/webhook/YOUR_PRIMARY_WEBHOOK_ID 7 json ``` *重启 Wazuh manager 以应用更改。* ### 第 6 步:测试流水线 向您的主 n8n webhook 发送一个测试 cURL 请求,以模拟 Wazuh 警报: ``` curl -X POST http://localhost:5678/webhook-test/YOUR_PRIMARY_WEBHOOK_ID \ -H "Content-Type: application/json" \ -d '{ "rule": {"description": "Multiple authentication failures", "level": 10}, "agent": {"name": "Database-Server"} }' ``` 您应该会收到一条带有按钮的 Slack 消息。点击“批准”将触发辅助 webhook 并创建一个 Jira 工单! ## 👨‍💻 作者 **Md. Shafiur Rahman** * GitHub: [@MdShafiurRahman0](https://github.com/MdShafiurRahman0) * Email: shafiur.rahman.shadat@gmail.com
标签:DevSecOps, Docker, Human-in-the-loop, IT运维, Jira, LIDS, n8n, Slack, SOAR, Socks5代理, SOC自动化, Wazuh, Webhook, 上游代理, 交互式机器人, 人工审批, 力导向图, 安全告警, 安全工具集成, 安全运营中心, 安全防御评估, 工单管理, 网络映射, 请求拦截