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, 混合机器学习, 现代安全运营, 端到端延迟, 等渗回归, 网络安全, 网络安全防护, 网络流量分析, 置信度门控, 警报系统, 请求拦截, 逆向工具, 量子支持向量机, 量子机器学习, 量子神经网络, 量子计算, 量子门控, 隐私保护, 高级持续性威胁