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, 实时处理, 异常检测, 插件系统, 数据可视化, 物理安全, 网络安全, 逆向工具, 隐私保护