AK11105/AI-driven-SIEM-System

GitHub: AK11105/AI-driven-SIEM-System

一个 AI 驱动的实时 SIEM 系统,整合 Kafka 流处理与混合注意力 LSTM 检测,解决海量日志的实时威胁监测与响应问题。

Stars: 5 | Forks: 1

# 🔐 AI驱动的SIEM系统
**一个集成了基于日志的异常检测、实时Kafka事件流和交互式仪表板可视化的综合性网络安全解决方案。** [![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://python.org) [![PyTorch](https://img.shields.io/badge/PyTorch-1.9+-red.svg)](https://pytorch.org) [![Node.js](https://img.shields.io/badge/Node.js-14+-green.svg)](https://nodejs.org) [![Kafka](https://img.shields.io/badge/Apache%20Kafka-2.8+-orange.svg)](https://kafka.apache.org) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](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 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)
**⭐ 如果您发现此项目有用,请考虑给它一颗星!⭐** *用心为网络安全专业人士和研究人员打造*
标签:AMSI绕过, Apache Kafka, Apex, Filebeat, GNU通用公共许可证, Kafka流处理, LSTM, Node.js, Python, PyTorch, RESTful API, TF-IDF, 事件流, 互联网扫描, 人工智能安全, 凭据扫描, 可视化仪表盘, 合规性, 威胁检测, 幻觉检测, 异常检测, 提示词优化, 无后门, 日志汇聚, 日志解析, 机器学习, 注意力机制, 滑动窗口, 生产级架构, 网络安全, 自动编码器, 证书伪造, 请求拦截, 逆向工具, 隐私保护