AK11105/AI-driven-SIEM-System
GitHub: AK11105/AI-driven-SIEM-System
一个 AI 驱动的实时 SIEM 系统,整合 Kafka 流处理与混合注意力 LSTM 检测,解决海量日志的实时威胁监测与响应问题。
Stars: 5 | Forks: 1
# 🔐 AI驱动的SIEM系统
### 核心组件
| 组件 | 技术 | 用途 |
|-----------|------------|---------|
| **AI检测引擎** | PyTorch, LSTM自编码器 | 集成学习的先进异常检测 |
| **日志流式处理** | Apache Kafka, Filebeat | 实时日志收集与事件流 |
| **仪表板** | Next.js, React, Express.js | 交互式可视化与监控界面 |
| **日志解析器** | Python (BRAIN) | 智能日志结构识别与解析 |
| **API网关** | Express.js, REST | 组件间通信桥梁 |
## 🚀 快速开始
### 先决条件
- **Python 3.8+** 搭配 pip
- **Node.js 14+** 搭配 npm
- **Docker & Docker Compose**(推荐用于Kafka)
- **兼容CUDA的GPU**(可选,用于加速训练)
### 1️⃣ 安装
```
# 克隆仓库
git clone https://github.com/AK11105/AI-driven-SIEM-System.git
cd AI-driven-SIEM-System
# 安装 AI 模型的 Python 依赖项
cd model
pip install -r requirements.txt
# 安装仪表板依赖项
cd ../dashboard/frontend
npm install
cd ../backend
npm install
# 启动 Kafka 基础设施(用于实时流处理)
cd ../../logs-collection
docker-compose up -d
```
### 2️⃣ 快速演示
```
# 在示例 Linux 日志上运行异常检测
cd model
python src/logAnomalyDetection/run.py --input data/logs/raw/Linux_test.log
# 启动仪表板(在独立终端中)
cd dashboard/backend
npm start
cd dashboard/frontend
npm run dev
```
### 3️⃣ 访问仪表板
打开浏览器并导航至:
- **前端仪表板**: `http://localhost:3000`
- **后端API**: `http://localhost:5000`
- **Kafka UI**: `http://localhost:8080`(如使用 kafka-ui)
## 📖 使用指南
### 🔍 日志异常检测
#### 基本用法
```
# 完整流水线(解析 + 检测)
python src/logAnomalyDetection/run.py --input Linux_test.log
# 仅解析日志
python src/logAnomalyDetection/run.py --mode parse --input Linux_test.log
# 仅检测(使用现有解析数据)
python src/logAnomalyDetection/run.py --mode detect --use-existing-csv data/logs/processed/Linux.log_structured.csv
```
#### 检测模式
```
# 顺序异常检测(时间模式)
python src/logAnomalyDetection/run.py --processing-mode sequential --input Linux_test.log
# 基于内容的单个日志分析
python src/logAnomalyDetection/run.py --processing-mode single --input Linux_test.log
# 混合分析(推荐 - 结合两种方法)
python src/logAnomalyDetection/run.py --processing-mode both --input Linux_test.log
```
#### 多格式支持
```
# Apache 访问日志
python src/logAnomalyDetection/run.py --dataset Apache --input apache_access.log
# Windows 事件日志
python src/logAnomalyDetection/run.py --dataset Windows --input windows_event.log
# 使用自定义路径的自定义日志格式
python src/logAnomalyDetection/run.py \
--dataset Custom \
--input-dir /var/log/application/ \
--output-dir /data/processed/ \
--input app.log
```
### 🌐 仪表板集成
#### 基本集成
```
# 导出结果到仪表板(默认:localhost:5000)
python src/logAnomalyDetection/run.py --input Linux_test.log --export-to-express
# 自定义仪表板 URL
python src/logAnomalyDetection/run.py \
--input Linux_test.log \
--export-to-express \
--express-url http://your-dashboard:3000
# 测试仪表板连接
python src/logAnomalyDetection/run.py --test-express-connection
```
#### 生产部署
```
# 生产配置(自定义设置)
python src/logAnomalyDetection/run.py \
--config production.yml \
--input-dir /var/log/security/ \
--reports-dir /opt/siem/reports/ \
--export-to-express \
--express-url http://siem-dashboard:5000 \
--verbose
```
### 📡 实时日志流式处理
#### Kafka配置
```
# 启动 Kafka 基础设施
cd logs-collection
docker-compose up -d
# 为日志收集配置 Filebeat
sudo vim /etc/filebeat/filebeat.yml
sudo systemctl start filebeat
# 测试日志流处理
python3 log_consumer.py
```
#### 监控Kafka主题
```
# 访问 Kafka 容器
docker exec -it bash
# 检查传入日志
kafka-console-consumer --bootstrap-server localhost:9092 --topic system-logs --from-beginning
```
## ⚙️ 配置
### 模型配置 (`config.yml`)
```
# 神经网络架构
model:
hidden_dims: [16, 24, 32]
sequence_length: 8
attention_heads: 4
dropout_rate: 0.3
learning_rate: 0.001
# 训练参数
training:
batch_size: 32
epochs: 50
validation_split: 0.15
early_stopping_patience: 5
# 严重性阈值
severity:
low_percentile: 85
medium_percentile: 95
high_percentile: 99
critical_percentile: 99.9
# 处理选项
processing:
enable_gpu: true
parallel_workers: 4
cache_preprocessed: true
# 输出配置
output:
save_reports: true
export_format: ["json", "csv"]
include_visualizations: true
```
### Kafka配置 (`docker-compose.yml`)
```
version: '3.8'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.0.1
environment:
ZOOKEEPER_CLIENT_PORT: 2181
kafka:
image: confluentinc/cp-kafka:7.0.1
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_AUTO_CREATE_TOPICS_ENABLE: true
kafka-ui:
image: provectuslabs/kafka-ui:latest
ports:
- "8080:8080"
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
```
## 🧠 AI模型细节
### 混合注意力LSTM自编码器
核心AI引擎结合了多种方法的复杂神经架构:
#### **序列路径**
- **双向LSTM编码器**:双向处理日志序列以获得全面的时序理解
- **多头自注意力**:4个注意力头聚焦于日志关系的不同方面
- **LSTM解码器**:带批归一化的序列重建,用于稳定训练
#### **单个日志路径**
- **多层感知机**:在不使用时序上下文的情况下分析单个日志内容
- **渐进式维度约简**:高效压缩日志特征
- **基于内容的特征提取**:日志消息的语义分析
#### **融合层**
- **学习式组合**:自动平衡序列与单个分析
- **一致性损失**:确保两个路径生成兼容的表示
- **集成策略**:多种模型配置实现稳健检测
### 检测能力
| 异常类型 | 示例 | 严重性级别 |
|--------------|----------|-----------------|
| **内存错误** | 内存不足、内存泄漏 | 低 → 严重 |
| **认证** | 登录失败、权限提升 | 中等 → 严重 |
| **文件系统** | 磁盘满、权限错误 | 低 → 高 |
| **网络** | 连接超时、DNS故障 | 低 → 高 |
| **系统严重** | 内核恐慌、服务崩溃 | 高 → 严重 |
## 📊 性能指标
### 检测性能
- **精确率**: 94.2%(基于Linux系统日志验证)
- **召回率**: 91.8%(全面的异常覆盖)
- **F1分数**: 93.0%(平衡性能)
- **误报率**: <5%(生产就绪精度)
### 计算性能
- **训练时间**: ~30分钟(GPU),~2小时(CPU)
- **推理延迟**: <100毫秒每日志批次
- **内存使用**: 4GB RAM(典型数据集)
- **吞吐量**: 1000+日志/秒(实时处理)
### 可扩展性
- **水平扩展**: Kafka分区用于分布式处理
- **垂直扩展**: GPU加速用于密集型工作负载
- **存储**: 可配置的日志保留策略
- **监控**: 内置性能指标与健康检查
## 🐳 Docker部署
### 完整系统部署
```
# 构建所有服务
docker-compose up --build
# 扩展特定服务
docker-compose up --scale ai-model=2 --scale kafka=3
# 生产部署
docker-compose -f docker-compose.prod.yml up -d
```
### 单个服务容器
```
# AI 模型容器
FROM python:3.9-slim
WORKDIR /app
COPY model/ .
RUN pip install -r requirements.txt
CMD ["python", "src/logAnomalyDetection/run.py", "--config", "production.yml"]
# 仪表板容器
FROM node:16-alpine
WORKDIR /app
COPY dashboard/ .
RUN npm install && npm run build
CMD ["npm", "start"]
```
## 🔧 API参考
### 核心检测API
```
from model import HybridEnsembleDetector
# 初始化检测器
detector = HybridEnsembleDetector(config="config.yml")
# 在历史数据上训练
detector.train('data/logs/processed/Linux.csv')
# 实时检测
results = detector.predict('new_logs.csv', mode='hybrid')
# 保存部署包
detector.save_deployment_package('production_model.pkl')
```
### REST API端点
| 端点 | 方法 | 描述 | 示例 |
|----------|--------|-------------|---------|
| `/api/detect` | POST | 提交日志以进行分析 | `{"logs": ["log1", "log2"]}` |
| `/api/status` | GET | 系统健康检查 | `{"status": "healthy"}` |
| `/api/metrics` | GET | 性能指标 | `{"accuracy": 0.942}` |
| `/api/config` | GET/PUT | 配置管理 | 配置JSON |
### 仪表板API集成
```
// Real-time anomaly updates
const ws = new WebSocket('ws://localhost:5000/ws');
ws.onmessage = (event) => {
const anomaly = JSON.parse(event.data);
updateDashboard(anomaly);
};
// Fetch historical data
const response = await fetch('/api/anomalies?timerange=24h');
const data = await response.json();
```
## 🔍 故障排除
### 常见问题
#### 🚨 模型加载错误
```
# 验证 PyTorch 安装
python -c "import torch; print(torch.__version__)"
# 检查 CUDA 可用性
python -c "import torch; print(torch.cuda.is_available())"
# 验证模型文件权限
ls -la model.pkl
```
#### 🌐 仪表板连接问题
```
# 测试 API 连接性
curl -X GET http://localhost:5000/health
# 检查服务状态
docker-compose ps
# 查看服务日志
docker-compose logs dashboard
```
#### ⚡ 性能优化
```
# 启用 GPU 加速
export CUDA_VISIBLE_DEVICES=0
# 增加批量大小以提高吞吐量
python src/logAnomalyDetection/run.py --config high-performance.yml
# 监控系统资源
nvidia-smi -l 1 # GPU usage
htop # CPU/Memory usage
```
#### 📡 Kafka问题
```
# 检查 Kafka 集群状态
docker exec kafka kafka-topics --bootstrap-server localhost:9092 --list
# 监控消费者延迟
docker exec kafka kafka-consumer-groups --bootstrap-server localhost:9092 --describe --group log-consumers
# 重置消费者组(如需要)
docker exec kafka kafka-consumer-groups --bootstrap-server localhost:9092 --group log-consumers --reset-offsets --to-earliest --all-topics --execute
```
### 日志分析与调试
```
# 启用详细日志记录
python src/logAnomalyDetection/run.py --input logs.txt --verbose
# 检查系统日志
tail -f /var/log/ai-siem-system.log
# 监控实时性能
watch -n 1 'docker stats --no-stream'
```
## 🔮 高级特性
### 自定义模型训练
```
# 使用自定义超参数训练
detector = HybridEnsembleDetector({
'hidden_dims': [32, 48, 64],
'learning_rate': 0.0005,
'ensemble_size': 5
})
# 实现自定义损失函数
def custom_anomaly_loss(reconstruction, original, severity_weights):
base_loss = F.mse_loss(reconstruction, original)
weighted_loss = base_loss * severity_weights
return weighted_loss.mean()
```
### 实时流式处理
```
# Kafka 消费者用于实时处理
from kafka import KafkaConsumer
import json
consumer = KafkaConsumer(
'system-logs',
bootstrap_servers=['localhost:9092'],
value_deserializer=lambda x: json.loads(x.decode('utf-8'))
)
for message in consumer:
log_data = message.value
anomaly_score = detector.predict_single(log_data)
if anomaly_score > threshold:
send_alert(log_data, anomaly_score)
```
## 🤝 贡献
### 开发环境设置
```
# 分叉并克隆仓库
git clone https://github.com/your-username/AI-driven-SIEM-System.git
cd AI-driven-SIEM-System
# 创建开发环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows
# 安装开发依赖项
pip install -r requirements-dev.txt
# 运行测试
pytest tests/ --cov=src/
# 代码格式化
black src/
flake8 src/
```
### 贡献指南
1. **Fork** 该仓库
2. **创建** 功能分支 (`git checkout -b featureamazing-feature`)
3. **提交** 更改 (`git commit -m 'Add amazing feature'`)
4. **推送** 到分支 (`git push origin feature/amazing-feature`)
5. **打开** 拉取请求
## 📄 许可证
本项目根据 **MIT 许可证** 授权 - 详见 [LICENSE](LICENSE) 文件。
## 🏆 感谢
- **PyTorch团队** 提供的深度学习框架
- **Apache软件基金会** 提供的Kafka流处理平台
- **BRAIN** 提供的日志解析灵感
- **安全研究社区** 提供的数据集与基准
## 📞 支持与联系
### 🐛 错误报告与功能请求
- **GitHub Issues**: [创建问题](https://github.com/AK11105/AI-driven-SIEM-System/issues)
- **安全漏洞**: 请直接邮件联系维护者
### 💬 社区与讨论
- **GitHub Discussions**: [加入讨论](https://github.com/AK11105/AI-driven-SIEM-System/discussions)
- **文档**: [详细指南](https://github.com/AK11105/AI-driven-SIEM-System/wiki)
### 👥 维护者
- **Atharva Kulkarni** - [@AK11105](https://github.com/AK11105)
- **Darshan Atkari** - [@atkaridarshan04](https://github.com/atkaridarshan04)
**一个集成了基于日志的异常检测、实时Kafka事件流和交互式仪表板可视化的综合性网络安全解决方案。**
[](https://python.org)
[](https://pytorch.org)
[](https://nodejs.org)
[](https://kafka.apache.org)
[](LICENSE)
*通过统一日志异常检测、严重性分析、类型分类和集中式安全管理,实现可扩展的实时威胁监控与响应。*
## 🌟 关键特性
### 🧠 先进的AI驱动检测
- **混合注意力LSTM自编码器**:集成学习实现更优的异常检测
- **多模态分析**:序列模式检测 + 单个日志内容分析
- **动态严重性评估**:自适应阈值学习
- **实时处理**:亚100毫秒推理延迟
### 📊 全面的日志支持
- **多格式兼容性**:Linux、Apache、Windows、Syslog及自定义日志格式
- **智能解析**:具备自动结构识别的脑日志解析器
- **特征工程**:TF-IDF向量化与语义分析
- **时序分析**:滑动窗口方法用于攻击序列检测
### 🔄 实时流式处理与集成
- **Apache Kafka集成**:用于实时日志流和事件处理
- **Filebeat采集**:从多源自动收集日志
- **交互式仪表板**:实时可视化与监控
- **RESTful API**:与现有安全基础设施无缝集成
### 🎯 生产就绪架构
- **可扩展设计**:企业级部署能力
- **灵活配置**:基于YAML的配置管理
- **Docker支持**:容器化部署,便于扩展
- **监控与告警**:内置性能指标与健康监控
## 🏗️ 系统架构
### 核心组件
| 组件 | 技术 | 用途 |
|-----------|------------|---------|
| **AI检测引擎** | PyTorch, LSTM自编码器 | 集成学习的先进异常检测 |
| **日志流式处理** | Apache Kafka, Filebeat | 实时日志收集与事件流 |
| **仪表板** | Next.js, React, Express.js | 交互式可视化与监控界面 |
| **日志解析器** | Python (BRAIN) | 智能日志结构识别与解析 |
| **API网关** | Express.js, REST | 组件间通信桥梁 |
## 🚀 快速开始
### 先决条件
- **Python 3.8+** 搭配 pip
- **Node.js 14+** 搭配 npm
- **Docker & Docker Compose**(推荐用于Kafka)
- **兼容CUDA的GPU**(可选,用于加速训练)
### 1️⃣ 安装
```
# 克隆仓库
git clone https://github.com/AK11105/AI-driven-SIEM-System.git
cd AI-driven-SIEM-System
# 安装 AI 模型的 Python 依赖项
cd model
pip install -r requirements.txt
# 安装仪表板依赖项
cd ../dashboard/frontend
npm install
cd ../backend
npm install
# 启动 Kafka 基础设施(用于实时流处理)
cd ../../logs-collection
docker-compose up -d
```
### 2️⃣ 快速演示
```
# 在示例 Linux 日志上运行异常检测
cd model
python src/logAnomalyDetection/run.py --input data/logs/raw/Linux_test.log
# 启动仪表板(在独立终端中)
cd dashboard/backend
npm start
cd dashboard/frontend
npm run dev
```
### 3️⃣ 访问仪表板
打开浏览器并导航至:
- **前端仪表板**: `http://localhost:3000`
- **后端API**: `http://localhost:5000`
- **Kafka UI**: `http://localhost:8080`(如使用 kafka-ui)
## 📖 使用指南
### 🔍 日志异常检测
#### 基本用法
```
# 完整流水线(解析 + 检测)
python src/logAnomalyDetection/run.py --input Linux_test.log
# 仅解析日志
python src/logAnomalyDetection/run.py --mode parse --input Linux_test.log
# 仅检测(使用现有解析数据)
python src/logAnomalyDetection/run.py --mode detect --use-existing-csv data/logs/processed/Linux.log_structured.csv
```
#### 检测模式
```
# 顺序异常检测(时间模式)
python src/logAnomalyDetection/run.py --processing-mode sequential --input Linux_test.log
# 基于内容的单个日志分析
python src/logAnomalyDetection/run.py --processing-mode single --input Linux_test.log
# 混合分析(推荐 - 结合两种方法)
python src/logAnomalyDetection/run.py --processing-mode both --input Linux_test.log
```
#### 多格式支持
```
# Apache 访问日志
python src/logAnomalyDetection/run.py --dataset Apache --input apache_access.log
# Windows 事件日志
python src/logAnomalyDetection/run.py --dataset Windows --input windows_event.log
# 使用自定义路径的自定义日志格式
python src/logAnomalyDetection/run.py \
--dataset Custom \
--input-dir /var/log/application/ \
--output-dir /data/processed/ \
--input app.log
```
### 🌐 仪表板集成
#### 基本集成
```
# 导出结果到仪表板(默认:localhost:5000)
python src/logAnomalyDetection/run.py --input Linux_test.log --export-to-express
# 自定义仪表板 URL
python src/logAnomalyDetection/run.py \
--input Linux_test.log \
--export-to-express \
--express-url http://your-dashboard:3000
# 测试仪表板连接
python src/logAnomalyDetection/run.py --test-express-connection
```
#### 生产部署
```
# 生产配置(自定义设置)
python src/logAnomalyDetection/run.py \
--config production.yml \
--input-dir /var/log/security/ \
--reports-dir /opt/siem/reports/ \
--export-to-express \
--express-url http://siem-dashboard:5000 \
--verbose
```
### 📡 实时日志流式处理
#### Kafka配置
```
# 启动 Kafka 基础设施
cd logs-collection
docker-compose up -d
# 为日志收集配置 Filebeat
sudo vim /etc/filebeat/filebeat.yml
sudo systemctl start filebeat
# 测试日志流处理
python3 log_consumer.py
```
#### 监控Kafka主题
```
# 访问 Kafka 容器
docker exec -it
**⭐ 如果您发现此项目有用,请考虑给它一颗星!⭐**
*用心为网络安全专业人士和研究人员打造*
标签:AMSI绕过, Apache Kafka, Apex, Filebeat, GNU通用公共许可证, Kafka流处理, LSTM, Node.js, Python, PyTorch, RESTful API, TF-IDF, 事件流, 互联网扫描, 人工智能安全, 凭据扫描, 可视化仪表盘, 合规性, 威胁检测, 幻觉检测, 异常检测, 提示词优化, 无后门, 日志汇聚, 日志解析, 机器学习, 注意力机制, 滑动窗口, 生产级架构, 网络安全, 自动编码器, 证书伪造, 请求拦截, 逆向工具, 隐私保护