f20221410-beep/Automated-Threat-Intelligence-A-Scalable-MLOps-Pipeline-for-Network-Security
GitHub: f20221410-beep/Automated-Threat-Intelligence-A-Scalable-MLOps-Pipeline-for-Network-Security
构建基于MLOps流水线的钓鱼URL自动检测系统,利用机器学习替代传统静态黑名单,实现模型自动训练、数据漂移监控与持续部署。
Stars: 0 | Forks: 0
项目概述
传统的网络入侵检测系统(NIDS)依赖于静态黑名单和手动规则更新——这些方法本质上是被动响应的,无法检测零日钓鱼攻击。本项目构建了一个 MLOps 流水线,利用机器学习自动将 URL 分类为钓鱼或合法网址,并随着流量模式的演变自动保持更新。
📂 数据集
UCI 钓鱼网站数据集
| 属性 | 详情 |
|----------|---------|
| **来源** | UCI Machine Learning Repository |
| **引用** | Mohammad, R. M., Thabtah, F., & McCluskey, T. L. (2015). Phishing Websites Dataset. UCI ML Repository. https://archive.ics.uci.edu/ml/datasets/phishing+websites |
| **记录数** | 11,055 个 URL |
| **特征** | 30 个工程化特征 + 1 个目标列 (Result) |
| **目标** | -1 = 钓鱼,+1 = 合法(在训练期间重新映射为 0/1) |
| **存储** | 托管在 MongoDB Atlas 上,在流水线运行时通过编程方式摄取 |
| **本地副本** | `Network_Data/phisingData.csv` |
特征类别
| 类别 | 特征 |
|----------|---------|
| **URL 结构** | `having_IP_Address`, `URL_Length`, `Shortining_Service`, `having_At_Symbol`, `double_slash_redirecting`, `Prefix_Suffix`, `having_Sub_Domain` |
| **SSL 与域名** | `SSLfinal_State`, `Domain_registeration_length`, `HTTPS_token`, `age_of_domain`, `DNSRecord` |
| **页面内容** | `Favicon`, `Request_URL`, `URL_of_Anchor`, `Links_in_tags`, `SFH`, `Submitting_to_email`, `Iframe`, `RightClick`, `popUpWidnow`, `on_mouseover` |
| **流量与信誉** | `web_traffic`, `Page_Rank`, `Google_Index`, `Links_pointing_to_page`, `Statistical_report`, `Abnormal_URL`, `Redirect`, `port` |
| **目标** | `Result` |
所有特征值均编码为 `-1`(钓鱼指标)、`0`(可疑/中立)或 `1`(合法指标)。
流水线架构
```
MongoDB Atlas
│
▼
┌─────────────────────┐
│ Data Ingestion │ → Feature Store CSV → train.csv + test.csv (80/20 split)
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Data Validation │ → Schema check (31 columns) + KS-test drift report
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Data Transformation │ → KNN Imputer (k=3) → train.npy + test.npy + preprocessing.pkl
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Model Training │ → 5-model grid search → best model → MLflow logging
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Flask REST API │ → /predict (batch CSV) + /train (trigger retraining)
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Docker → AWS ECR │ → GitHub Actions CI/CD → EC2 deployment
└─────────────────────┘
```
🧪 评估的模型
| 模型 | 备注 |
|-------|-------|
| Random Forest | 表现最佳 — 由流水线自动选择 |
| Gradient Boosting | 序列提升,在表格数据上表现强劲 |
| AdaBoost | 轻量级提升,训练速度快 |
| Decision Tree | 可解释的单树基线模型 |
| Logistic Regression | 线性基线模型 — 用于对比的下限 |
所有模型均通过网格搜索交叉验证进行调优。最佳模型会根据测试集的 F1-score 自动选择,并保存至 `final_model/model.pkl`。
标签:Apex, MLOps, MongoDB Atlas, NIDS, SSL证书检测, UCI机器学习库, URL分类, 二分类模型, 入侵检测系统, 安全数据湖, 容器化, 搜索语句(dork), 机器学习, 模型训练流水线, 欺诈检测, 特征工程, 网络安全, 网络安全数据集, 网络流量分析, 网页安全, 请求拦截, 逆向工具, 钓鱼网站检测, 随机森林, 隐私保护, 零日攻击防御