exploiter33/suricata-soc-platform

GitHub: exploiter33/suricata-soc-platform

基于 Suricata、ClickHouse、Grafana 和 n8n 构建的开源 SOC 分析平台,集成网络入侵检测、威胁可视化、自动化响应与威胁狩猎能力。

Stars: 0 | Forks: 0

# Suricata SOC 平台 ![仪表盘预览](https://static.pigsec.cn/wp-content/uploads/repos/cas/12/120331cf3b529673835339785d151e3d9bcc049c3873c42e4362d96feec224d0.png) ## 架构 ``` Suricata (host) ──→ eve.json │ [Vector] ──→ [ClickHouse] ←── [Grafana] │ [n8n SOAR] (auto-block, Slack, ticket creation) ``` | 组件 | 用途 | 部署方式 | |---|---|---| | **Suricata** | 网络 IDS/IPS — 生成 alert、HTTP、DNS 日志 | 运行在宿主机上 | | **Vector** | 日志转发器 — 读取 `eve.json`,解析并发送到 ClickHouse | Docker | | **ClickHouse** | 列式分析数据库 — 存储所有告警数据 | Docker | | **Grafana** | 可视化 — 包含 3 个预置 SOC 仪表盘,使用 ClickHouse 查询 | Docker | | **n8n** | SOAR 自动化 — 自动封禁 IP,Slack 告警,创建工单 | Docker | ## 功能 ### SOC 仪表盘 (Grafana) - **告警概览** — 严重程度分布、热门特征码、告警时间轴、热门源 IP、协议分布 - **威胁情报** — 可疑 DNS 查询、恶意软件下载、罕见出站连接 - **事件时间轴** — 7 天告警热力图、事件钻取、源 IP 聚类 ### 检测规则 (Suricata) - **`sid:1000001`** — SSH 暴力破解阈值(60 秒内失败 5 次) - **`sid:1000002`** — 非标准端口上的出站信标 - **`sid:1000003`** — ICMP 泛洪 / 大包检测 - **`sid:1000004-6`** — 针对可疑 TLD 的 DNS 查询 (.xyz / .top / .tk) - **`sid:1000007`** — HTTP 可执行文件下载检测 ### SOAR 工作流 (n8n) - **自动封禁 IP** — 接收 webhook,执行 iptables 封禁,通知 Slack - **Slack 上报** — 格式化告警数据并发送至安全频道 - **工单创建** — 根据高危告警生成事件工单 ### 自动化工具 - `tools/suricata-rule-manager.py` — 从 CLI 启用/禁用/测试规则 - `tools/ioc-extractor.py` — 根据时间窗口和严重程度从 eve.json 中提取 IOC - `tools/report-generator.py` — 查询 ClickHouse 并生成执行摘要报告 ### 事件响应 Playbook - `playbooks/port-scan.md` — 扫描事件的分诊、遏制和升级 (T1046) - `playbooks/ssh-brute-force.md` — 处理撞库和 SSH 暴力破解 (T1110) - `playbooks/malware-c2-beacon.md` — 检测和遏制命令与控制流量 (T1071) ### 威胁狩猎查询 所有查询均映射到 MITRE ATT&CK 框架: - `queries/port-scan-detection.sql` — T1046 - `queries/brute-force-spike.sql` — T1110 - `queries/suspicious-traffic.sql` — T1071, T1105, T1568 - `queries/MITRE-MAPPING.md` — 完整的技术到检测的映射表 ### 攻击模拟 - `scripts/simulate-attacks.sh` — 轻量级 nmap、hydra、ping、curl 探测 - 在 Suricata 中生成真实告警,用于实时演示截图 ## 前置条件 - **操作系统:** Linux (已在 Ubuntu / Kali 上测试) - **Suricata** 已安装并运行: `sudo apt install suricata` - **Docker + Docker Compose:** `sudo apt install docker.io docker-compose-v2` - **Python 3.8+** 且安装了 `clickhouse-driver` (用于报告生成器) ## 快速开始 ### 1. 克隆并配置 ``` git clone https://github.com/exploiter33/suricata-soc-platform.git cd suricata-soc-platform cp .env.example .env # 如果需要,使用您的密码编辑 .env ``` ### 2. 部署 Docker Stack ``` docker compose up -d ``` 这将启动:ClickHouse, Vector, Grafana (端口 3000), n8n (端口 5678)。 ### 3. 加载自定义 Suricata 规则 如果正在运行实时 Suricata: ``` sudo cp suricata/custom.rules /etc/suricata/rules/ # 在 /etc/suricata/suricata.yaml 的 rule-files 下添加: # - custom.rules sudo systemctl restart suricata ``` ### 4. 处理 PCAP (离线重放) 无需实时 Suricata 环境。使用以下命令处理包含的 pcap 文件: ``` # 一次性处理所有 pcap: ./scripts/replay-attacks.sh # 或者处理单个 pcap: ./scripts/replay-attacks.sh pcaps/lokibot.pcap ``` 这将对每个 pcap 离线运行 `suricata -r`,并通过 Vector → ClickHouse 发送结果。 ### 5. 实时攻击模拟 (可选) 如果您在宿主机上运行了实时 Suricata: ``` chmod +x scripts/simulate-attacks.sh sudo ./scripts/simulate-attacks.sh all ``` ### 6. 打开 Grafana 导航至 [http://localhost:3000](http://localhost:3000) - 登录信息:`admin` / `admin` (或您在 `.env` 中设置的密码) - 转到 Dashboards → SOC — Alerts Overview ### 7. 生成报告 ``` pip install clickhouse-driver python tools/report-generator.py --hours 24 ``` ## 运行工具 ``` # 列出所有自定义 Suricata 规则 sudo python tools/suricata-rule-manager.py list # 禁用规则 sudo python tools/suricata-rule-manager.py disable 1000007 # 测试规则是否在近期触发 sudo python tools/suricata-rule-manager.py test 1000001 # 从过去 48 小时提取 IOC(severity 1-2) python tools/ioc-extractor.py --last-h 48 --min-severity 2 # 生成执行报告 python tools/report-generator.py --hours 168 --output report.md ``` ## 证据库 | 检测项 | 截图 | |---|---| | **告警概览** | ![告警概览](https://static.pigsec.cn/wp-content/uploads/repos/cas/12/120331cf3b529673835339785d151e3d9bcc049c3873c42e4362d96feec224d0.png) | | **事件时间轴** | ![事件时间轴](https://raw.githubusercontent.com/exploiter33/suricata-soc-platform/main/evidence/incident-timeline.png) | | **威胁情报** | ![威胁情报](https://static.pigsec.cn/wp-content/uploads/repos/cas/0c/0c1c373e61f3b5e02ad9adf060ea14ae660a982ae957b99288948e94d05488d2.png) | | **检测逻辑** | [detection-logic.md](evidence/detection-logic.md) | ## MITRE ATT&CK 覆盖范围 | 战术 | 技术 | |---|---| | 侦察 | T1046, T1595 | | 凭证访问 | T1110, T1110.001, T1110.002 | | 命令与控制 | T1071.001, T1071.004, T1568 | | 防御规避 | T1572 | | 执行 | T1105 (通过工具下载监控) | 完整映射请见 [queries/MITRE-MAPPING.md](queries/MITRE-MAPPING.md)。 ## 展示技能 | 技能 | 本项目中的证据 | |---|---| | **SIEM 运营** | ClickHouse + Grafana pipeline,日志摄取,仪表盘创建 | | **检测工程** | 7 条自定义 Suricata 规则 + SQL 狩猎查询 | | **事件响应** | 3 个结构化 IR playbook (NIST 800-61 风格) | | **MITRE ATT&CK** | 每个检测都映射到具体技术 ID | | **自动化 / SOAR** | 用于封禁/上报/工单的 n8n 工作流 | | **取证 / IOC** | 从原始 eve.json 中提取 IOC | | **报告** | 执行摘要生成器 | | **日志分析** | Vector pipeline 将 JSON 日志解析为结构化表格 | | **Linux / Docker** | 完全基于 compose 的部署 | ## 未来增强计划 - [ ] 集成 MISP 以实现威胁情报 feed 的自动摄取 - [ ] 添加 Velociraptor 用于端点工件收集 - [ ] 部署 Sigma 规则转换器以提供额外的检测逻辑 - [ ] 添加 TheHive 进行案件管理集成 - [ ] 通过 n8n 实现邮件告警 ## 许可证 MIT
标签:Grafana仪表盘, Metaprompt, SIEM架构, SOAR, 多线程, 安全运营, 安全运营中心, 扫描框架, 版权保护, 网络映射, 请求拦截, 逆向工具