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技术, 云计算, 入侵检测系统, 决策树, 分类, 协议, 安全数据湖, 安全规则引擎, 容器化, 异常检测, 数据清洗, 无后门, 日志解析, 暴力破解, 机器学习, 模型持久化, 混淆矩阵, 特征工程, 特征重要性, 端口, 端口扫描检测, 网络安全, 规则引擎, 证书伪造, 阈值配置, 随机森林, 隐私保护