saralnajjar/network-intrusion-detection
GitHub: saralnajjar/network-intrusion-detection
一个基于 Python 的渐进式网络入侵检测项目,结合规则与机器学习解决 NIDS 的检测与分类问题。
Stars: 0 | Forks: 0
# 网络入侵检测
一个基于 Python 的网络入侵检测系统(NIDS),逐步构建,从基于规则的检测演进至机器学习驱动的分类。
## 项目结构
```
network-intrusion-detection/
data/
src/
detector.py
parser.py
features.py
model.py
cli.py
tests/
notebooks/
README.md
```
## 路线图
### 第一部分:基于规则的检测
- 解析原始网络日志(CSV/PCAP 格式)
- 定义流量特征模式(源/目的 IP、端口、协议、字节数、持续时间)
- 实现规则引擎:端口扫描检测、SYN 泛洪检测、暴力登录尝试
- 命令行界面:在日志文件上运行检测并打印标记的连接
- 添加阈值配置(config.json)
- 为规则引擎编写单元测试
## 第二部分:数据集与 EDA
- 加载并清理 NSL-KDD 数据集
- 探索性数据分析笔记本:类别分布、特征相关性
- 对类别特征(协议、服务、标志)进行编码
- 归一化连续特征
- 划分训练集/测试集并保存处理后的数据
### 第三部分:机器学习分类
- 基线模型:逻辑回归分类器
- 决策树并绘制特征重要性图
- 随机森林:与决策树比较准确率
- 评估:每个攻击类别的精确率、召回率、F1 值
- 混淆矩阵可视化
- 保存/加载训练模型(joblib)
## 快速开始
```
git clone https://github.com/saralnajjar/network-intrusion-detection
cd network-intrusion-detection
pip install -r requirements.txt
```
在日志文件上运行基于规则的检测(第一阶段):
```
python src/cli.py --input data/sample.csv --mode rules
```
运行机器学习检测(第三阶段及以上):
```
python src/cli.py --input data/sample.csv --mode model --model models/random_forest.pkl
```
## 数据集
本项目使用 **NSL-KDD** 数据集,它是 KDD Cup 1999 数据集的清理版本,广泛用于 NIDS 研究。
- 下载地址:https://www.unb.ca/cic/datasets/nsl.html
- 将文件放入 `data/raw/` 目录
## 攻击类别(NSL-KDD)
| 类别 | 描述 | 示例 |
|------|------|------|
| DoS | 拒绝服务攻击 — 使目标过载 | SYN 泛洪、Ping of Death |
| Probe | 侦察/端口扫描 | nmap、ipsweep |
| R2L | 远程到本地 — 未授权访问 | FTP 暴力破解、phf |
| U2R | 用户到 Root — 权限提升 | 缓冲区溢出、rootkit |
## 技术栈
- **Python 3.11+**
- `pandas`、`numpy` — 数据处理
- `scikit-learn` — 机器学习模型
- `torch` — 自动编码器(第五阶段)
- `matplotlib`、`seaborn` — 可视化
- `pytest` — 测试
标签:Apex, CLI, EDA, IP, joblib, K折交叉验证, Logistic回归, NIDS, NSL-KDD, PoC, Python, SYN洪水攻击, WiFi技术, 云计算, 入侵检测系统, 决策树, 分类, 协议, 安全数据湖, 安全规则引擎, 容器化, 异常检测, 数据清洗, 无后门, 日志解析, 暴力破解, 机器学习, 模型持久化, 混淆矩阵, 特征工程, 特征重要性, 端口, 端口扫描检测, 网络安全, 规则引擎, 证书伪造, 阈值配置, 随机森林, 隐私保护