nuthan923/REALTIME-IDS
GitHub: nuthan923/REALTIME-IDS
面向边缘设备的实时入侵检测系统,结合 Snort 规则检测与随机森林机器学习模型,对 IoT 网络流量中的攻击进行实时识别与分类。
Stars: 0 | Forks: 0
# 使用 Snort 和 ML 的实时入侵检测系统 (IDS)
## 🚀 项目概述
本项目实现了一个专为**边缘设备**(特别是 Raspberry Pi 5)设计的**实时入侵检测系统**。它将 **Snort** 基于规则的检测能力与 **Machine Learning**(随机森林)的预测能力相结合,以实时识别和分类网络攻击。
该系统监控来自模拟 IoT 设备的流量,通过 ML 推理引擎处理警报,并提供用于安全监控的实时仪表板。
## ✨ 核心功能
- **实时流量分析**:使用 Snort 进行深度包检测。
- **ML 驱动的推理**:在 UNSW-NB15 数据集上训练的随机森林模型,用于高精度异常检测。
- **交互式仪表板**:使用 Chart.js 实时可视化网络健康状况,包括:
- **实时计数器**:实时跟踪警报总数、恶意警报和正常警报。
- **攻击时间轴**:网络事件的统计趋势。
- **威胁分类**:攻击类型(DoS、Scan、Brute Force)的可视化细分。
- **顶级攻击者**:识别最活跃恶意 IP 地址的柱状图。
- **地理可视化**:模拟攻击向量的 2D Leaflet 地图和 3D Globe.gl 可视化。
- **实时警报推送**:类似控制台滚动的近期网络活动信息流。
- **IoT 模拟环境**:包含虚拟智能灯泡、摄像头和恒温器,以模拟真实的边缘环境。
- **攻击模拟器**:集成脚本以模拟 Port Scanning、DoS (SYN Flood) 和 Brute Force 攻击。
- **边缘优化**:使用 Docker 完全容器化,专为在 Raspberry Pi 5 上高效运行而设计。
## 🏗️ 架构
1. **流量生成**:IoT 设备(灯泡、摄像头、恒温器)生成正常的网络流量。
2. **入侵检测**:Snort 监控网络接口,并基于特征规则生成警报。
3. **ML 推理引擎**:基于 Flask 的 API 接收 Snort 警报,提取特征,并使用训练好的 ML 模型对流量进行分类。
4. **监控仪表板**:基于 Web 的 UI 显示实时统计数据和详细的警报信息。
## 📂 项目结构
```
├── api/ # ML Inference API (Flask)
├── attacker/ # Attack simulation scripts (nmap, hping3, hydra)
├── dashboard/ # Web dashboard (Flask + HTML/JS)
├── docker/ # Dockerfiles and Docker Compose configuration
├── iot/ # IoT device simulation scripts
├── ml/ # Machine learning models and training scripts
│ ├── models/ # Pre-trained models (.pkl)
│ └── training/ # Training datasets and scripts
├── snort/ # Snort configuration and rules
│ ├── conf/ # Snort configuration (snort.conf)
│ └── rules/ # Custom IDS rules (local.rules)
└── scripts/ # Utility and data generation scripts
```
## 🛠️ 安装与部署
### 前置条件
- **Raspberry Pi 5**(或任何支持 Docker 的 Linux 机器)。
- 已安装 **Docker** 和 **Docker Compose**。
- 用于克隆仓库的 **Git**。
### 第一步:克隆仓库
```
git clone
cd REALTIME-IDS
```
### 第二步:构建并启动系统
导航到根目录,并使用 Docker Compose 构建和启动所有服务:
```
docker-compose -f docker/docker-compose.simulation.yml up --build
```
### 第三步:访问仪表板
容器运行后,打开您的 Web 浏览器并导航至:
```
http://:8080
```
## 🧠 Machine Learning 模型
该系统使用在 **UNSW-NB15** 数据集上训练的 **Random Forest Classifier**(随机森林分类器)。
- **使用的特征**:`dur`、`proto`、`service`、`spkts`、`dpkts`、`sbytes`、`dbytes`、`sttl`、`dttl`。
- **性能**:对常见攻击类型具有高精确率和召回率。
- **攻击分类**:
- **Normal**:常规流量。
- **DoS**:拒绝服务(高数据包量)。
- **Scan**:端口扫描和网络映射。
- **Brute Force**:反复的未经授权访问尝试。
## 🛡️ 模拟攻击
为了测试检测能力,您可以运行攻击模拟器:
1. 进入 attacker 容器:
docker exec -it attacker bash
2. 运行模拟脚本:
./attacker/attacker.sh
这将针对模拟的 IoT 设备发起各种攻击,这些攻击应该会实时显示在仪表板上。
## 📜 许可证
本项目基于 MIT 许可证授权 - 详情请参阅 LICENSE 文件。
标签:Apex, Docker, 入侵检测系统, 安全数据湖, 安全防御评估, 插件系统, 机器学习, 物联网安全, 请求拦截, 边缘计算, 逆向工具