pipolimoa/QSentry
GitHub: pipolimoa/QSentry
融合 Suricata、LightGBM 和 4 量子比特 QSVM 的三阶段混合入侵检测系统,通过置信度门控机制仅在经典模型不确定时触发量子分类器,以降低计算开销并提升漏报恢复率。
Stars: 0 | Forks: 0
# QSentry — 量子置信度门控入侵检测系统
一个实时的三阶段混合 IDS,结合了 **Suricata**(特征签名)、**LightGBM**(经典 ML)和 **4 量子比特量子支持向量机** (QSVM)。其创新之处在于:量子分类器仅在经典模型不确定时触发——这是一个置信度门控机制,将量子计算成本保留在最能发挥作用的环节,而将简单案例交由经典流水线处理。
```
Network ─▶ Suricata (48,581 rules) ─▶ FastAPI hybrid core ─▶ n8n ─▶ Slack + dashboard
│
LightGBM (classical)
│
conf ≥ 0.75 ─┴─ conf < 0.75
│
QSVM gate
(ZZ-feature-map · 4 qubits)
```
## 核心数据
| 设置 | 指标 | 数值 |
|---|---|---|
| CIC-IDS-2017 (分布内) | LightGBM 准确率 | **99.89 %** |
| CIC-IDS-2017 漏报恢复 | 量子门控 | **16 / 20 (80 %)** |
| Docker 实验室 2025 (环境偏移) | 逐事件召回率,T = 0.5 | **20 %** (1 / 5 次攻击) |
| MAWI WAN 2020 (留存数据,已校准) | 逐事件召回率,T = 0.1 | **66.7 %** (8 / 12 次事件) |
| 端到端警报延迟 | 检测 → Slack | **< 1 秒** |
99.89 % / 80 % 的数据是 CIC-IDS-2017 上的核心结果(完整报告)。
Docker / MAWI 数据是外部有效性检验——展示了在严格留存的拆分数据上使用 **IsotonicRegression 校准** 的真实分布外表现。
## 快速开始
### 前置条件
- Kali Linux(或 Ubuntu 22.04+)
- Python 3.13
- Docker(用于实验室容器)
- Suricata 8.0.3
- 8 GB 内存,4 核 CPU,20 GB 磁盘
### 安装
```
git clone https://github.com/pipolimoa/QSentry.git
cd QSentry
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
sudo apt install suricata && sudo suricata-update
```
### 启动所有组件(六个终端)
```
# 1. Lab containers (攻击者 + 受害者)
cd lab && ./lab.sh up && ./lab.sh status
# 2. Hybrid prediction API
source venv/bin/activate
python -m uvicorn src.api.ids_api:app --host 127.0.0.1 --port 8000
# 3. n8n (告警编排)
n8n start
# 4. Dashboard servers (HTTP UI :8080 · WebSocket :9000 · n8n push receiver :9001)
source venv/bin/activate
python -u scripts/realtime_monitor.py --servers-only
# 5. Live sensor (br-idslab 上的 Java CICFlowMeter)
cd lab && ./start_sensor.sh
# 6. CSV-to-n8n bridge (tail-from-end 模式)
source venv/bin/activate
python -u lab/bridge/cicflow_bridge.py
```
打开 `http://127.0.0.1:8080`——仪表板应显示绿色的 **Connected**。
### 运行演示攻击
```
docker exec ids-attacker nmap -sS -p 79,53,37,23,21 ids-victim
```
大约 15 秒内:仪表板上显示 **4 个 ATTACK 警报**(端口 23、53、79、37),**1 个 BENIGN**(端口 21——开放的 FTP)。所有四个攻击流均触发了量子门控 (`[Q✓]`)。
## API
```
GET /health → {"status":"ok","models":["lightgbm","qsvm"]}
POST /predict → classical-only
POST /predict/hybrid → classical + quantum gate
POST /predict/batch → batch classical
```
混合响应:
```
{
"final_prediction": 1,
"label": "ATTACK",
"classical": { "prediction": 0, "confidence": 0.7342 },
"quantum": { "used": true, "prediction": 1 },
"quantum_recovery": true,
"disagreement_flag": true,
"alert_level": "HIGH"
}
```
## 仓库结构
```
ids_project/
├── src/
│ ├── api/ # FastAPI hybrid prediction server
│ ├── data/ # PCAP & CSV preprocessing
│ ├── models/ # LightGBM / XGBoost training
│ ├── quantum/ # QSVM, kernel computation, recovery analysis
│ └── eval/ # External-validity evaluation (Docker, MAWI, calibration)
├── scripts/
│ ├── realtime_monitor.py # Live capture + dashboard servers
│ ├── attack-scenarios.sh # Lab attack simulation
│ └── ids-monitoring.sh # Suricata helper
├── lab/
│ ├── lab.sh # Bring up Docker attacker + victim
│ ├── start_sensor.sh # Java CICFlowMeter on bridge interface
│ └── bridge/cicflow_bridge.py
├── tools/
│ ├── start_qcg_ids.py # All-in-one launcher
│ └── suricata_to_n8n.py # EVE JSON → n8n webhook bridge
├── dashboard/ # Static HTML + WebSocket client
├── n8n/ # Workflow exports (Flow Ingest, Suricata)
├── models/ # Trained models (.pkl, .npy) — gitignored
├── data/ # Datasets — gitignored
└── requirements.txt
```
## 20 个特征
从 CIC-IDS-2017 的 79 个原始流特征中,通过方差阈值 → 相关性剪枝 (> 0.95) → 互信息排名选出。对于量子阶段,它们通过 PCA 进一步降维至 4 个组件,以匹配 4 量子比特电路。
| # | 特征 | 类别 |
|---|---------|----------|
| 1 | Bwd Packet Length Max | 数据包大小 |
| 2 | Destination Port | 连接 |
| 3 | Flow IAT Std | 时间 |
| 4 | Flow IAT Mean | 时间 |
| 5 | Flow Packets/s | 速率 |
| 6 | Total Fwd Packets | 容量 |
| 7 | Total Length of Fwd Packets | 容量 |
| 8 | Init_Win_bytes_backward | TCP 窗口 |
| 9 | Fwd Header Length | 头部 |
| 10 | PSH Flag Count | TCP 标志 |
| 11 | Init_Win_bytes_forward | TCP 窗口 |
| 12 | Fwd Packet Length Max | 数据包大小 |
| 13 | Bwd Packets/s | 速率 |
| 14 | Fwd Packet Length Mean | 数据包大小 |
| 15 | Bwd Header Length | 头部 |
| 16 | Fwd IAT Min | 时间 |
| 17 | Bwd Packet Length Min | 数据包大小 |
| 18 | Flow Bytes/s | 速率 |
| 19 | act_data_pkt_fwd | 容量 |
| 20 | Min Packet Length | 数据包大小 |
## QSVM 细节
- ZZFeatureMap,4 量子比特,2 次重复,线性纠缠
- 核函数:`K(xᵢ,xⱼ) = |⟨Φ(xᵢ)|Φ(xⱼ)⟩|²`(状态保真度)
- 在 2000 个平衡样本上训练(受 NISQ 和二次成本限制)
- 核矩阵计算:在 Intel i7-13700K 上耗时约 4.2 小时,随后缓存为 `.npy`
- 运行时:无噪声 Qiskit `StatevectorSampler` 模拟器
## 外部验证(提交后新增)
除了 CIC-IDS-2017 外,我们还进行了两项额外的评估,以衡量在真实世界中的迁移能力:
- **Docker 实验室 2025**——构建了一个容器化的攻击者/受害者对,发起了五种攻击场景(PortScan、SSH-brute、FTP-brute、Slowloris、SQLi)。在默认阈值下的逐事件召回率为 **20 %**——只有端口扫描能可靠触发;其余场景因 `Init_Win_bytes_forward` 上 2017 → 2025 的操作系统指纹漂移,得分均低于 0.5。
- **MAWI WAN 2020**——来自真实骨干网追踪的 5362 个流,带有 MAWILab 第三方异常标签。在 8 个事件上进行 IsotonicRegression 校准,并在留存的 12 个事件上预设 `T = 0.1` 后:逐事件召回率为 **66.7 %**。AUC-ROC = 0.552——这是该分布的真实上限。校准拆分上的 Youden's J 独立选择了 `T = 0.125`,得出了相同的 66.7 % 结果——这反驳了“刻意挑选最优解”的质疑。
这些数字被刻意与醒目的 99.89 % / 80 % 数据放在一起展示。它们是分布偏移的代价,也为未来的工作划定了范围。
## 团队
| 姓名 | 学号 |
|------|-----------|
| Abderrahmane Moharrar | 202200768 |
| Malek Anas Al Kilani | 202200311 |
| Mohammed Al-Yazidi | 202201028 |
| Sultan Al-Thani | 202100304 |
## 许可证
学术项目——卢塞尔大学信息技术学院。未获授权用于商业用途。
标签:4-qubit, AMSI绕过, AV绕过, Beacon Object File, CIC-IDS-2017, Docker, FastAPI, IP 地址批量处理, LightGBM, MAWI, Metaprompt, n8n, Python, QSVM, Slack, Suricata, ZZ-feature-map, 仪表盘, 入侵检测系统, 外部有效性验证, 大学生毕业设计, 威胁检测, 安全数据湖, 安全防御评估, 异常检测, 恶意流量检测, 无后门, 梯度提升树, 模型校准, 混合IDS, 混合机器学习, 现代安全运营, 端到端延迟, 等渗回归, 网络安全, 网络安全防护, 网络流量分析, 置信度门控, 警报系统, 请求拦截, 逆向工具, 量子支持向量机, 量子机器学习, 量子神经网络, 量子计算, 量子门控, 隐私保护, 高级持续性威胁