cynix02/ids-threat-monitor

GitHub: cynix02/ids-threat-monitor

基于 Suricata 流量捕获与 TensorFlow 机器学习的实时网络入侵检测系统,集成三层检测引擎、可视化仪表盘和短信告警功能。

Stars: 0 | Forks: 0

# ⬡ IDS 威胁监控 ![Python](https://img.shields.io/badge/Python-3.12-blue?style=flat-square&logo=python) ![TensorFlow](https://img.shields.io/badge/TensorFlow-2.15-orange?style=flat-square&logo=tensorflow) ![Suricata](https://img.shields.io/badge/Suricata-7.0-red?style=flat-square) ![Streamlit](https://img.shields.io/badge/Dashboard-Streamlit-ff4b4b?style=flat-square&logo=streamlit) ![PostgreSQL](https://img.shields.io/badge/Database-PostgreSQL-336791?style=flat-square&logo=postgresql) ![License](https://img.shields.io/badge/License-MIT-green?style=flat-square) ## 🛡 概述 本项目是一个功能完备的 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检测, 云计算, 入侵检测系统, 全栈安全, 威胁情报, 安全仪表盘, 安全数据湖, 安全运营, 开发者工具, 开源安全工具, 异常检测, 扫描框架, 扫描检测, 无后门, 机器学习, 毕设项目, 流量分析引擎, 测试用例, 深度学习, 现代安全运营, 网络安全, 网络流量分析, 蓝队分析, 规则引擎, 警报管理, 访问控制, 逆向工具, 逆向工程平台, 速率检测, 隐私保护