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, 安全运营, 工作流自动化, 扫描框架, 自动化响应, 请求拦截, 防火墙