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绕过, 网络安全, 自动响应, 规则引擎, 访问控制, 请求拦截, 逆向工具, 防护系统, 隐私保护