hamsikamatamsetti-git/Network-Intrusion-Detection-System
GitHub: hamsikamatamsetti-git/Network-Intrusion-Detection-System
基于随机森林算法和 NSL-KDD 数据集构建的机器学习网络入侵检测系统,提供 Flask Web 界面实现网络流量的自动分类与攻击识别。
Stars: 0 | Forks: 0
# 🛡️ 基于机器学习的网络入侵检测系统 (IDS)
## 📌 项目概述
**网络入侵检测系统 (IDS)** 是一个基于机器学习的网络安全项目,旨在检测网络流量并将其分类为:
- ✅ 正常流量
- 🚨 攻击流量
该系统通过机器学习算法分析网络连接模式并识别恶意活动。
本项目使用 **NSL-KDD dataset**,并实现了完整的机器学习工作流,包括:
- 数据预处理
- 特征选择
- 模型训练
- 模型评估
- 预测
- 可视化
- Web 部署
# 🎯 目标
本项目的主要目标是:
- 自动检测恶意网络活动。
- 使用机器学习构建智能入侵检测模型。
- 将网络连接分类为正常和攻击类别。
- 减少网络安全中的人工监控工作量。
- 展示机器学习在网络安全的实际应用。
# 🚨 问题陈述
随着互联网使用的快速增长,网络攻击例如:
- 拒绝服务攻击
- Probe 攻击
- 远程到本地 (R2L)
- 用户到 Root (U2R)
已成为重大的安全威胁。
传统的入侵检测方法无法有效识别新的攻击模式。
本项目旨在开发一个基于机器学习的 IDS,能够分析网络流量并检测可疑活动。
# 🧠 使用的技术
## 编程语言
- Python 3.x
## 机器学习库
- Scikit-learn
- Pandas
- NumPy
- Matplotlib
- Seaborn
## Web 框架
- Flask
## 数据集
- NSL-KDD Dataset
## 开发工具
- Visual Studio Code
- Git & GitHub
# 📂 项目结构
```
Network-Intrusion-Detection-System/
│
├── app.py
├── requirements.txt
├── README.md
├── LICENSE
│
├── dataset/
│ └── NSL-KDD Dataset files
│
├── models/
│ └── intrusion_model.pkl
│
├── notebooks/
│ └── IDS_Model_Training.ipynb
│
├── src/
│ ├── data_preprocessing.py
│ ├── train_model.py
│ └── prediction.py
│
├── static/
│ └── style.css
│
└── templates/
└── index.html
```
# ⚙️ 系统工作流
```
Network Traffic Data
|
↓
Data Collection
|
↓
Data Preprocessing
|
↓
Feature Extraction
|
↓
Machine Learning Model
|
↓
Traffic Classification
|
↓
Normal / Attack Detection
```
# 📊 数据集描述
本项目使用 **NSL-KDD dataset**,它是 KDD Cup 1999 数据集的改进版本。
该数据集包含具有多个属性的网络连接记录,例如:
- 持续时间
- 协议类型
- 服务
- 源字节
- 目标字节
- 错误率
- 连接特征
该数据集包含不同的攻击类别:
### 攻击类型
- DoS (Denial of Service)
- Probe
- R2L (Remote to Local)
- U2R (User to Root)
# 🤖 机器学习模型
使用了以下机器学习算法:
## 随机森林 Classifier
### 为什么使用 Random Forest?
- 高准确率
- 高效处理大型数据集
- 减少过拟合
- 在分类问题中表现良好
# 🔄 机器学习 Pipeline
## 1. 数据加载
使用 Pandas 加载 NSL-KDD dataset。
## 2. 数据预处理
步骤包括:
- 处理缺失值
- 编码分类特征
- 特征缩放
- 数据转换
## 3. 模型训练
处理后的数据集被划分为:
- 训练数据
- 测试数据
Random Forest 模型从训练数据中学习模式。
## 4. 模型评估
使用以下指标衡量性能:
- Accuracy Score
- Precision
- Recall
- F1 Score
- Confusion Matrix
# 📈 模型性能
模型性能使用标准的分类指标进行评估。
示例:
```
Accuracy : 95%+
Precision : High
Recall : High
F1 Score : High
```
(实际值可能因预处理和训练参数而异。)
# 🌐 Web 应用程序
开发了一个基于 Flask 的 Web 界面,允许用户输入网络参数并接收入侵检测结果。
## 功能特点:
✔ 用户友好的界面
✔ 实时预测
✔ 攻击/正常分类
✔ 机器学习模型集成
# 🚀 安装与设置
## 步骤 1:克隆仓库
```
git clone https://github.com/hamsikamatamsetti-git/Network-Intrusion-Detection-System.git
```
## 步骤 2:进入项目文件夹
```
cd Network-Intrusion-Detection-System
```
## 步骤 3:创建虚拟环境
```
python -m venv venv
```
## 步骤 4:激活虚拟环境
Windows:
```
venv\Scripts\activate
```
## 步骤 5:安装依赖项
```
pip install -r requirements.txt
```
# ▶️ 运行应用程序
运行 Flask 应用程序:
```
python app.py
```
打开浏览器:
```
http://127.0.0.1:5000/
```
# 🖥️ 应用程序输出
系统提供:
- 输入网络流量详情
- 预测结果
- 攻击检测状态
示例:
```
Input:
Network Traffic Features
Output:
Prediction: Normal Traffic
```
或
```
Output:
Prediction: Attack Traffic Detected
```
# 🔐 网络安全应用
此 IDS 可用于:
- 企业网络监控
- 安全运营中心
- 云安全系统
- 入侵防御系统
- 网络流量分析
# 📌 优势
- 自动化攻击检测
- 更快的威胁识别
- 基于机器学习的预测
- 减少人工监控工作量
- 能够检测复杂的攻击模式
# 🔮 未来展望
未来的改进包括:
- 实时数据包捕获集成
- 基于 Deep Learning 的检测
- 实时网络监控
- 与 SIEM 工具集成
- 自动化威胁响应
- 云部署
# 📚 学习成果
通过本项目,培养了以下技能:
- 机器学习分类技术
- 网络安全基础
- 网络流量分析
- Flask 应用程序开发
- 数据预处理
- 模型部署
# 👩💻 作者
**Hamsika Matamsetti**
GitHub:
https://github.com/hamsikamatamsetti-git
标签:Apex, Flask, 入侵检测系统, 安全数据湖, 异常流量检测, 机器学习, 网络安全, 逆向工具, 随机森林, 隐私保护