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, 安全运营, 扫描框架, 无后门, 现代安全运营, 自动化响应, 访问控制, 逆向工具