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.
```
## 截图
| 混淆矩阵 | 数据包速率分布 |
|:---:|:---:|
|  |  |
## 未来改进
- [ ] 通过 `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, 入侵检测与防御系统, 异常检测, 插件系统, 机器学习, 网络安全, 网络流量分析, 逆向工具, 配置错误, 隐私保护