bareeraahmed/soc-automation-playbooks
GitHub: bareeraahmed/soc-automation-playbooks
基于 Wazuh、n8n 和 pfSense 的开源自动化事件响应预案,通过工作流编排实现常见安全告警的自动分类与处置,减少 SOC 分析师的手动干预。
Stars: 0 | Forks: 0
# 自动化 SOC 预案 — n8n · Wazuh · pfSense
将 Wazuh SIEM 告警连接到 n8n 工作流自动化和 pfSense 防火墙操作的自动化事件响应预案 —— 消除常见威胁场景的手动分类,并实现实时的事件驱动响应。
## 我所构建的内容
从零开始安装并配置了完整的 Wazuh 部署 —— 设置了 Wazuh Manager,注册了 agent,并编写了针对暴力破解、提权模式和可疑进程执行的自定义检测规则。调整了告警阈值,在保持检测准确性的同时减少了误报噪音。
在自动化方面,构建了由 Wazuh webhook 直接触发的 n8n 工作流。当规则在定义的严重性阈值之上触发时,n8n 会提取告警 payload,解析相关字段,并执行相应的预案 —— 对于已覆盖的场景,全程无需人工干预。
集成了 pfSense 作为执行层。根据不同的预案,n8n 会通过其 API 将防火墙规则更改推送到 pfSense —— 自动拦截违规 IP、隔离网段,或向通知通道触发告警。
**已实现的预案:**
- 暴力破解检测 → 通过 pfSense 自动拦截源 IP + 告警通知
- 多个账户反复身份验证失败 → 触发账户锁定 + SOC 通知
- 端点上的可疑 PowerShell 执行 → 进程告警升级,并将完整的上下文传递给下游
- 高危 Wazuh 规则违规 → 自动创建工单 + 打包证据以移交给分析师
## 架构
```
Wazuh Agent (endpoint)
│
▼
Wazuh Manager (detects, fires alert)
│
▼ webhook
n8n Workflow Engine (parses alert, decides playbook)
│
┌────┴────┐
▼ ▼
pfSense Notification
(block IP) (Slack / Email)
```
## 前置条件
- Ubuntu 20.04 / 22.04 服务器 (Wazuh Manager)
- Wazuh 4.x (Manager + 至少一个 Agent)
- n8n (通过 Docker 或 Node.js 自托管)
- pfSense 2.6+ 且安装了 API package
- Wazuh Manager 节点至少需要 4GB RAM
## 安装与设置
### Wazuh Manager
使用官方助手脚本安装 Wazuh:
```
curl -sO https://packages.wazuh.com/4.7/wazuh-install.sh
sudo bash wazuh-install.sh -a
```
安装完成后,验证 manager 是否正在运行:
```
sudo systemctl status wazuh-manager
```
### 2. 部署 Wazuh Agent (在要监控的端点上)
在目标机器上:
```
curl -sO https://packages.wazuh.com/4.7/wazuh-agent_4.7.0-1_amd64.deb
sudo dpkg -i wazuh-agent_4.7.0-1_amd64.deb
```
在 `/var/ossec/etc/ossec.conf` 中设置你的 manager IP:
```
YOUR_MANAGER_IP
```
启动 agent:
```
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent
```
### 3. 加载自定义检测规则
将本仓库中的自定义规则复制到 Wazuh 的本地规则文件中:
```
sudo cp rules/local_rules.xml /var/ossec/etc/rules/local_rules.xml
sudo systemctl restart wazuh-manager
```
规则已在内联中添加了文档说明 —— 每个规则都包含一条注释,解释了它检测的内容以及为何要将阈值设置在该位置。
### 4. 配置 Wazuh Webhook 集成
将以下内容添加到 `/var/ossec/etc/ossec.conf` 以将告警推送到 n8n:
```
custom-webhook
http://YOUR_N8N_IP:5678/webhook/wazuh-alerts
7
json
```
保存后重启 manager。
### 5. 自托管 n8n
使用 Docker:
```
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
```
在 `http://localhost:5678` 访问 n8n 编辑器。
### 6. 导入预案工作流
在 n8n 中,转到 **Settings → Import from File** 并导入本仓库 `/workflows` 目录中的工作流 JSON 文件。每个文件都是一个独立的预案。
在激活之前,请更新每个工作流中的以下凭据字段:
- pfSense API URL 和 key
- 通知通道 webhook (Slack/email SMTP)
### 7. 配置 pfSense API
从 pfSense package manager 安装 pfSense API package,然后在 **System → API** 下生成 API key。将这些值添加到每个工作流的 n8n pfSense 节点中。
## 仓库结构
```
/
├── rules/
│ └── local_rules.xml # Custom Wazuh detection rules
├── workflows/
│ ├── brute-force-block.json
│ ├── auth-failure-escalation.json
│ ├── powershell-alert.json
│ └── high-severity-ticket.json
├── docs/
│ └── architecture.md # Detailed design decisions
└── README.md
```
## 测试预案
手动触发暴力破解预案并验证 pipeline 是否端到端正常工作:
```
# 在受监控的 agent 上模拟重复失败的 SSH 登录
for i in {1..10}; do ssh invaliduser@localhost; done
```
查看 n8n 的执行日志 —— 你应该能看到 webhook 触发、工作流执行,并且 pfSense 拦截规则在几秒钟内出现。
## 为什么这很重要
手动告警分类是安全运营中最大的瓶颈之一。本项目展示了如何使用开源工具以低成本应用 SOAR 原则 —— 这与 Splunk SOAR 和 Microsoft Sentinel 等企业级平台中使用的架构模式相同,且无需支付许可费用。
## 角色与贡献
独立实施者。负责全栈工作:Wazuh 安装和 agent 部署、自定义规则编写、n8n 工作流设计和 webhook 配置、pfSense API 集成,以及全部四个预案的端到端测试。
## 许可证
MIT
标签:Homebrew安装, n8n, pfSense, Wazuh, 安全运营, 工作流自动化, 扫描框架, 自动化响应, 请求拦截, 防火墙