Shafiyullah/SIEM-Cyber

GitHub: Shafiyullah/SIEM-Cyber

基于大语言模型和机器学习的开源 SIEM 系统,支持实时日志分析、异常检测和自动化威胁缓解。

Stars: 0 | Forks: 0

# 🛡️ Sentinel-AI SIEM 系统 欢迎使用 **Next-Gen AI SIEM**(安全信息与事件管理)项目。该系统使用 Python 构建,旨在通过利用机器学习、大型语言模型和先进的规则引擎,实时收集、分析和检测系统日志中的异常,从而保护您的基础设施安全。 该项目近期已**从原型升级为生产级应用**,具备健壮的错误处理、安全的凭证管理、异步处理以及微服务 Docker 架构。 ## 🚀 主要特性 * **⚡ 高性能异步架构:** 基于 FastAPI、`asyncio` 和 `aiohttp` 构建。能够在不阻塞事件循环的情况下处理海量日志摄入。 * **🧠 LLM 驱动的威胁情报:** 利用大型语言模型(Gemini/Ollama)执行启发式上下文分析,解释日志背后的*意图*并提供可操作的建议。 * **🔮 机器学习异常检测:** 使用 `scikit-learn` 的孤立森林算法实时检测偏离基线系统行为的情况。 * **🚨 有状态规则引擎:** 使用滑动时间窗口跟踪基于频率的威胁(例如暴力破解、撞库、权限提升),以防止告警疲劳。 * **🛑 自动化缓解:** *Sentinel-AI* 主动拦截严重威胁,通过专用的即发即弃缓解子系统,模拟 IAM 撤销和 IP 级防火墙封锁。 * **📊 可观测性与存储:** * **Elasticsearch:** 用于取证搜索和历史数据关联的主要持久化存储(强制执行 TLS)。 * **Splunk 集成:** 异步 HTTP 事件收集器 (HEC) 转发,以便在 Splunk Enterprise 中进行原生探索。 * **Streamlit Dashboard:** 一个实时的、毛玻璃风格指挥中心,用于监控威胁和查看 AI 洞察。 ## 🏗️ 架构栈 * **核心逻辑:** Python 3.11+ * **API 层:** FastAPI, Uvicorn, Pydantic * **数据科学:** Pandas, NumPy, Scikit-Learn, VADER Sentiment * **基础设施:** Docker Compose, Elasticsearch (Async), Splunk * **UI:** Streamlit, Altair ## 📥 安装与快速开始 ### 前置条件 * **Docker Desktop:** [在此下载](https://www.docker.com/products/docker-desktop/) * **Git:** [在此下载](https://git-scm.com/downloads) ### 1. 克隆仓库 ``` git clone https://github.com/Shafiyullah/siem-cyber.git cd siem-cyber ``` ### 2. 配置环境 应用程序严格通过环境变量进行管控,以防止意外泄露机密。 1. 复制提供的安全模板: cp .env.example .env 2. 在文本编辑器中打开 `.env` 并填写您的实际机密、API 密钥和密码。 3. *注意:如果关键变量(如 `API_KEY`)缺失,系统将拒绝启动。* ### 3. 使用 Docker Compose 运行 在隔离的 Docker 网络中启动整个微服务栈(SIEM 引擎、Elasticsearch 和 Splunk): ``` docker-compose up --build -d ``` *请等待约 60 秒,让 Elasticsearch 和 Splunk 完全初始化并通过健康检查。* ## 🎮 使用指南 ### 1. 访问界面 Docker 容器运行正常后,您可以访问以下服务: * **Sentinel-AI API 文档:** `http://localhost:8001/docs` *(需要您在 `.env` 中设置的 `API_KEY`)* * **Streamlit 指挥中心:** `http://localhost:8501` * **Splunk Enterprise:** `http://localhost:8000` *(使用 `admin` 和您的 `SPLUNK_PASSWORD` 登录)* * **Elasticsearch(健康检查):** `https://localhost:9200` *(如果您禁用了 TLS,则为 `http://`)* ### 2. 模拟日志摄入 默认情况下,收集器会跟踪您的 `LOG_SOURCES` 环境变量中定义的文件(例如 `./test_logs.txt`)。 通过向测试日志文件追加内容来触发暴力破解规则: ``` echo "2026-01-01T12:00:00 Failed password for invalid user from 192.168.1.50 port 22 ssh2" >> test_logs.txt echo "2026-01-01T12:00:01 Failed password for invalid user from 192.168.1.50 port 22 ssh2" >> test_logs.txt echo "2026-01-01T12:00:02 Failed password for invalid user from 192.168.1.50 port 22 ssh2" >> test_logs.txt echo "2026-01-01T12:00:03 Failed password for invalid user from 192.168.1.50 port 22 ssh2" >> test_logs.txt echo "2026-01-01T12:00:04 Failed password for invalid user from 192.168.1.50 port 22 ssh2" >> test_logs.txt ``` ### 3. 获取告警 查询 API 以获取处理后的安全告警: ``` curl -H "X-API-Key: " "http://localhost:8001/alerts?severity=high&limit=10" ``` ## 🔒 安全态势 * **机密管理:** 无硬编码凭证。通过 `Config` 验证强制使用 `.env` 文件。 * **认证:** API 路由通过常量时间密钥比较(`secrets.compare_digest`)进行保护。 * **输入验证:** 严格的 Pydantic 模型,具有路径遍历防护和负载大小限制,以防止 DoS。 * **网络隔离:** Docker 服务在专用桥接网络(`siem-net`)上运行。 * **纵深防御:** 支持数据库连接的 TLS 强制执行能力(`ES_USE_TLS`)。 ## 🛠️ 故障排除 * **容器崩溃(`siem-api` 不断重启):** 最常见的原因是 `.env` 文件缺失或无效。请检查日志:`docker logs siem-api`。 * **Splunk 连接错误:** 确保 `.env` 中的 `SPLUNK_HEC_TOKEN` 与您在 Splunk UI 中配置的令牌完全匹配。 * **Elasticsearch 验证失败:** 如果您在开发环境中设置了 `ES_USE_TLS=true` 但没有适当的证书,请在 `.env` 中将其设置为 `false` 并重启。 ## 🤝 贡献 欢迎贡献、提出问题和功能请求! *为网络安全倾注 ❤️ 打造。*
标签:AI风险缓解, Apex, AV绕过, DLL 劫持, Docker, Elasticsearch, FastAPI, Gemini, Kubernetes, LLM, LLM评估, Ollama, PB级数据处理, PE 加载器, Python, SOAR, Streamlit, TCP/UDP协议, Unmanaged PE, 云计算, 人工智能, 大语言模型, 威胁情报, 安全运维, 安全防御评估, 开发者工具, 异常检测, 异构计算, 异步编程, 无后门, 机器学习, 用户模式Hook绕过, 网络安全, 自动响应, 规则引擎, 访问控制, 请求拦截, 逆向工具, 防护系统, 隐私保护