cynix02/ids-threat-monitor
GitHub: cynix02/ids-threat-monitor
基于 Suricata 流量捕获与 TensorFlow 机器学习的实时网络入侵检测系统,集成三层检测引擎、可视化仪表盘和短信告警功能。
Stars: 0 | Forks: 0
# ⬡ IDS 威胁监控






## 🛡 概述
本项目是一个功能完备的 IDS 技术栈,作为网络安全专业 Licence PFE 开发。它通过 Suricata 监控实时网络流量,经由三个检测层分析事件,将告警存储在 PostgreSQL 中,并在实时仪表盘中可视化所有信息。
```
Network Traffic
│
▼
[ Suricata ] ──── eve.json ────▶ [ Detector ]
│
┌──────────────┼──────────────┐
▼ ▼ ▼
Rule-Based Behavioural ML Model
(SQLi/XSS/ (Rate/Scan (CICIDS2017
LFI/...) Detection) trained)
│ │ │
└──────────────┴──────────────┘
│
▼
[ PostgreSQL ]
│
▼
[ Streamlit Dashboard ]
│
▼
[ Twilio SMS Alert ]
```
## ✨ 功能特性
- **三层检测** — 规则 → 行为 → ML 模型
- **基于 CICIDS2017 训练** — 业界标准的入侵检测数据集
- **实时 Suricata 集成** — 读取实时的 `eve.json` 数据流
- **实时仪表盘** — 深紫色网络安全 UI,包含 5 个图表、实时威胁动态,以及明暗模式切换
- **短信告警** — 针对高分和零日漏洞事件通过 Twilio 发送通知
- **告警管理** — 直接从仪表盘处理告警
- **零日漏洞检测** — ML 置信度评分与可配置阈值
- **行为分析** — 基于单 IP 的速率和扫描检测,并带有 TTL 驱逐机制
## 🖥 仪表盘预览
| 暗色模式 | 亮色模式 |
|---|---|
| 网络安全运维终端风格 | 简洁的紫/薰衣草色主题 |
| Orbitron + Share Tech Mono 字体 | 相同字体,反转色调 |
**包含的图表:**
- 攻击类型分布 (环形图)
- 攻击时间线 — 最近 2 小时 (面积图)
- 每小时告警数 (堆叠柱状图)
- Top 源 IP (水平条形图)
- 置信度分数分布 (小提琴图)
## 🗂 项目结构
```
ids-threat-monitor/
├── src/
│ ├── train.py # ML training pipeline (CICIDS2017)
│ ├── detector.py # Real-time detection engine
│ └── dashboard.py # Streamlit monitoring UI
├── .env.example # Environment variable template
├── requirements.txt # Python dependencies
└── README.md
```
## ⚙️ 安装说明
### 1. 克隆仓库
```
git clone https://github.com/cynix02/ids-threat-monitor.git
cd ids-threat-monitor
```
### 2. 创建虚拟环境
```
python3 -m venv env
source env/bin/activate
```
### 3. 安装依赖
```
pip install -r requirements.txt
```
### 4. 设置环境变量
```
cp .env.example .env
nano .env # fill in your DB credentials, Twilio keys, dashboard password
```
### 5. 设置 PostgreSQL
```
sudo apt install postgresql -y
sudo -u postgres createdb ids_db
sudo -u postgres createuser your_user
```
### 6. 安装并启动 Suricata
```
sudo apt install suricata -y
sudo suricata -c /etc/suricata/suricata.yaml -i lo -D
```
### 7. 训练模型
```
cd src
python3 train.py
# 生成: ids_model.keras, scaler.pkl, features.pkl
```
## 🚀 运行
**终端 1 — 检测引擎:**
```
cd src
python3 detector.py
```
**终端 2 — 仪表盘:**
```
cd src
streamlit run dashboard.py
# 打开 http://localhost:8501
```
## 🧪 测试检测
在 Apache 运行的情况下 (`sudo systemctl start apache2`),发起测试攻击:
```
# SQL Injection
curl "http://localhost/?id=1+UNION+SELECT+username,password+FROM+users--"
# XSS
curl "http://localhost/?q="
# LFI
curl "http://localhost/../../etc/passwd"
# 行为异常 (基于速率)
for i in {1..150}; do curl -s "http://localhost/login?user=admin&pass=test$i"; done
```
## 🔧 配置
所有配置均通过 `.env` 中的环境变量进行:
| 变量 | 描述 | 默认值 |
|---|---|---|
| `DB_HOST` | PostgreSQL 主机 | `localhost` |
| `DB_NAME` | 数据库名 | `ids_db` |
| `DB_USER` | 数据库用户 | — |
| `DB_PASS` | 数据库密码 | — |
| `TWILIO_ACCOUNT_SID` | Twilio SID | — |
| `TWILIO_AUTH_TOKEN` | Twilio token | — |
| `TWILIO_FROM_NUMBER` | 短信发送方号码 | — |
| `TWILIO_TO_NUMBER` | 短信接收方号码 | — |
| `DASHBOARD_USER` | 仪表盘登录用户名 | `admin` |
| `DASHBOARD_PASS` | 仪表盘登录密码 | — |
| `DETECTION_THRESHOLD` | 触发告警的最低分数 | `0.25` |
| `ZERO_DAY_THRESHOLD` | 零日漏洞分数截断值 | `0.5` |
| `SMS_COOLDOWN_SEC` | 每个 IP 两次短信之间的最小间隔秒数 | `300` |
## 🤖 ML 模型
- **数据集:** CICIDS2017 (Canadian Institute for Cybersecurity)
- **架构:** 密集神经网络 (128→64→32→1),带 BatchNormalization 和 Dropout
- **训练:** 基于 AUC 的早停机制,针对不平衡数据的类别权重平衡
- **特征:** 可从 Suricata eve.json 提取的 39 个流级别特征
- **输出:** 二分类 (BENIGN=0 / ATTACK=1) 及置信度分数
## 📊 检测层
| 层级 | 方法 | 检测目标 |
|---|---|---|
| 基于规则 | 正则表达式模式匹配 | SQLi、XSS、LFI、权限提升、零日漏洞指标 |
| 行为分析 | 单 IP 速率和端点分析 (TTL 缓存) | 端口扫描、暴力破解、DDoS |
| ML 模型 | 基于流特征的神经网络 | 未知攻击模式、异常 |
## 🔮 路线图
- [ ] Docker Compose 设置 (一键部署)
- [ ] MITRE ATT&CK 技术标签
- [ ] 源 IP 的 GeoIP 富化
- [ ] PDF 报告导出
- [ ] 基于高置信度检测通过 iptables 自动阻断
- [ ] 多用户 RBAC 仪表盘
## 👤 作者
**Ahmed Yassine Mhetli**
- GitHub: [@cynix02](https://github.com/cynix02)
- 邮箱: ahmedyassine.mhetli@esprit.tn
- 项目: Licence PFE — 网络安全, ESPRIT
## 📄 许可证
MIT License — 详见 [LICENSE](LICENSE)。
标签:Apex, CICIDS2017, CISA项目, eve.json, IP 地址批量处理, Kubernetes, LFI检测, Metaprompt, ML检测, PFE, PostgreSQL, Python, SQLi检测, Streamlit, Suricata, TensorFlow, Web安全, Windows日志分析, XSS检测, 云计算, 入侵检测系统, 全栈安全, 威胁情报, 安全仪表盘, 安全数据湖, 安全运营, 开发者工具, 开源安全工具, 异常检测, 扫描框架, 扫描检测, 无后门, 机器学习, 毕设项目, 流量分析引擎, 测试用例, 深度学习, 现代安全运营, 网络安全, 网络流量分析, 蓝队分析, 规则引擎, 警报管理, 访问控制, 逆向工具, 逆向工程平台, 速率检测, 隐私保护