Kanishk3443/Snort
GitHub: Kanishk3443/Snort
基于 Snort 和 Scapy 构建的网络入侵检测系统,提供实时流量监控仪表盘并支持模拟、嗅探与真实引擎三种检测模式。
Stars: 0 | Forks: 0
# 🛡️ Snort — 网络入侵检测与防御系统
这是一个基于 Web 的仪表盘,用于实时监控、检测和可视化网络入侵。它围绕 **Snort** 风格的检测逻辑构建,内置三种可互换的检测引擎 —— 一个合成模拟器、一个纯 Python 实时嗅探器(Scapy)以及一个真实的 Snort 引擎桥接 —— 所有引擎都将数据馈送到同一个 Flask + Chart.js 仪表盘中。
该系统根据 IP 地址、端口和协议分析流量,将其与检测规则进行匹配,并针对 SQL 注入、XSS、DDoS/SYN 洪水、端口扫描、恶意软件信标和暴力破解等威胁发出带有严重性标记的警报。
## ✨ 功能特性
- **实时仪表盘** — 采用暗黑模式和玻璃拟态 UI,每 2 秒轮询一次新警报,无需重新加载整个页面,因此计数器和图表能够平滑更新。
- **三种检测模式**(可选择其中一种,或在它们之间切换):
1. **模拟器** (`snort_simulator.py`) — 通过定时器生成逼真的合成警报。无需管理员权限或抓包驱动;非常适合用于演示和 UI 开发。
2. **实时嗅探器** (`real_nids.py`) — 使用 Scapy 嗅探实时流量,并直接在 Python 中应用自定义检测规则(SYN 洪水、端口扫描、超大 ICMP、明文 SQLi/XSS 特征)。
3. **真实 Snort 桥接** (`run_real_snort.py` / `snort_log_parser.py`) — 将实际的 Snort 引擎输出(控制台流或 `alert.ids`/`alert_fast` 日志文件)通过管道传输到同一个仪表盘,因此你可以从模拟平滑过渡到真实的 Snort 安装,而无需更改 UI。
- **攻击流量生成器** (`attack_generator.py`) — 向你自己的机器发起真实的 DDoS、端口扫描、SQL 注入和 XSS 流量,以便你可以观察 `real_nids.py` 实时捕获它们。
- **严重性分类** — 每条警报都带有低 / 中 / 高的标记,并包含描述和唯一 ID。
- **分析图表** — 使用 Chart.js 进行可视化,按攻击类型和严重性划分警报数量。
- **规则管理、抓包和设置页面** — 用于管理规则和检查捕获活动的附加仪表盘视图。
- **REST API** — `/api/alerts` 和 `/api/stats` 端点为前端(或任何其他客户端)提供 JSON 数据。
## 🏗️ 架构
```
Detection Engine Storage Dashboard
┌────────────────────┐ ┌──────────────────┐ ┌───────────────────┐
│ snort_simulator.py │ │ │ │ │
│ real_nids.py │─────▶│ snort_alerts.json │◀────▶│ app.py (Flask) │
│ run_real_snort.py + │ │ │ │ + templates/*.html│
│ snort_log_parser.py │ └──────────────────┘ │ + static/*.js/css │
└────────────────────┘ └───────────────────┘
```
每个检测引擎都会写入同一个 `snort_alerts.json` 文件(限制为最近 100–500 条警报)。Flask 应用只需读取该文件并将其提供给浏览器 —— 因此可以替换为任何引擎,而无需触及前端代码。
## 📁 项目结构
```
Snort/
├── app.py # Flask server: routes + /api/alerts, /api/stats
├── snort_simulator.py # Synthetic alert generator (no admin rights needed)
├── real_nids.py # Live Scapy-based sniffer with custom detection rules
├── attack_generator.py # Fires DDoS/port-scan/SQLi/XSS traffic at localhost for testing
├── run_real_snort.py # Launches real Snort.exe and streams its console output into the dashboard
├── snort_log_parser.py # Tails a real Snort log file (alert.ids / alert_fast) into the dashboard
├── snort_alerts.json # Shared alert store (auto-created, auto-trimmed)
├── requirements.txt # Flask, scapy
├── start_system.bat # One-click launcher (dashboard + real Snort bridge) for Windows
├── static/
│ ├── chart.js
│ ├── script.js
│ └── style.css
└── templates/
├── index.html # Main dashboard
├── alerts.html # Alert list/history view
├── packet_capture.html # Packet capture view
├── rules_mgt.html # Rules management view
└── settings.html # Settings view
```
## 🚀 快速开始
### 前置条件
- Python 3.9+
- pip
### 1. 安装依赖
```
cd Snort
pip install -r requirements.txt
```
### 2. 选择检测模式
**选项 A — 模拟器(最简单,无需管理员权限)**
```
python snort_simulator.py
```
这会持续将合成警报写入 `snort_alerts.json`。
**选项 B — 实时嗅探器(真实数据包,自定义 Python 规则)**
```
python real_nids.py
```
**选项 C — 真实 Snort 引擎桥接**
```
python run_real_snort.py
```
### 3. 启动仪表盘
```
python app.py
```
在浏览器中打开 **http://127.0.0.1:5000**。
### Windows 一键启动
`start_system.bat` 会在独立的窗口中同时启动仪表盘和真实的 Snort 桥接。
## 🔌 API 参考
| 端点 | 方法 | 描述 |
|---|---|---|
| `/api/alerts` | GET | 返回所有存储的警报,最新的排在最前 |
| `/api/stats` | GET | 返回按严重性分类的警报总数以及按攻击类型的明细(用于图表) |
| `/api/clear-data` | POST | 清除所有存储的警报 |
**警报对象结构:**
```
{
"id": "SN-1719580000000",
"timestamp": "2026-07-12 14:30:00",
"source_ip": "192.168.1.10",
"dest_ip": "192.168.1.50",
"protocol": "TCP",
"alert_type": "SQL Injection",
"severity": "High",
"description": "Attempted SQL injection on web port."
}
```
## 🧩 技术栈
- **后端:** Python, Flask
- **检测:** Scapy(数据包捕获/分析),Snort(真实引擎集成)
- **前端:** HTML, CSS, 原生 JS, Chart.js
- **存储:** 扁平化 JSON 文件(无需数据库)
## ⚠️ 注意事项与限制
- `real_nids.py` 需要管理员/root 权限以及数据包捕获驱动程序(Npcap/libpcap) —— 如果缺少这些,它将打印明确的错误提示。
- `run_real_snort.py` 和 `snort_log_parser.py` 目前硬编码了 Windows 风格的路径(`C:\Snort\...`);对于 Linux/macOS 上的 Snort 安装,请更新这些常量。
- 仪表盘在每次产生警报时都会读取并重写同一个 JSON 文件,这对于演示/课程级别的流量没问题,但不适合扩展到生产级别的数据包量 —— 请为此替换为真实的数据库。
## 📄 许可证
MIT — 详情请参阅 [LICENSE](./LICENSE)。
标签:CISA项目, Flask, IP 地址批量处理, Python, Scapy, Web可视化, Wildcard支持, 后端开发, 多模态安全, 插件系统, 数据可视化, 无后门, 流量监控, 网络安全, 网络测绘, 逆向工具, 隐私保护