Gopika-sri7/Suricata-Splunk-AI-SOAR-Pipeline
GitHub: Gopika-sri7/Suricata-Splunk-AI-SOAR-Pipeline
一个将 Suricata 告警经 Splunk 接入后由 AI 进行富化分析、再经分析师审批后自动执行防火墙封禁的 SOC 自动化管道。
Stars: 0 | Forks: 0
🛡️ SOC 告警调查与自动化响应 Dashboard
一个端到端的 Security Operations Center (SOC) 自动化 pipeline,使用 Suricata、Splunk、Python 和基于 AI 的 enrichment 来检测、分析和响应安全告警。
📖 概述
在真实的 SOC 环境中,分析师每个告警需要花费 15–20 分钟 —— 阅读原始日志、识别攻击类型、评估严重程度以及决定响应方式。本项目通过自动化分析流程,将这一过程缩短至几秒钟,同时保持由人工控制每一个响应操作。
该系统从 Suricata IDS 接收告警,使用 AI 模型(带有本地 fallback 引擎)对其进行 enrichment,通过 Streamlit dashboard 展示分析结果,并可在分析师批准后选择性执行防火墙规则。
🏗️ 架构
\[Suricata IDS]
│
▼
\[Splunk SIEM] ← 收集、索引并存储告警日志
│
▼
\[Python / Streamlit] ← 获取告警,提取关键字段
│
├──► \[AI Enrichment] ← MITRE 映射、严重性评分、建议操作
└──► \[Fallback Engine] ← AI 不可用时的基于规则的分类器
│
▼
\[Analyst Dashboard] ← 人工审查分析结果并批准操作
│
▼
\[Firewall Response] ← 通过 Windows Firewall (netsh) 选择性封禁 IP
│
▼
\[Audit Log] ← 记录所有操作以备审查
## ✨ 功能
| 功能 | 描述 |
|--------|-------------|
| 🔍 告警 Enrichment | 从 Suricata 日志中提取 IP 和攻击签名 |
| 🗺️ MITRE 映射 | 将告警映射到 ATT&CK 战术和技术 |
| 📊 严重性评分 | 生成严重性评分 (1–10) |
| 🔁 Fallback 引擎 | AI 故障时使用的基于规则的系统 |
| 👨💻 人工控制 | 分析师批准所有操作 |
| 🔥 防火墙集成 | 使用 Windows Firewall (netsh) 封禁 IP |
| 📋 审计追踪 | 记录所有带有时间戳的操作 |
## 🧱 技术栈
| 层级 | 技术 |
|------|------------|
| 网络检测 | Suricata IDS |
| SIEM | Splunk |
| 后端 | Python 3.8+ |
| Dashboard | Streamlit |
| AI Enrichment | Gemini / Claude API |
| 防火墙控制 | Windows Firewall (netsh) |
⚙️ 前置条件
在运行此项目之前,请确保您已安装并配置好以下内容:
Python 3.8 或更高版本
Suricata IDS(生成 eve.json 或 fast.log)
Splunk(已配置 Suricata 日志源)
有效的 Google Gemini 或 Anthropic Claude API 密钥
Windows 操作系统(用于防火墙响应功能)
🚀 快速开始
1\. 克隆代码库
bashgit clone https://github.com/your-username/soc-alert-dashboard.git
cd soc-alert-dashboard
2\. 安装依赖项
bashpip install streamlit splunk-sdk google-genai
3\. 设置环境变量
Windows (命令提示符):
cmdset SPLUNK\_HOST=localhost
set SPLUNK\_PORT=8089
set SPLUNK\_USERNAME=admin
set SPLUNK\_PASSWORD=your\_password
set GEMINI\_API\_KEY=your\_api\_key
Windows (PowerShell):
powershell$env:SPLUNK\_HOST = "localhost"
$env:SPLUNK\_PORT = "8089"
$env:SPLUNK\_USERNAME = "admin"
$env:SPLUNK\_PASSWORD = "your\_password"
$env:GEMINI\_API\_KEY = "your\_api\_key"
4\. 运行 dashboard
bashstreamlit run app.py
5\. 在浏览器中打开
http://localhost:8501
🔄 Pipeline 演练
第 1 步 — 检测:Suricata 监控网络流量并将告警(例如 SSH 暴力破解、端口扫描)写入 eve.json。
第 2 步 — 接入:Splunk 对 Suricata 日志进行索引,使其可被查询。
第 3 步 — 获取:Python 应用向 Splunk 查询最新的告警,并提取源 IP、目标 IP 和攻击签名。
第 4 步 — Enrichment:AI 模型分析告警并返回 MITRE ATT\&CK 映射、严重性评分和建议操作。如果 AI 服务不可用,本地 fallback 引擎将使用预定义的签名规则对威胁进行分类。
第 5 步 — 审查:分析师在 Streamlit dashboard 上查看经过 enrichment 的告警,并决定是封禁、监控还是忽略。
第 6 步 — 响应:如果获得批准,系统将运行 netsh 命令以封禁攻击者 IP,并将该操作记录在审计日志中。
🧠 本项目展示了
对 SOC 工作流和告警分流流程的理解
SIEM + IDS 集成(Splunk + Suricata)
基于 AI 的安全告警 enrichment 和分析
具有基于规则的 fallback 引擎的容错设计
在人工监督下的 incident response 自动化
安全的命令执行和审计日志记录
⚠️ 免责声明
这是一个为模拟 SOC 环境而构建的学习项目。它不适用于生产环境。
在采取任何行动之前,请务必审查 AI 生成的分析结果
未经核实告警,切勿封禁 IP 地址
防火墙命令需要管理员权限 —— 请负责任地使用
已在 Windows 上测试;Linux 防火墙集成(iptables/ufw)尚未实现
📄 许可证
本项目基于 MIT 许可证授权。有关详细信息,请参阅 LICENSE。
标签:Kubernetes, Metaprompt, Python, SOC自动化, Streamlit, Suricata, 安全运营, 扫描框架, 无后门, 现代安全运营, 自动化响应, 访问控制, 逆向工具