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支持, 后端开发, 多模态安全, 插件系统, 数据可视化, 无后门, 流量监控, 网络安全, 网络测绘, 逆向工具, 隐私保护