Diaoziyi/agentic-ai-ids-platform
GitHub: Diaoziyi/agentic-ai-ids-platform
这是一个利用多AI代理模拟安全运营中心工作流的入侵检测平台,旨在将机器学习检测结果自动化转化为可操作的威胁情报和响应建议。
Stars: 0 | Forks: 0
# Agentic AI 入侵检测与威胁情报平台
## 项目概述
本项目实现了一个用于网络安全运维的 **Agentic AI 工作流**。
该平台通过集成多个 AI 代理来模拟现代安全运营中心的工作流程,扩展了传统的机器学习入侵检测系统。
该系统结合了:
- 基于机器学习的入侵检测
- 通过四代理流水线进行的 AI 驱动威胁分析
- 风险分类与严重性评分
- 事件响应建议
- SOC 风格的事件报告
- Streamlit 分析师界面和 FastAPI 推理 API
本项目为以下课程开发:
**CI7526 – 网络与人工智能(应用)**
伦敦金斯顿大学
## 核心功能
### 机器学习 IDS
- 基于 RandomForest 的多类入侵检测
- 使用 NSL-KDD 基准数据集进行训练(125,973 个训练样本,22,544 个测试样本)
- 训练集包含 23 种攻击类别;在 KDDTest+ 中评估了 39 个类别
- 预处理流水线:通过 sklearn ColumnTransformer 实现 StandardScaler + OneHotEncoder
- 特征重要性分析以提高可解释性(可视化了前 20 个特征)
- 进行了三项实验:基线模型、类权重平衡、SMOTE 过采样
### 多代理 AI 工作流
该平台在序列化流水线中使用了四个专门的 AI 代理:
| 代理 | 职责 |
|---|---|
| 威胁分析代理 | 解读机器学习分类结果,并生成自然语言的威胁叙述 |
| 风险分类代理 | 分配严重性等级(低 / 中 / 高 / 危急)并提供理由 |
| 响应建议代理 | 生成优先级明确、可操作的事件响应步骤 |
| SOC 报告生成代理 | 将所有代理输出编译成结构化的 SOC 事件报告 |
### 网络安全能力
- AI 辅助的威胁情报生成
- SOC 工作流模拟与自动化
- 人在回路的事件响应(所有输出都需要分析师审核)
- 通过特征重要性分析实现可解释 AI
- 人类可读的 SOC 风格事件报告
## 模型性能
进行了三项实验,以评估和改进分类器在 KDDTest+ 上的性能。
### 实验 1 — 基线模型比较
| 模型 | 准确率 | 宏平均 F1 | 训练时间 |
|---|---|---|---|
| RandomForest | 72.15% | 0.23 | ~4s |
| SVM | ~70% | ~0.22 | ~1300s |
| KNN | ~70% | ~0.24 | ~0.2s |
### 实验 2 — 类权重平衡
| 模型 | 准确率 | 宏平均 F1 | 训练时间 |
|---|---|---|---|
| RandomForest + balanced | 72.15% | **0.2664** | 4.2s |
| SVM + balanced | 70.76% | 0.2281 | 1300.3s |
| KNN | 70.39% | 0.2452 | 0.2s |
### 实验 3 — SMOTE 过采样 + RandomForest
| 指标 | 值 |
|---|---|
| 准确率 | 71.99% |
| 宏平均 F1 | 0.2496 |
| SMOTE 后的训练样本 | 1,414,203 |
| 训练时间 | 82.1s |
### 最终模型选择
**采用 `class_weight="balanced"` 的 RandomForest** 被选为最终模型:
- 所有实验中最高的宏平均 F1 (0.2664)
- 最快的训练时间(4.2s,而 SVM 为 1300s)
- 内置特征重要性以支持可解释性
### 重要特征排名
主导特征是 `num_4`(连接持续时间,重要性 ≈ 0.11),其次是 `num_28`(过去 2 秒内到同一主机的连接数,≈ 0.07)和 `x2_SF`(服务,≈ 0.07)。这些流量和持续时间统计解释了模型在 DoS 攻击上的强大性能(neptune F1=0.98, smurf F1=0.99)以及在低速慢速攻击上的不佳表现(guess_passwd F1=0.00)。
## 系统架构
```
Network Traffic Features (41 NSL-KDD features)
↓
ML IDS (RandomForest via FastAPI /predict)
↓
Threat Analysis Agent (OpenAI GPT)
↓
Risk Classification Agent (OpenAI GPT)
↓
Response Recommendation Agent (OpenAI GPT)
↓
SOC Report Generator Agent (OpenAI GPT)
↓
SOC Incident Report → Streamlit UI
```
## 使用的技术
| 技术 | 用途 |
|---|---|
| Python | 核心开发 |
| scikit-learn | 机器学习流水线、RandomForest、预处理 |
| imbalanced-learn | SMOTE 过采样(实验 3) |
| FastAPI | REST 推理 API(`/predict` 端点) |
| Streamlit | 面向分析师的用户界面 |
| OpenAI API | 多代理 AI 工作流 |
| Pandas / NumPy | 数据处理 |
| Matplotlib / Seaborn | 特征重要性和混淆矩阵可视化 |
| Joblib | 模型持久化 |
## 项目结构
```
ids-ml-project/
│
├── src/
│ ├── app.py # Streamlit UI
│ ├── agents.py # Multi-agent orchestration
│ ├── prompts.py # Agent prompt templates
│ ├── api_server_advanced.py # FastAPI inference server
│ ├── predict.py # Standalone prediction utilit
│ └── train_model_advanced.py # Improved training script (class_weight + SMOTE)
│
├── models/
│ └── ids_model_advanced.pkl # Trained model pipeline (generated)
│
├── figures/
│ ├── feature_importance_smote.png # Top 20 feature importances
│ └── confusion_matrix_smote.png # Confusion matrix (top 10 classes)
│
├── data/
│ └── nsl-kdd/
│ ├── KDDTrain+.txt
│ └── KDDTest+.txt
│
├── requirements.txt
├── .env # API key (not committed — see setup)
└── README.md
```
## 安装与设置
### 1. 克隆仓库
```
git clone https://github.com/Diaoziyi/agentic-ai-ids-platform.git
cd agentic-ai-ids-platform
```
### 2. 创建虚拟环境
```
python3 -m venv venv
source venv/bin/activate # macOS/Linux
# venv\Scripts\激活 # Windows
```
### 3. 安装依赖
```
pip install -r requirements.txt
```
### 4. 下载 NSL-KDD 数据集
从 [NSL-KDD 数据集页面](https://www.unb.ca/cic/datasets/nsl.html) 下载 `KDDTrain+.txt` 和 `KDDTest+.txt`,并将其放置在 `data/nsl-kdd/` 目录中。
### 5. 配置 OpenAI API 密钥
在项目根目录下创建一个 `.env` 文件:
```
OPENAI_API_KEY=your_api_key_here
```
## 运行平台
### 步骤 1 — 训练模型(一次性设置)
```
python3 src/train_model_improved.py
```
这将训练使用 `class_weight="balanced"` 的 RandomForest 模型,并运行所有三项实验(基线、类权重平衡、SMOTE)。最终模型将保存到 `models/ids_model_advanced.pkl`。
### 步骤 2 — 启动 API 服务器(终端 1)
```
uvicorn src.api_server_advanced:app --reload
```
- API 可访问地址:`http://localhost:8000`
- 交互式文档:`http://localhost:8000/docs`
保持此终端运行。
### 步骤 3 — 启动 Streamlit UI(终端 2,新窗口)
```
python3 -m streamlit run src/app.py
```
- UI 可访问地址:`http://localhost:8501`
- 网络 URL:`http://:8501`
两个进程必须同时运行,平台才能端到端正常工作。
## API 参考
### `POST /预测`
接受一个包含 41 个 NSL-KDD 网络特征的 JSON 主体,并返回预测的攻击类别、类别概率以及前 3 个最可能的类别。
**请求:**
```
{
"features": [0, 1, 2, ..., 40]
}
```
**响应:**
```
{
"prediction": 3,
"probabilities": {"0": 0.02, "1": 0.85, ...},
"top_3_classes": {"1": 0.85, "3": 0.10, "0": 0.02}
}
```
**错误(特征数量错误):**
```
{
"error": "Expected 41 features, but got 40"
}
```
## 安全注意事项
对于生产环境部署,建议采取以下控制措施:
| 控制措施 | 建议 |
|---|---|
| API 传输 | 使用 TLS 1.3 和 ECDHE(强制) |
| 密钥管理 | 使用 HashiCorp Vault 或 AWS Secrets Manager(不要使用 .env) |
| 模型完整性 | 训练时对 `ids_model_advanced.pkl` 进行 SHA-256 签名;加载时验证 |
| API 认证 | UI 和 API 之间使用 HMAC-SHA256 请求签名 |
| 访问控制 | 对 Streamlit UI 和 API 端点实施基于角色的身份验证 |
| 数据保留 | 定义日志保留策略;应用 GDPR 数据最小化原则 |
## 法律与伦理考虑
- **GDPR:** 网络流量元数据可能构成个人数据。在实时部署前需要进行数据保护影响评估。
- **计算机滥用法案 1990:** 此系统只能部署在已获得明确授权的网络上。
- **AI 偏见:** 该模型无法检测 KDDTest+ 中 39 个攻击类别中的 25 个。在采取行动前,所有输出必须经过人工分析师审核。
- **人在回路:** 所有 AI 代理输出均为建议性质。平台不执行自动化强制操作。
- **AI 幻觉:** OpenAI GPT 代理可能生成看似合理但不正确的建议。需要分析师验证。
## 已知局限性
| 局限性 | 详情 |
|---|---|
| 数据集陈旧 | NSL-KDD 源自 1999 年的数据;未涵盖现代攻击向量 |
| 协变量偏移 | KDDTest+ 包含 KDDTrain+ 中没有的攻击类别;导致宏平均 F1 仅为 0.27 |
| 无实时捕获 | 系统需要预先提取的 41 个特征向量;无法进行实时数据包捕获 |
| OpenAI 依赖 | 如果 API 不可用或配额超出,代理流水线将失败 |
| 无身份验证 | 当前实现对 UI 或 API 端点没有访问控制 |
## 未来改进
| 优先级 | 改进项 | 理由 |
|---|---|---|
| 高 | 在 CICIDS-2017 或 UNSW-NB15 上重新训练 | 解决协变量偏移;提高宏平均 F1 |
| 高 | SHAP 可解释性 | 为每个预测提供特征归因,增强分析师信任 |
| 高 | 使用现代数据集进行 SMOTE | 当训练/测试数据分布相同时,过采样有效 |
| 中 | 本地 LLM 部署 (Ollama) | 消除对 OpenAI API 的依赖;支持离网部署 |
| 中 | 实时数据包捕获 (scapy) | 支持实时网络监控 |
| 中 | SIEM 集成 (Splunk / Elastic) | 生产就绪的告警管理 |
| 低 | SOAR 集成 | 具有人类审批门控的自动化响应工作流 |
## 学术背景
**课程:** CI7526 – 网络与人工智能(应用)
**重点领域:** Agentic AI、AI 协同生产、网络安全工作流、安全运营自动化
标签:AI安全, Apex, AV绕过, Chat Copilot, FastAPI, Kubernetes, NSL-KDD, Petitpotam, RandomForest, SMOTE, SOC报告, Streamlit, 人工智能, 入侵检测系统, 分类器, 基准数据集, 多代理AI, 多代理系统, 威胁分析, 威胁情报, 安全数据湖, 安全运营, 安全运营中心, 开发者工具, 扫描框架, 数据预处理, 机器学习, 机器学习分类, 机器学习模型, 模型解释性, 特征重要性, 用户模式Hook绕过, 类别平衡, 网络安全, 网络映射, 网络流量分析, 自动化侦查工具, 访问控制, 逆向工具, 隐私保护, 风险分类