salahkouhail/ids-pedagogique
GitHub: salahkouhail/ids-pedagogique
一个基于Python和Scapy开发的教学用入侵检测系统原型,能够实时捕获网络流量、检测五种常见攻击类型并通过交互式仪表板可视化告警。
Stars: 0 | Forks: 0
# 计算机网络入侵检测系统的研究与实现:在教学网络中的应用




## 📌 描述
这是一个教学用的入侵检测系统 (IDS) 原型,完全使用 Python 开发,能够实现以下功能:
- 🔍 通过 **Scapy** 实时捕获网络流量
- 🛡️ 检测 **5 种真实的网络攻击**类型
- ⚠️ 将警报划分为 **3 个风险等级**
- 📊 通过交互式 **SOC 仪表板**可视化警报
- 📄 自动生成专业的 **PDF 报告**
## 🏗️ 架构
```
Kali Linux (attaquant) Ubuntu Server (cible)
192.168.100.128 192.168.100.129
│ │
└───────────────┬───────────────────┘
│
VMnet2 (réseau isolé, Host-only)
192.168.100.0/24
│
capture.py (Scapy)
│
traffic.csv
│
detector.py (5 règles)
│
alerts.csv
│
app.py (Streamlit)
┌──────┴──────┐
Dashboard SOC Export PDF
```
## 🚨 检测规则
| # | 攻击类型 | Kali 工具 | 阈值 | 等级 |
|---|------------------|-----------------|-------------------------------|----------|
| 1 | 端口扫描 (Port Scan) | `nmap -sS` | > 50 个端口 / IP | 🔴 高危 |
| 2 | SSH 暴力破解 (Brute Force) | `hydra` | > 50 次尝试 (端口 22) | 🔴 高危 |
| 3 | DDoS 泛洪 (Flood) | `hping3` | > 200 个数据包 / IP | 🟠 中危 |
| 4 | ARP 欺骗 (Spoofing) | `arpspoof` | > 5 个可疑 ARP 数据包 | 🔴 高危 |
| 5 | Ping 泛洪 (Flood) | `hping3 -1` | > 50 个 ICMP 数据包 | 🟠 中危 |
## 📊 获得的结果
| 指标 | 数值 |
|--------------------------------------|-----------|
| ✅ 检测率 | **100%** |
| ✅ 误报率 (正常流量) | **0%** |
| ✅ 检测到的警报 | **6 个警报** |
| ✅ 分析的行数 | **4 084** |
## 🗂️ 项目结构
```
ids-pedagogique/
├── capture.py # Capture trafic réseau (Scapy)
├── detector.py # Moteur de détection (5 règles)
├── app.py # Dashboard SOC (Streamlit + PDF)
├── generate_normal.py # Génération trafic normal simulé
├── requirements.txt # Dépendances Python
├── traffic.csv # Données capturées
├── alerts.csv # Alertes détectées
└── traffic_normal.csv # Trafic normal (validation)
```
## 📸 截图
### SOC 仪表板

### PDF 报告 — 第 1 页

### PDF 报告 — 第 2 页

## ⚙️ 安装与使用
### 1. 克隆项目
```
git clone https://github.com/salahkouhail/ids-pedagogique.git
cd ids-pedagogique
```
### 2. 安装依赖
```
pip install -r requirements.txt
```
### 3. 启动捕获 (需要管理员权限)
```
python capture.py
```
### 4. 启动检测
```
python detector.py traffic.csv
```
### 5. 启动仪表板
```
streamlit run app.py
```
## 🖥️ 测试环境
| 机器 | 操作系统 | IP | 角色 |
|---------|-----------------------|------------------|------------|
| VM 1 | Kali Linux 2026 | 192.168.100.128 | 攻击者 |
| VM 2 | Ubuntu Server 22.04 | 192.168.100.129 | 目标 |
| 主机 | Windows + Python 3.14 | 192.168.100.1 | IDS |
## 🛠️ 技术栈
| 技术 | 版本 | 用途 |
|-------------|---------|-------------------------|
| Python | 3.14 | 主要语言 |
| Scapy | 2.7 | 网络捕获 |
| Pandas | 3.0 | 数据处理 |
| Streamlit | 1.57 | Web 仪表板 |
| Plotly | 6.7 | 数据可视化 |
| ReportLab | 4.5 | 导出 PDF |
## ⚠️ 法律声明
本项目是在**严格的教学和防御性**框架下开发的。
所有模拟攻击均在**隔离且受控**的网络中进行。
任何攻击性使用都是**非法且违背职业道德的**。
## 📄 许可证
学术项目 — EMSI 卡萨布兰卡 — 2025-2026 学年
标签:Kubernetes, Python, Streamlit, 插件系统, 无后门, 网络安全, 访问控制, 逆向工具, 防御绕过, 隐私保护