Praveen-nac/GPON-Guard-Statistical-Anomaly-Detection-System-for-GPON-EPON-Networks

GitHub: Praveen-nac/GPON-Guard-Statistical-Anomaly-Detection-System-for-GPON-EPON-Networks

GPON-Guard 是一个针对 GPON/EPON 宽带接入网络物理层的统计异常检测系统,通过规则引擎与 z-score 统计基线相结合,检测 Rogue ONU、信号篡改、控制台暴力破解和流量异常等安全威胁。

Stars: 0 | Forks: 0

# GPON-Guard GPON/EPON 网络的统计异常检测系统 ## 关于本项目 在构建了我的 ISP 网络监控与故障检测系统(见 github.com/Praveen-nac/isp-network-monitoring-system)之后,我想更进一步。那个 项目可以告诉你网络是否健康,但无法告诉你是否有人正在攻击它。 因此,我开始测试针对同类型网络的安全层实际上应该是什么样子。现有的多数 网络安全工作都是围绕服务器、云和 Web 应用构建的。几乎 没有人关注宽带网络的物理接入层 —— 即 OLT、ONU 和 光纤本身 —— 尽管我每天都在亲手处理这一层,并且深知它实际上有多么暴露。任何 能够接触到接续盒或路边机柜的人都可以物理触碰 它。正是这一空白促使我开发了本项目。 我复用了监控项目中相同的技术栈和整体 pipeline 设计 (采集器 -> 存储 -> API -> dashboard),在此基础上,汲取 该项目故障检测逻辑的经验,我为安全 事件构建了一个正式的检测引擎,而不仅仅是检测故障。 ## 实际检测内容 我模拟了一个真实的接入网络 —— 1 个 OLT、4 个 PON 端口、128 个 ONU —— 并向其中注入四种类型的 攻击/篡改场景,以此来测试检测逻辑: **Rogue ONU** —— 未经注册的设备尝试加入 PON 端口。这模拟了有人 切入光纤并接入自己的 ONU 的情况。通过与已知序列号的简单白名单检查即可 捕获。 **信号篡改** —— 合法 ONU 的 Rx 光功率突然跳变或跌落到 正常范围之外,这正是光纤窃听、未经授权的接续或 有人破坏连接器时会发生的情况。使用针对该 ONU 自身 近期历史的滚动 z-score 来捕获,而不是使用固定阈值,因为 正常的信号水平因 ONU 而异。 **OLT 控制台暴力破解** —— 在短时间窗口内,来自同一 来源的针对 OLT 管理界面的重复失败登录尝试。 **流量异常** —— ONU 突然发送远高于其基线的流量,这可能 意味着客户的设备已被入侵,并被用于窃取带宽或作为 DDoS 的一部分。 ## 构建方式 - `simulator.py` 持续为所有 128 个 ONU 生成遥测数据,并偶尔注入 上述四种场景之一 - `db.py` 将所有数据存储在 SQLite 中 —— 遥测数据、警报、登录尝试 - `detector.py` 是实际的检测逻辑 —— 部分基于规则(速度快,能捕获 已知模式),部分使用基于 z-score 的统计基线漂移(能捕获 不匹配已知特征但看起来仍然异常的情况) - `app.py` 在此基础上提供 Flask REST API - dashboard(模板 + 静态 JS)实时展示这些信息 —— 一个 PON 拓扑图、一个实时遥测 表和一个警报流 我特意同时采用了基于规则和统计的检测方法,而不仅仅是其中之一。规则可以捕获 你早就想到要去检查的内容。而统计端可以捕获 你没想到的内容。这与真实的入侵检测系统使用的 基本理念相同,只是将其应用于网络上几乎 没有其他专用工具的这部分。 ## 运行方式 ``` pip install -r requirements.txt python app.py ``` 然后打开 http://127.0.0.1:5000。它会立即开始生成数据,并大约每隔几个 周期注入一次攻击场景,因此你会在第一分钟内看到警报。 ## 后续计划 - 将 z-score 逻辑替换为训练好的 Isolation Forest,并实际比较两者之间的 假阳性率 - 同时模拟加密弱点角度 —— 一些 GPON 部署在 下行链路上不强制使用 AES-128,这在理论上允许位置合适的 rogue ONU 窃听其他 用户的流量 - 在同一个 PON 端口上关联警报,而不是孤立地处理每个警报 —— 短时间窗口内同一端口上的多个 信号篡改事件,其意义远大于单个事件 - 最终接入真实的 OLT SNMP/TR-069 数据,而不是模拟数据 - 针对 simulator 自身的真实情况进行适当的精确率/召回率评估,因为它 已经确切知道每次注入攻击的确切时间和位置 ## 技术栈 Python、Flask、SQLite、原生 JS/CSS。与技术栈与我的监控项目相同,这是有意为之 —— 这意味着它旨在与那个项目配套使用,而不是作为毫不相干 的独立项目。 ## 未来工作 GPON-Guard 目前是一个在模拟 GPON/EPON 流量上验证过的工作原型。以下方向将其扩展为更严谨的研究: - **真实硬件验证**:针对从生产 PON 网络捕获的实时 OLT/ONU 流量测试检测准确率,而不仅仅是模拟数据。 - **自适应基线**:扩展滚动 z-score 模型以考虑 合法的长期漂移(例如季节性信号变化、光纤老化), 这样基线就不需要手动重置。 - **机器学习检测层**:探索监督/无监督 模型(例如 Isolation Forest、自编码器),作为当前 基于规则 + 统计方法的补充层,以捕获单独使用这两种方法都 无法捕获的攻击模式。 - **规模测试**:在运营商规模(跨多个 OLT 的数千个 ONU)下评估检测延迟和假阳性率,而不仅仅是 128 个 ONU 的模拟。 - **跨层关联**:将物理层异常信号(本 项目)与更高层的网络流量分析结合起来,以实现更可靠的 攻击归因。 这份路线图是我打算从事的研究生研究的基础 —— 将物理层 PON 安全从一个自制原型转变为 经过正式验证的研究成果。
标签:GPON, 实时处理, 异常检测, 插件系统, 数据可视化, 物理安全, 网络安全, 逆向工具, 隐私保护