thousaba/network_lab
GitHub: thousaba/network_lab
基于 Suricata IDS 的实时网络告警监控仪表盘,提供 Web 可视化界面与 Telegram 即时通知功能。
Stars: 0 | Forks: 0
# Network Lab — 实时 Suricata IDS 仪表盘
一款网络安全仪表盘,可实时监控 Suricata IDS 日志,在检测到威胁时发送 Telegram 通知,并在现代化的 Web 界面中可视化告警。
## 架构
```
Suricata (eve.json)
│
▼
Python Backend (Socket.IO)
│
├──► Telegram Bot (instant notification)
│
└──► React Dashboard (WebSocket)
```
## 功能
- **实时告警流** — 持续追踪 Suricata 的 `eve.json` 并即时捕获新告警
- **Telegram 通知** — 每次检测到新威胁时都会发送 bot 消息
- **实时仪表盘** — 通过 Socket.IO 推送至浏览器,无需刷新页面
- **严重性分类** — 带有颜色区分的 HIGH / MEDIUM / LOW 徽章
- **实时统计卡片** — 总计、HIGH、MEDIUM 和 LOW 告警计数实时更新
## 设置
### 前置条件
- Python 3.10+
- Node.js 18+
- Suricata (Windows 或 Linux)
### 后端
```
cd backend
python -m venv venv
# Windows
.\venv\Scripts\activate
# Linux / macOS
source venv/bin/activate
pip install -r requirements.txt
```
创建 `backend/.env` 文件:
```
TELEGRAM_TOKEN=your_bot_token_here
TELEGRAM_CHAT_ID=your_chat_id_here
SURICATA_LOG_PATH=C:\Program Files\Suricata\log\eve.json
```
### 前端
```
npm install
```
## 运行
**终端 1 — 后端:**
```
cd backend
.\venv\Scripts\python suricata.py
```
**终端 2 — 前端:**
```
npm run dev
```
在浏览器中打开 `http://localhost:5173`。
## 项目结构
```
network_lab/
├── backend/
│ ├── suricata.py # Python backend (Socket.IO + Telegram)
│ ├── requirements.txt # Python dependencies
│ └── .env # Secrets (not committed to git)
├── src/
│ ├── App.tsx # Dashboard UI
│ └── App.css # Dark theme styles
├── .gitignore
└── package.json
└── docs # Simulations
```
## Telegram Bot 设置
1. 在 Telegram 上与 `@BotFather` 对话,并使用 `/newbot` 创建一个 bot
2. 将 token 添加到 `.env` 作为 `TELEGRAM_TOKEN`
3. 获取你的 chat ID,可以向 `@userinfobot` 发送消息,或者向你的 bot 发送一条消息,然后访问 `https://api.telegram.org/bot/getUpdates`
## 注意事项
- 启动时不会读取历史日志 — 仅监控新告警
- 仅处理 `event_type == "alert"` 的日志行;诸如 DNS、HTTP 和 flow 事件的正常流量日志会被过滤掉
- 切勿提交你的 `.env` 文件
标签:Metaprompt, Python, React, Socket.IO, Suricata, Syscalls, 可视化看板, 无后门, 现代安全运营, 逆向工具