shilpi-n/AI-IDPS

GitHub: shilpi-n/AI-IDPS

一个结合规则引擎与Isolation Forest机器学习的混合入侵检测与防御系统,通过实时捕获网络流量并融合双层检测来实现威胁识别与自动IP封禁。

Stars: 0 | Forks: 0

# 基于AI的入侵检测与防御系统 (AI-IDPS) 一个实时网络安全系统,可捕获实时流量,将其聚合到行为窗口中,并使用**混合检测引擎**识别威胁——该引擎结合了确定性规则匹配与 **Isolation Forest** 无监督机器学习模型。 ## 功能 - 通过 Scapy 进行**实时数据包捕获**,支持配置网络接口 - **5秒滑动窗口** — 按源 IP 进行行为聚合 - **基于规则的引擎** — 即时检测端口扫描、SYN flood 和流量突发 - **ML 异常检测** — 基于正常流量训练的 Isolation Forest 模型 - **混合决策融合** — 三个分级威胁级别(MEDIUM / HIGH / CRITICAL) - **自动 IP 封禁** — 内存中的阻止列表,具有可配置的过期时间(默认为 200 秒) - **结构化 CSV 日志记录** — 带有时间戳的安全事件,用于审计和分析 - **评估套件** — 混淆矩阵和分类报告 - **可视化** — 数据包速率分布图和混淆矩阵热力图 - **演示模式** — `--demo` 标志注入模拟攻击流量,用于安全演示 ## 架构 ``` ┌─────────────────────────────────────────────────────────┐ │ Live Network Traffic │ └───────────────────────┬─────────────────────────────────┘ │ Scapy sniff() ▼ ┌─────────────────────────────────────────────────────────┐ │ feature_aggregator.py │ │ 5-second window per source IP │ │ Extracts: total_packets · unique_ports · syn_packets │ │ syn_ratio · avg_packet_size · packet_rate │ └───────────┬─────────────────────────┬───────────────────┘ │ │ ▼ ▼ ┌───────────────────┐ ┌───────────────────────────┐ │ rule_engine.py │ │ hybrid_detector.py │ │ │ │ │ │ Port Scan │ │ Isolation Forest model │ │ SYN Flood │ │ (1 = normal, -1 = anomaly)│ │ Traffic Burst │ │ │ └─────────┬─────────┘ └────────────┬───────────────┘ │ │ └────────────┬───────────────┘ │ Decision Fusion ▼ ┌────────────────────────┐ │ Threat Level │ │ │ │ Rule ✗ ML ✗ → None │ │ Rule ✗ ML ✓ → MEDIUM│ │ Rule ✓ ML ✗ → HIGH │ │ Rule ✓ ML ✓ → CRIT. │ └────────┬───────────────┘ │ ┌──────────┴──────────┐ ▼ ▼ ┌──────────────┐ ┌──────────────────┐ │ prevention.py│ │ logger.py │ │ Block IP │ │ CSV event log │ │ (200s expiry)│ │ logs/security_log │ └──────────────┘ └──────────────────┘ ``` ## 威胁级别逻辑 | 规则引擎 | ML 引擎 (Isolation Forest) | 威胁级别 | |:-----------:|:----------------------------:|:------------:| | ✗ | Normal | — | | ✗ | Anomaly | MEDIUM | | Alert | Normal | HIGH | | Alert | Anomaly | **CRITICAL** | **封禁策略:** HIGH 和 CRITICAL 威胁将触发自动 IP 封禁。 ## 检测规则 | 规则 | 条件 | |------|-----------| | Port Scan | 每个窗口内 `unique_ports > 3` | | SYN Flood | `syn_ratio > 0.5` 且 `total_packets > 50` | | Traffic Burst | `packet_rate > 10 pps` | ## 技术栈 | 组件 | 技术 | |-----------|------------| | 数据包捕获 | Scapy | | 特征工程 | NumPy, pandas | | 异常检测 | scikit-learn — Isolation Forest | | 模型持久化 | joblib | | 可视化 | matplotlib | | 编程语言 | Python 3.10+ | ## 项目结构 ``` ai-idps/ ├── src/ │ ├── feature_aggregator.py # Live capture + window analysis (entry point) │ ├── hybrid_detector.py # Rule + ML fusion → threat level │ ├── rule_engine.py # Deterministic detection rules │ ├── prevention.py # In-memory IP blocklist │ ├── logger.py # CSV security event logger │ ├── evaluator.py # Model metrics (confusion matrix, report) │ ├── visualizer.py # Matplotlib plots │ ├── train_window_model.py # Train and save Isolation Forest model │ └── generate_attack_data.py # Synthetic attack dataset generator ├── dataset/ │ ├── normal_traffic.csv # Baseline captured traffic │ ├── window_traffic.csv # Window-aggregated training set │ └── attack_traffic.csv # Synthetic attack samples ├── models/ │ └── window_model.pkl # Trained Isolation Forest (Git LFS) ├── logs/ # Runtime logs (gitignored) ├── screenshots/ # Output plots ├── docs/ # Additional documentation ├── tests/ # Unit tests (planned) ├── requirements.txt ├── .gitignore ├── .gitattributes # Git LFS config for .pkl files └── LICENSE ``` ## 安装说明 **前置条件:** Python 3.10+、pip,以及用于原始数据包捕获的 root/管理员访问权限。 ``` # Clone 仓库 git clone https://github.com//ai-idps.git cd ai-idps # 创建虚拟环境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt ``` ## 使用说明 ### 第 1 步 — 生成或重新训练模型 ``` # (可选)重新生成合成攻击数据集 python src/generate_attack_data.py # 训练 Isolation Forest python src/train_window_model.py ``` ### 第 2 步 — 启动实时检测 ``` # 默认 interface(由 Scapy 自动选择) sudo python src/feature_aggregator.py # 指定 interface sudo python src/feature_aggregator.py --iface eth0 # Demo 模式 — 在每个窗口注入模拟攻击流量 sudo python src/feature_aggregator.py --demo ``` ### 第 3 步 — 评估模型性能 ``` python src/evaluator.py ``` ### 第 4 步 — 生成可视化图表 ``` python src/visualizer.py # 图表保存至 screenshots/ ``` ## 示例输出 ``` --- Analyzing 5-second Window --- IP: 192.168.1.105 | Features: [12, 2, 3, 0.25, 512.0, 2.4] [DEMO] Injecting simulated attack traffic... 🚨 HYBRID ALERT 🚨 IP : 192.168.0.173 Threat Level : CRITICAL Rule Triggered: SYN Flood Suspected ML Engine : Anomalous behaviour detected Features : [500, 80, 350, 0.75, 1200.0, 250.0] -------------------------------------------------- 🛑 IP 192.168.0.173 blocked for 200s. ``` ## 截图 | 混淆矩阵 | 数据包速率分布 | |:---:|:---:| | ![混淆矩阵](https://raw.githubusercontent.com/shilpi-n/AI-IDPS/main/screenshots/confusion_matrix.png) | ![数据包速率](https://raw.githubusercontent.com/shilpi-n/AI-IDPS/main/screenshots/packet_rate_distribution.png) | ## 未来改进 - [ ] 通过 `iptables` (Linux) 或 Windows Firewall API 进行操作系统级别的 IP 封禁 - [ ] 实时 Web 仪表板 (Flask + Chart.js),用于实时告警监控 - [ ] 使用监督分类器 (Random Forest, XGBoost) 扩展 ML pipeline - [ ] 与公共数据集进行基准测试:CICIDS2017、NSL-KDD - [ ] 针对 CRITICAL 威胁的电子邮件 / Slack 告警 - [ ] PCAP 文件回放,用于无需实时流量捕获的离线测试 - [ ] 用于跨平台、权限管理的 Docker 容器部署 - [ ] 规则引擎和决策融合逻辑的单元测试覆盖率 ## 道德与法律免责声明 本项目**仅出于教育和研究目的**而开发。 仅在您拥有或获得**明确书面许可**进行监控的网络上部署。 未经授权的数据包拦截可能违反相关法律,包括但不限于《计算机欺诈和滥用法》(美国)、《计算机滥用法》(英国)和《信息技术法》(印度)。 ## 许可证 基于 MIT 许可证分发。详情请参阅 [LICENSE](LICENSE)。
标签:Apex, Scapy, 入侵检测与防御系统, 异常检测, 插件系统, 机器学习, 网络安全, 网络流量分析, 逆向工具, 配置错误, 隐私保护