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, 上游代理, 交互式机器人, 人工审批, 力导向图, 安全告警, 安全工具集成, 安全运营中心, 安全防御评估, 工单管理, 网络映射, 请求拦截