AKILAN-VS/Sentin_AI
GitHub: AKILAN-VS/Sentin_AI
SentinAI 是一个利用 XGBoost 在 CICIDS-2017 数据集上训练的基于异常的网络入侵检测系统,旨在通过学习正常流量行为来检测 DDoS、端口扫描及未知威胁,并提供实时可视化的 SOC 仪表盘。
Stars: 0 | Forks: 0
# SentinAI — 基于异常的网络入侵检测系统
## 概述
传统的入侵检测系统依赖于特征匹配:它们将观察到的流量与已知攻击模式的数据库进行比较。这种方法本质上是反应式的。它只能捕获已经见过并编目过的威胁,从而使网络暴露在零日漏洞利用和新型攻击向量之下。
**SentinAI** 采取了一种根本不同的方法。它不是问“*这个流量看起来像已知的攻击吗?*”,而是问“*这个流量看起来正常吗?*”。该系统在真实的网络流数据上进行训练以建立基线行为,然后标记任何显著偏离该基线的流量——无论以前是否见过这种攻击类型。
该项目是一个完整的、端到端的 IDS 原型,作为 VIT **Cryptography & Network Systems (BCSE309L)** 课程的一部分构建。它涵盖了原始数据预处理、多模型基准测试以及具有实时警报可视化功能的实时安全运营中心 (SOC) 仪表板。
## 问题所在
现代网络面临着一个根本性的不匹配:威胁形势在不断演变,但基于特征的 IDS 工具只能跟上其最新更新的程度。具体的缺陷包括:
- **零日盲区** — 对于以前从未见过的攻击,不存在特征。
- **警报疲劳** — 僵化的规则匹配导致的高误报率使分析师对真正的威胁变得不敏感。
- **运营开销** — 维护最新的特征数据库需要持续的专家干预。
- **静态检测逻辑** — 基于规则的系统无法适应正常流量模式的逐渐变化。
## 解决方案
SentinAI 通过将检测建立在学习到的行为而非预定义规则的基础上来解决这些差距。核心思想很简单:在标记的网络流上训练分类器以区分良性流量和恶意流量,然后针对实时或流数据部署该分类器。
该系统引入了几个特定的设计选择以使其切实可行:
- **CICIDS-2017 数据集** — 网络入侵研究中最全面的公共基准之一,包含 DoS、DDoS、暴力破解、端口扫描、僵尸网络活动和良性流量的标记数据。
- **特征工程** — 从 78 个可用的流级特征中,通过方差和相关性分析保留了前 20 个(包括 `Fwd Packet Length Max`、`Flow Duration`、`Total Fwd Packets` 和 TCP 标志计数)。
- **SMOTE 平衡** — 在现实的网络数据中,良性流量约占所有样本的 99%。应用合成少数类过采样技术 (SMOTE) 处理少数攻击类,以防止模型简单地学习将所有内容都预测为“良性”。
- **XGBoost 分类器** — 在与逻辑回归和随机森林进行基准测试后被选中。与线性方法相比,XGBoost 能更好地处理网络流数据中的高维、非线性模式,并且其集成结构使其对噪声特征具有鲁棒性。
## 架构
SentinAI 流水线分为三个功能层:
```
Raw Network Traffic (CSV / PCAP)
│
▼
┌─────────────────────────────┐
│ Data Ingestion & Feature │ ← Parsing, normalization, SMOTE,
│ Engineering │ scaler fit, top-20 feature selection
└─────────────────────────────┘
│
▼
┌─────────────────────────────┐
│ ML Inference Engine │ ← XGBoost classifier + optimal threshold
│ (best_model.pkl) │ outputs prediction + confidence score
└─────────────────────────────┘
│
▼
┌─────────────────────────────┐
│ SOC Dashboard & Rule-Based │ ← Alert generation, severity assignment,
│ Incident Response │ IP flagging, firewall recommendations
└─────────────────────────────┘
```
所有序列化产物——训练好的模型、缩放器、标签编码器和特征列表——都打包在 `best_model.pkl` 中,使推理层独立且可移植。
## 仓库结构
```
├── Data/
│ ├── Processed/
│ │ └── processed_network_dataset.csv # Cleaned, normalized, SMOTE-balanced dataset
│ ├── Raw/
│ | └── Friday-WorkingHours-Afternoon-DDos.pcap_ISCX.csv # Raw CICIDS-2017 traffic capture
│ └── top_20_features.csv # Selected feature subset used for training
├── Metrics/
│ ├── DDos_vs_BENGIN.png # Class distribution visualization
│ ├── confusion_matrices.png # Confusion matrices for all three models
│ ├── model_comparison_report.csv # Benchmark metrics across classifiers
│ └── threshold_analysis.png # Optimal decision threshold analysis
├── Scripts/
│ ├── analysis.ipynb # Exploratory data analysis notebook
│ ├── analysis_monday.py # Feature engineering and preprocessing
│ └── main.ipynb # Model training, evaluation, and export
├── Models/
│ └── best_model.pkl # Serialized XGBoost model + artifacts
└── SOC/
├── alerts_log.csv # Logged alert events
├── app.py # SOC dashboard application
├── infer.py # Inference engine wrapper
├── rules.py # Rule-based incident response logic
└── simulator.py # Network event stream simulator
```
## 模型性能
在 CICIDS-2017 测试集上对三个分类器进行了基准测试。评估优先考虑 **F1 分数** 和 **召回率** 而非原始准确率——在安全背景下,漏报攻击(假阴性)的成本远高于误报。
| 模型 | 准确率 | 精确率 | 召回率 | F1 分数 |
|---|---|---|---|---|
| Logistic Regression | 97.2% | 96.8% | 97.0% | 96.9% |
| Random Forest | 99.9% | 99.9% | 99.9% | 99.9% |
| **XGBoost (selected)** | **100%** | **100%** | **100%** | **1.0000** |
XGBoost 被选为生产模型。主要结果:
- 在保留的测试集上,**F1 分数:1.0000** 和 **ROC-AUC:1.0000**。
- **最佳决策阈值:0.4357**,经计算以平衡检测敏感性和特异性。
- 通过混淆矩阵分析确认了 **近乎零的假阳性和假阴性**。
- **精确率-召回率曲线** 在所有阈值下保持接近完美的 1.00 AUC,表明模型具有卓越的稳定性——这是高风险、实时环境中的关键属性。
两种集成方法的表现都显著优于逻辑回归,证实了非线性集成方法更适合网络流量模式的复杂性。
## SOC 仪表板
`soc/` 模块将原始模型预测转换为供安全分析师使用的操作监控界面。当分类器将流标记为恶意时,`rules.py` 中的规则引擎会用以下信息丰富警报:
- **攻击者和目标 IP 地址**
- **攻击分类**(DoS、端口扫描等)
- **严重性级别**(低 / 中 / 高 / 严重)
- **建议操作**(例如,阻止 IP、速率限制、升级)
仪表板 (`app.py`) 提供传入警报、流量分布、主要目标端口和系统级指标的实时可视化。内置模拟器 (`simulator.py`) 生成逼真的事件流,用于测试和演示,而无需实时网络流量捕获。
## 实时验证
除了基准评估之外,该系统还在受控网络环境中针对真实的模拟攻击进行了验证:
- 一台 **Kali Linux** 机器被配置为攻击者。
- 一台 **Windows 主机** 被配置为目标。
- 从 Kali 发起 **Nmap SYN 扫描**,并通过目标上的 **tcpdump** 进行捕获。
- 数据包捕获证实,SentinAI 流水线正确地将扫描活动标记为恶意,从而弥合了学术模型性能与实际部署之间的差距。
## 数据集
**CICIDS-2017** — 加拿大网络安全研究所入侵检测评估数据集 (2017)
该数据集包含在五天内的现实实验室环境中生成的标记网络流,涵盖以下攻击类别:
- 良性(背景)流量
- DoS / DDoS (Slowloris, Hulk, GoldenEye, LOIC)
- Web 攻击(暴力破解、SQL 注入、XSS)
- 僵尸网络 (ARES)
- 端口扫描
- 渗透
## 未来增强
- **自适应 / 在线学习** — 实现从实时流量中持续重新训练模型,以跟踪新出现的和不断演变的威胁模式,而无需手动重新部署。
- **自动化响应系统** — 实现自主防火墙规则生成和高置信度检测下的恶意 IP 阻止,将分析师响应时间减少到接近零。
- **多攻击扩展** — 将检测范围从 DDoS 扩展到包括网络钓鱼、勒索软件和内部威胁行为模式。
- **实时数据包集成** — 通过 Scapy 或 tcpdump 直接摄取实时 PCAP 流进入推理流水线,消除对预处理 CSV 数据的依赖,并实现真正的数据包级检测。
## 贡献者
| 姓名 |
|---|
| Akilan V S |
| Subash Venkat |
| Abhishek Prabakar |
标签:Apex, CICIDS-2017, CISA项目, DDoS防御, DevSecOps, F1分数, IP 地址批量处理, NoSQL, XGBoost, 上游代理, 入侵检测系统, 可视化仪表板, 多模型对比, 安全数据湖, 安全运营中心, 异常检测, 插件系统, 数据预处理, 未知威胁检测, 机器学习, 深度学习, 渗透测试验证, 端口扫描检测, 网络安全, 网络安全监控, 网络映射, 网络流分析, 自动化响应, 误报率, 逆向工具, 隐私保护, 零日漏洞, 驱动开发