# SentriX IDS **Repository Path**: JCUTSEC/SentriX-IDS ## Basic Information - **Project Name**: SentriX IDS - **Description**: 灵枢智能入侵检测系统 (SentriX IDS) 是基于软件定义网络 (SDN) 的智能网络安全监控平台,集成 Snort3 实时流量分析、Ryu 控制器 SDN 管理、DeepSeek API AI 分析及可视化 Web 界面,提供网络监控、入侵检测、智能分析与系统管理等完整功能。 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 15 - **Forks**: 4 - **Created**: 2025-04-25 - **Last Updated**: 2025-09-01 ## Categories & Tags **Categories**: security-dev **Tags**: Flask, MySQL ## README # 灵枢智能入侵检测系统 (SentriX IDS) 基于软件定义网络(SDN)的智能入侵检测系统,集成深度学习模型实现实时网络流量监控、异常检测和智能负载均衡。 ## 📖 项目简介 灵枢智能入侵检测系统(SentriX IDS)是一个基于SDN架构的下一代入侵检测解决方案。系统采用CNN-LSTM深度学习模型进行流量分析,结合DDQN强化学习算法实现智能负载均衡,为网络安全提供全方位的防护能力。 系统具备实时流量监控、多维度攻击检测、智能告警处理、可视化监控界面等核心功能,适用于企业网络、数据中心、云环境等复杂网络场景的安全防护。 ## 🚀 核心特性 - **智能入侵检测**: 集成CNN-LSTM深度学习模型,支持多种攻击类型识别 - **实时流量监控**: 基于SDN的实时网络流量分析和可视化 - **智能负载均衡**: 采用DDQN强化学习算法实现动态负载均衡 - **多维度检测**: 支持DDoS、端口扫描、异常流量等多种攻击检测 - **可视化界面**: 现代化Web管理界面,实时监控网络状态 - **自动告警**: 智能告警机制,支持邮件、Webhook等多种通知方式 - **流量分析**: 深度包检测,支持协议分析和行为建模 ## 🏗️ 系统架构 ``` c4-sdnids/ ├── c4-system/ # 后端核心系统 │ ├── ControlLayer/ # SDN控制器层 (Ryu) │ ├── DataLayer/ # 网络数据层 (Mininet) │ └── APILayer/ # API接口层 (Flask + AI模型) ├── c4-ui/ # 前端管理界面 (Vue.js) └── config/ # 配置文件 ``` ### 架构说明 - **控制层**: 基于Ryu的SDN控制器,负责网络策略下发和流量调度 - **数据层**: Mininet网络仿真环境,支持自定义拓扑和流量生成 - **应用层**: Flask Web服务,集成AI模型和业务逻辑 - **前端层**: Vue.js单页应用,提供直观的管理界面 ## ⚡ 快速开始 ### 系统要求 - **操作系统**: Ubuntu 20.04+ 或 Debian 11+ - **内存**: 4GB+ (推荐8GB+) - **存储**: 10GB+ 可用空间 ### 一键安装 ```bash # 克隆项目 git clone https://github.com/JCUTSEC/sentrix-ids.git cd sentrix-ids # 一键安装所有依赖 sudo bash Dependence.sh # 安装Snort3 sudo bash snort3.sh # 启动系统 sudo bash start_system.sh ``` ### 详细安装命令 #### 1. 安装系统依赖 ```bash # 更新系统 sudo apt update && sudo apt upgrade -y # 安装Python依赖 sudo apt install -y python3 python3-pip python3-venv # 安装网络工具 sudo apt install -y mininet ryu-controller snort3 # 安装Python包 pip3 install tensorflow pandas numpy scikit-learn flask flask-cors ``` #### 2. 启动系统组件 ```bash # 终端1: 启动SDN控制器 cd ControlLayer ryu-manager ARPProxy.py TrafficScheduler.py DDQNLBController.py AttackDetect.py ryu.app.ofctl_rest --observe-links # 终端2: 创建网络拓扑 cd DataLayer sudo python3 CreateNetwork.py # 终端3: 启动API服务 cd APILayer python3 app.py # 终端4: 启动前端界面 cd c4-ui npm install npm start ``` ## 📋 管理脚本使用指南 | 脚本名称 | 功能说明 | 使用方法 | 访问地址 | |---------|---------|---------|---------| | `Dependence.sh` | 一键安装所有依赖包 | `sudo bash Dependence.sh` | - | | `snort3.sh` | 安装配置Snort3入侵检测 | `sudo bash snort3.sh` | - | | `start_system.sh` | 一键启动所有系统组件 | `sudo bash start_system.sh` | - | | `setup_mirror.sh` | 配置网络镜像端口 | `sudo bash setup_mirror.sh` | - | | `setup_gre.sh` | 配置GRE隧道 | `sudo bash setup_gre.sh` | - | ## 🌐 系统访问 ### 后台系统 - **地址**: http://localhost:5000 - **用户名**: admin - **密码**: admin123 ### 前端大屏 - **地址**: http://localhost:3000 ### API接口 - **基础地址**: http://localhost:5000 - **文档**: http://localhost:5000/docs - **健康检查**: http://localhost:5000/health ## 🛠️ 技术栈 ### 后端技术 - **SDN控制器**: Ryu 4.34 - **网络仿真**: Mininet 2.3.1b4 - **AI框架**: TensorFlow 2.16.1 - **Web框架**: Flask 3.0.3 - **数据库**: SQLite ### 前端技术 - **框架**: Vue.js 2.7.13 - **UI组件**: Element UI 2.15.10 - **图表库**: ECharts 5.4.0 - **构建工具**: Vue CLI 4.5.19 - **状态管理**: Vuex 3.4.0 ### AI/ML技术 - **深度学习**: CNN-LSTM混合模型 - **强化学习**: DDQN算法 - **特征工程**: 自动特征提取和选择 - **模型优化**: 早停、学习率调度等 ## 🎯 功能模块 ### 入侵检测模块 - **流量特征提取**: 实时提取网络流量特征 - **异常检测**: 基于统计和机器学习的异常检测 - **攻击识别**: 支持多种攻击类型识别 - **告警管理**: 智能告警分类和处理 ### 负载均衡模块 - **流量调度**: 基于DDQN的智能流量调度 - **拥塞控制**: 实时拥塞检测和处理 - **路径优化**: 动态路径选择和优化 - **性能监控**: 链路性能实时监控 ### 网络监控模块 - **拓扑管理**: 网络拓扑实时可视化 - **流量分析**: 深度流量分析和统计 - **性能指标**: 网络性能指标监控 - **日志管理**: 系统日志收集和分析 ### 管理界面模块 - **仪表板**: 系统状态总览 - **实时监控**: 网络流量实时监控 - **配置管理**: 系统参数配置 - **报表统计**: 安全事件统计报表 ## 🔧 故障排除 ### 常见问题及解决方案 | 问题描述 | 可能原因 | 解决方案 | |---------|---------|---------| | 系统启动失败 | 依赖包未正确安装 | 重新运行 `sudo bash Dependence.sh` | | 网络拓扑无法创建 | Mininet权限不足 | 使用 `sudo python3 CreateNetwork.py` | | 模型加载失败 | 模型文件缺失 | 检查 `model_output/` 目录,重新训练模型 | | 前端无法访问 | Node.js未安装 | 安装Node.js: `sudo apt install nodejs npm` | | 数据库连接失败 | SQLite文件权限问题 | 检查文件权限: `chmod 644 instance/sdnids.db` | | 内存不足 | 系统内存小于4GB | 增加系统内存或使用swap分区 | | 端口被占用 | 其他服务占用端口 | 检查端口占用: `netstat -tulpn \| grep :5000` | ### 日志查看 ```bash # 查看系统日志 tail -f c4-system/logs/ids_*.log # 查看攻击日志 tail -f c4-system/APILayer/static/attack_log.csv # 查看API服务日志 tail -f c4-system/APILayer/logs/*.log ``` ## 📁 项目结构说明 ``` c4-sdnids/ ├── c4-system/ # 后端核心系统 │ ├── ControlLayer/ # SDN控制器层 │ │ ├── ARPProxy.py # ARP代理服务 │ │ ├── AttackDetect.py # 攻击检测模块 │ │ ├── DDQNLBController.py # DDQN负载均衡控制器 │ │ └── TrafficScheduler.py # 流量调度器 │ ├── DataLayer/ # 网络数据层 │ │ ├── CreateNetwork.py # 网络拓扑创建 │ │ └── custom_topo.py # 自定义拓扑配置 │ ├── APILayer/ # API接口层 │ │ ├── app.py # Flask主应用 │ │ ├── ids_detector.py # 入侵检测器 │ │ ├── cnn_lstm_model.py # CNN-LSTM模型 │ │ └── feature_extractor.py # 特征提取器 │ └── config.py # 系统配置文件 ├── c4-ui/ # 前端管理界面 │ ├── src/ # 源代码 │ ├── public/ # 静态资源 │ └── package.json # 依赖配置 ├── config/ # 配置文件 │ └── snort3/ # Snort3配置 ├── scripts/ # 管理脚本 ├── docs/ # 文档 └── README.md # 项目说明 ``` ## 📄 许可证 本项目采用 **MulanPSL-2.0** 开源许可证。 - 自由使用、修改和分发代码 - 用于非商业目的 - 在保留版权声明的前提下进行二次开发 详细许可证内容请查看 [LICENSE](LICENSE) 文件。 ## 🤝 联系方式 - **项目维护者**: JCUTSEC Team - **技术支持**: 请通过 [Issues](https://github.com/JCUTSEC/sentrix-ids/issues) 提交问题 - **功能建议**: 欢迎提交 [Feature Request](https://github.com/JCUTSEC/sentrix-ids/issues/new?template=feature_request.md) - **邮箱**: 1948772900@qq.com - **组织**: JCUTSEC --- **注意**: 首次运行可能需要下载预训练模型,请确保网络连接正常。如遇问题,请查看故障排除部分或提交Issue。