MaryamShazz/AI-Network-Anomaly-Detector

GitHub: MaryamShazz/AI-Network-Anomaly-Detector

基于 Isolation Forest 的网络入侵检测系统,提供 SOC 风格的威胁分析、风险评分和交互式调查仪表板。

Stars: 0 | Forks: 0

# 🤖 AI 网络异常检测器 ### 智能网络入侵检测与安全分析平台

![Python](https://img.shields.io/badge/Python-3.11+-3776AB?logo=python&logoColor=white) ![Streamlit](https://img.shields.io/badge/Streamlit-Dashboard-FF4B4B?logo=streamlit&logoColor=white) ![scikit-learn](https://img.shields.io/badge/scikit--learn-Isolation%20Forest-F7931E?logo=scikitlearn&logoColor=white) ![NSL-KDD](https://img.shields.io/badge/Dataset-NSL--KDD-success) ![License](https://img.shields.io/badge/License-Educational-blue)

# 🌐 概述 AI 网络异常检测器是一个基于机器学习构建的网络入侵检测系统(NIDS)。该系统并不局限于简单的“正常”或“攻击”预测,而是遵循安全运营中心(SOC)的工作流程,通过确定警报优先级、分配风险和置信度分数、对威胁进行分类,并提供推荐的分析师操作。 作为一个端到端的网络安全项目,它将异常检测、数据预处理、威胁分析、可视化和报告整合到一个交互式的 Streamlit 应用程序中。 # ✨ 功能 - 🤖 使用 Isolation Forest 进行基于 AI 的网络异常检测 - 🖥️ 交互式 Streamlit 安全仪表板 - 🚨 威胁分类(DoS、Probe、R2L、U2R) - 📊 置信度、风险和严重性评分 - 🛡️ SOC 风格的调查工作流 - 🔍 搜索和过滤可疑连接 - 📑 可下载的调查报告(Markdown 和 CSV) - 📈 与 Random Forest 和 SVM 的基准对比 - 📋 自动化探索性数据分析(EDA) # 🛠️ 技术栈 | 类别 | 技术 | |----------|--------------| | 🐍 语言 | Python 3.11+ | | 🤖 机器学习 | scikit-learn (Isolation Forest, Random Forest, SVM) | | 📊 数据处理 | pandas, NumPy | | 📈 可视化 | Plotly, Matplotlib | | 🖥️ 仪表板 | Streamlit | | 💾 模型存储 | Joblib | # 🚀 快速开始 ## 1️⃣ 创建虚拟环境 ``` python -m venv venv ``` ### 🪟 Windows (PowerShell) ``` venv\Scripts\Activate.ps1 ``` 如果 PowerShell 阻止了执行: ``` Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned ``` 然后再次激活。 ### 🪟 Windows (Command Prompt) ``` venv\Scripts\activate.bat ``` ### 🍎 Linux/macOS ``` source venv/bin/activate ``` ## 2️⃣ 安装依赖项 ``` pip install -r requirements.txt ``` ## 3️⃣ 启动仪表板 ``` streamlit run app.py ``` 如果未识别出 Streamlit: ``` python -m streamlit run app.py ``` 打开终端中显示的本地 URL(通常是 http://localhost:8501)。 代码仓库已经在 `models/` 目录中包含了训练好的模型工件,因此**不需要**重新训练。 # 📖 操作演练 完整的初始教程位于: ``` docs/WALKTHROUGH.md ``` 它涵盖: - ▶️ 首次运行应用程序 - 📂 使用内置的示例数据集 - 📤 上传您自己的 NSL-KDD 数据集 - 🔎 调查警报 - 📑 导出报告 # 🧠 重新训练(可选) 重新训练所有模型: ``` python -m src.train_model ``` 重新生成 EDA 图表: ``` python -m src.eda ``` # 📂 项目结构 ``` AI-Network-Anomaly-Detector/ ├── .streamlit/ ├── assets/ ├── data/ ├── docs/ ├── models/ ├── reports/ ├── src/ ├── .gitignore ├── app.py ├── LICENSE ├── README.md └── requirements.txt ``` # 📊 数据集 该项目使用 **NSL-KDD** 基准入侵检测数据集。 | 数据集 | 记录数 | |---------|---------:| | 📄 KDDTrain+ | 125,973 | | 📄 KDDTest+ | 22,544 | Isolation Forest 在训练时**不需要标签**。真实标签(Ground truth)仅用于评估和基准对比。 # 📈 基准测试结果 | 模型 | 准确率 (Accuracy) | 精确率 (Precision) | 召回率 (Recall) | F1 分数 (F1) | |------|---------:|----------:|-------:|------:| | 🌲 Random Forest | 0.7699 | 0.9667 | 0.6170 | 0.7532 | | 🎯 SVM (RBF) | 0.7817 | 0.9761 | 0.6320 | 0.7673 | | 🤖 Isolation Forest | **0.7950** | 0.8378 | **0.7934** | **0.8150** | 尽管监督模型获得了更高的精确率,但 Isolation Forest 检测出的攻击数量明显更多,并且在不需要标记攻击数据的情况下获得了最佳的 F1 分数。 # ⚙️ 核心组件 - 🤖 数据预处理 pipeline - 📊 探索性数据分析 (EDA) - 🌐 Isolation Forest 异常检测 - 🚨 威胁分类 - 📈 置信度评分 - ⚠️ 风险评分 - 🛡️ 严重性评估 - 🖥️ 交互式仪表板 - 🔍 调查面板 - 📑 报告生成 # 🎯 展示技能 - 🛡️ 网络安全 - 🌐 网络入侵检测 - 🤖 机器学习 - 📊 数据分析 - 💻 软件工程 - 🐍 Python - 🖥️ Streamlit - 📈 模型评估 - 📄 技术文档 # ⚠️ 局限性 - 基于 NSL-KDD 基准数据集构建。 - 置信度和风险分数是启发式的分析师辅助工具,而不是经过校准的概率。 - 当上传的数据集不包含标签时,攻击类别是通过启发式方法推断的。 - 旨在用于教育和个人作品展示,而非生产环境部署。 # 📄 技术报告 代码仓库中包含一份详细的技术报告,描述了系统架构、方法论、基准测试、仪表板实现和评估。 # 📜 许可证 本项目提供用于教育和研究目的。
标签:Apex, IP 地址批量处理, Kubernetes, LSASS转储, Python, Streamlit, 入侵检测系统, 安全数据湖, 安全运营中心, 异常检测, 无后门, 机器学习, 网络安全, 网络映射, 访问控制, 逆向工具, 防御绕过, 隐私保护