pd241008/SentinelMesh

GitHub: pd241008/SentinelMesh

一个基于 gossip 传播和 quorum 共识的去中心化网络入侵感知框架,用于在无集中式 SIEM 的条件下集体检测分布式低速攻击。

Stars: 1 | Forks: 0

# SentinelMesh:基于 Gossip 传播的集体异常检测 **SentinelMesh** 是一个专为分布式网络入侵感知设计的去中心化异常关联框架。现代网络防御通常依赖于集中式的安全信息与事件管理(SIEM)pipeline,这会造成延迟瓶颈、产生巨大的带宽成本,并引入单点故障。 SentinelMesh 用一种轻量级、去中心化的**基于 gossip 的关联**机制取代了集中式聚合器。独立的 IDS 节点通过流行病协议交换紧凑的异常摘要,并利用 quorum 共识规则来集体升级对任何单个节点而言在统计上看起来正常的“低速慢速”攻击(例如,分布式端口扫描、凭证填充)。 ## 🔍 验证与深入分析 有关 metrics pipeline 验证、已解决的结构性 bug,以及用于将真实传播信号与环境 mesh 噪声隔离的匹配反事实控制架构的详细技术复盘,请参阅 [Bug事后分析](post_mortem.md)。 ## 🏛 架构 ### 系统拓扑 ``` graph TD subgraph "SentinelMesh (Decentralized Gossip)" N1((Node 1)) <-->|Constant-Size Digest| N2((Node 2)) N2 <-->|Constant-Size Digest| N3((Node 3)) N3 <-->|Constant-Size Digest| N1 N4((Node 4)) <-->|Constant-Size Digest| N2 N1 <-->|Constant-Size Digest| N4 end subgraph "Traditional SIEM (Centralized)" E1((Edge 1)) -->|Raw Logs/Flows| Agg[SIEM Aggregator] E2((Edge 2)) -->|Raw Logs/Flows| Agg E3((Edge 3)) -->|Raw Logs/Flows| Agg E4((Edge 4)) -->|Raw Logs/Flows| Agg end ``` ### 节点工作流 ``` sequenceDiagram participant Traffic as Network Traffic participant Local as Local Scorer (Node i) participant Cache as Digest Cache participant Peers as Network Peers Traffic->>Local: Ingest local flow partition Local->>Local: Compute O(1) EWMA z-score & tag category Local->>Cache: Store self digest loop Every Gossip Round Local->>Peers: Push Digest to f random peers Peers-->>Cache: Receive incoming peer digests Cache->>Cache: Retain latest digest per peer in window W alt |{peers with score > \tau_{local}}| \ge q Cache->>Cache: Trigger Collective Alert (Quorum Escalation)! end end ``` ## 📂 项目结构(多分支 Monorepo) 本仓库被组织为三个并行的分支,以支持模拟、机器学习验证和数据可视化。 - **`simulator/`(分支 1 - Go)**:核心离散事件模拟引擎。处理 UNSW-NB15 数据集的解析、伪随机节点分区、$O(1)$ EWMA 评分、流行病 push-gossip 交换以及 quorum 升级规则。 - **`ml-crosscheck/`(分支 2 - Python)**:独立评分器验证。使用 Isolation Forests 和 Autoencoders 等模型对 Go 评分器的升级进行交叉验证,并生成验证摘要。 - **`dashboard/`(分支 3 - Next.js)**:用于交互式扫描结果探索的前端 Web 应用。可视化跨 mesh 大小($N$)和 fanout($f$)等变量的召回率、带宽开销和收敛延迟等指标。 *辅助目录包括 `data/`(数据集和获取脚本)、`docs/`(架构和进度跟踪)、`results/`(共享输出契约)和 `paper/`(LaTeX 源码)。* ## 🚀 快速开始 ### 1. 获取数据集 模拟使用标准的 UNSW-NB15 数据集。使用提供的脚本下载它: ``` ./data/scripts/fetch_dataset.sh ``` ### 2. 运行模拟器 导航到 simulator 分支,并使用默认配置值运行参数扫描。*(执行 CLI 正在积极开发中)*: ``` cd simulator go run cmd/simulate/main.go --config configs/sweep_default.yaml ``` ### 3. 查看结果 结果将写入 `results/sweep/`(CSV)和 `results/crosscheck/`(CSV + JSON)。启动 dashboard: ``` cd dashboard npm install npm run dev # 打开 http://localhost:3000 ``` 然后将结果复制到 dashboard 的 public 目录中: ``` cp -r results/sweep/*.csv dashboard/public/data/ cp -r results/crosscheck/* dashboard/public/data/ ``` ## 🧪 测试 ### 测试统计 | 分支 | 语言 | 测试 / 构建 | 详情 | |---|---|---|---| | 核心 Simulator | Go | **41 个测试** | 10 个包 | | ML Crosscheck | Python | **49 个测试** | 3 个测试文件 | | Dashboard | TypeScript | **构建** | 2 个路由,2 个图表组件 | | **总计** | | **90 个测试 + 干净构建** | | ### 分支 1 — Simulator (Go) 跨越以下包的 **41 个测试**: | 包 | 测试数 | 重点 | |---|---|---| | `dataset` | 3 | CSV 解析、流提取、错误处理 | | `fragment` | 3 | 节点分区、碎片化、计数保留 | | `scorer` | 5 | EWMA z-score、边界、可重复性 | | `node` | 4 | 节点逻辑、摘要缓存、流摄取 | | `gossip` | 4 | 流行病 push、对等节点选择、陈逐出 | | `quorum` | 5 | 升级规则、阈值、多类别、窗口 | | `baseline` | 3 | 独立/集中式运行、无告警情况 | | `metrics` | 5 | 召回率、带宽、延迟、边缘情况 | | `sweep` | 3 | 配置加载、扫描执行 | | `tests` (集成) | 3 | 完整 pipeline、端到端扫描、基线比较 | ``` cd simulator && go test ./... -count=1 ``` ### 分支 2 — ML Crosscheck (Python) 跨越 3 个文件的 **49 个测试**: | 文件 | 测试数 | 重点 | |---|---|---| | `test_dataset.py` | 23 | 数据加载、标签、特征、拆分、归一化、分区 | | `test_models.py` | 15 | Isolation Forest、Autoencoder、Go EWMA 副本、分数边界 | | `test_integration.py` | 11 | 完整 pipeline、各类别指标、CSV/JSON 报告输出 | ``` cd ml-crosscheck && pytest tests/ -v # 或从项目根目录: python -m pytest tests/ml-crosscheck/ -v ``` ### 分支 3 — Dashboard (Next.js) **干净构建**,没有 lint 错误。两个路由: - `/` — 扫描概览:召回率图表、带宽图表、原始结果表 - `/crosscheck` — ML crosscheck 比较视图,包含总体和各类别表格 ``` cd dashboard npm run build ``` ### 测试数据 位于 `simulator/testdata/testdata.csv` 的小型合成 CSV 数据集,包含跨 7 个攻击类别(分析、后门、dos、漏洞利用、模糊测试、通用、侦察)加上正常流量的 15 个流。被 Go 和 Python 测试套件使用。 ## 📊 评估目标 基于使用分区的 UNSW-NB15 流量进行的离散事件模拟,本框架旨在衡量: - **检测召回率**:系统恢复针对碎片化侦察的检测能力的能力(对比基线孤立的边缘节点)。 - **带宽开销**:与集中式 SIEM 相比,峰值单点负载的减少,跟踪每个节点的 payload 成本。 - **收敛延迟**:跨不同 mesh 大小的 gossip 传播的扩展行为,以离散的 gossip 轮次衡量。
标签:Gossip协议, 分布式系统, 去中心化, 响应大小分析, 异常检测, 插件系统, 日志审计, 网络安全, 逆向工具, 隐私保护