Parag-098/Real-Time-Network-Traffic-Anomaly-Detection-using-Rule-Based-Analysis

GitHub: Parag-098/Real-Time-Network-Traffic-Anomaly-Detection-using-Rule-Based-Analysis

基于规则分析的实时网络流量异常检测系统,将数据包捕获、流跟踪、自适应规则检测与可解释仪表板整合为一个本地优先的 Django 应用,用于教学演示和毕业答辩。

Stars: 0 | Forks: 0

# 基于规则分析的实时网络流量异常检测 本项目是一个本地优先的 Django 应用程序,用于计算机网络毕业演示。它使用 Scapy 捕获数据包,将其分组为流,应用自适应的基于规则的检测,将弱信号关联为警报,将所有内容存储在 SQLite 中,并使用 Chart.js 呈现实时可解释的仪表板。 该系统经过特意设计,使得观察者无需查看代码即可了解发生了什么、为什么发生以及模拟的响应是什么。 ## 系统功能 该应用程序观察网络数据包,将其转换为流记录,应用滚动基线分析,检测可疑行为,对异常进行评分,将信号关联为单个警报,并在适用于答辩、研讨会或最终演示的仪表板中展示结果。 它支持两种操作模式: - 使用 Scapy 数据包捕获的实时监控。 - 用于安全离线演示的合成演示流量。 该仪表板侧重于可解释性,因此它不仅显示警报;还显示场景标签、触发警报的原因、贡献信号、分数细分、检测管道以及发生前/中/后的比较。 ## 核心技术栈 - Python 3.11+ 运行时。 - Django 5+ Web 框架。 - SQLite 作为本地持久层。 - Scapy 用于数据包嗅探和规范化。 - Chart.js 用于仪表板中的交互式图表。 - Django admin 用于检查数据包、流、警报和摘要记录。 ## 高层架构 应用程序被组织为一个紧凑但明确的管道。 1. 数据包捕获接收实时数据包或合成数据包。 2. 数据包规范化将其转换为稳定的内部快照。 3. 流跟踪将数据包分组为流记录,并计算数据包速率、突发行为和流状态。 4. 检测引擎评估流量峰值、端口扫描、ICMP 泛洪、重复的新连接和可疑 IP 行为等规则。 5. 评分将信号集转换为 0 到 100 的异常分数,并分为低、中、高严重级别。 6. 关联抑制重复项,并将弱信号合并为一个有意义的警报。 7. 动作服务分配模拟响应,如 allow、warn、rate_limit 或 simulated_block。 8. 摘要服务聚合仪表板的状态。 9. 视图同时暴露 HTML 页面和 JSON 统计 API。 10. 前端 JavaScript 获取 JSON 负载并每隔几秒更新一次仪表板。 ### 架构总结图 ``` Scapy or Synthetic Traffic | v PacketSnapshot normalization | v FlowTracker + rolling statistics | v DetectionEngine + adaptive thresholds | v AnomalyScorer + CorrelationEngine | v ActionService + SummaryService | v Django views + JSON API | v Dashboard HTML + Chart.js + AJAX refresh ``` ## 仓库结构 ### 根文件 - [manage.py](manage.py) 是 Django 的入口点,用于运行服务器、迁移、测试、模拟命令和监控命令。 - [README.md](README.md) 是本项目的指南。 - [requirements.txt](requirements.txt) 列出了外部运行时依赖项。 - [db.sqlite3](db.sqlite3) 是在运行时创建的本地 SQLite 数据库文件。 ### 项目配置包 - [network_anomaly/settings.py](network_anomaly/settings.py) 定义了已安装的应用、SQLite 配置、静态文件、模板设置、自定义测试运行器和监控调优值。 - [network_anomaly/urls.py](network_anomaly/urls.py) 将站点根目录路由到 monitor 应用,并暴露管理后台。 ### 监控应用 - [monitor/apps.py](monitor/apps.py) 注册应用配置。 - [monitor/admin.py](monitor/admin.py) 在 Django admin 中暴露模型。 - [monitor/models.py](monitor/models.py) 定义了数据包、流、警报和摘要的模式。 - [monitor/urls.py](monitor/urls.py) 定义了仪表板页面和 JSON 统计 API。 - [monitor/views.py](monitor/views.py) 渲染仪表板并构建统计负载。 - [monitor/test_runner.py](monitor/test_runner.py) 提供本地测试发现,以便在此工作区中可靠地加载所有测试。 - [monitor/test_suite.py](monitor/test_suite.py) 重新导出应用程序测试以方便发现。 ### 监控服务 - [monitor/services/packet_capture.py](monitor/services/packet_capture.py) 定义了 `PacketSnapshot`、Scapy 规范化和实时捕获服务。 - [monitor/services/flow_tracker.py](monitor/services/flow_tracker.py) 跟踪流,计算每个流的速率、突发分数和状态转换。 - [monitor/services/detection.py](monitor/services/detection.py) 实现自适应规则引擎和检测信号生成。 - [monitor/services/scoring.py](monitor/services/scoring.py) 将信号转换为异常分数和严重级别。 - [monitor/services/correlation.py](monitor/services/correlation.py) 将信号合并为警报并抑制重复项。 - [monitor/services/actions.py](monitor/services/actions.py) 将严重级别和警报类型映射到模拟响应。 - [monitor/services/performance.py](monitor/services/performance.py) 计算发生前/中/后的比较指标。 - [monitor/services/summaries.py](monitor/services/summaries.py) 从数据库刷新仪表板摘要快照。 - [monitor/services/engine.py](monitor/services/engine.py) 编排完整的数据包到警报管道。 ### 监控实用程序 - [monitor/utils/rolling.py](monitor/utils/rolling.py) 实现基线行为的滚动统计和阈值。 ### 模拟层 - [monitor/simulation/traffic.py](monitor/simulation/traffic.py) 定义了用于安全演示的合成流量场景。 ### 管理命令 - [monitor/management/commands/run_monitor.py](monitor/management/commands/run_monitor.py) 启动实时捕获或合成回退演示。 - [monitor/management/commands/simulate_traffic.py](monitor/management/commands/simulate_traffic.py) 通过管道运行选定的合成场景。 ### 数据库迁移 - [monitor/migrations/__init__.py](monitor/migrations/__init__.py) 将迁移文件夹标记为 Python 包。 - [monitor/migrations/0001_initial.py](monitor/migrations/0001_initial.py) 创建基础表。 - [monitor/migrations/0002_monitor_enhancements.py](monitor/migrations/0002_monitor_enhancements.py) 增加增强分析和摘要字段。 ### 模板和静态资产 - [monitor/templates/monitor/dashboard.html](monitor/templates/monitor/dashboard.html) 是专注于展示的仪表板布局。 - [monitor/static/monitor/dashboard.js](monitor/static/monitor/dashboard.js) 获取 JSON 统计信息并渲染图表、卡片、表格和可解释性面板。 - [monitor/static/monitor/style.css](monitor/static/monitor/style.css) 提供仪表板的视觉设计系统。 - [static/.gitkeep](static/.gitkeep) 将顶级静态文件夹保留在版本控制中。 ### 测试 - [monitor/tests/test_actions.py](monitor/tests/test_actions.py) 验证模拟响应选择。 - [monitor/tests/test_detection.py](monitor/tests/test_detection.py) 验证流量峰值、端口扫描、ICMP 泛洪和可疑 IP 检测。 - [monitor/tests/test_flow.py](monitor/tests/test_flow.py) 验证流分组、状态转换、过期和突发行为。 - [monitor/tests/test_correlation.py](monitor/tests/test_correlation.py) 验证关联、去重和严重级别升级。 - [monitor/tests/test_thresholds.py](monitor/tests/test_thresholds.py) 验证自适应基线学习。 - [monitor/tests/test_scoring.py](monitor/tests/test_scoring.py) 验证异常分数和严重级别映射。 - [monitor/tests/test_performance.py](monitor/tests/test_performance.py) 验证发生前/中/后的比较报告。 ## 数据模型 项目使用四个主要表在本地 SQLite 中存储所有内容。 ### PacketRecord 存储管道提取的原始数据包事实。 - 时间戳。 - 源 IP。 - 目标 IP。 - 源端口。 - 目标端口。 - 协议。 - 数据包大小。 - 流密钥。 ### FlowRecord 存储每个观察到的流的滚动状态。 - 流密钥。 - 源地址和目标地址。 - 源端口和目标端口。 - 协议。 - 数据包计数。 - 字节计数。 - 每秒数据包数。 - 突发分数。 - 首次和最后一次看到的时间戳。 - 持续时间。 - 流状态。 - 活动/非活动标志。 - 异常指标。 ### AlertRecord 存储系统创建的关联警报。 - 时间戳。 - 警报类型。 - 严重级别。 - 模拟动作。 - 源 IP 和目标 IP。 - 流密钥。 - 分数。 - 人类可读的消息。 - 贡献信号。 ### TrafficSummary 存储仪表板快照。 - 窗口开始和结束。 - 总数据包数。 - 总流数。 - 总警报数。 - 活跃流。 - 协议分布。 - 流量时间线。 - 热门用户。 - 热门可疑流。 - 危险 IP。 - 性能指标。 ## 运行时管道详解 ### 1. 捕获或合成数据包 数据包来自实时嗅探或合成场景生成器。实时嗅探使用 Scapy,而模拟命令构建确定性的测试流量,可安全在一台笔记本电脑上运行。 ### 2. 规范化数据包 `PacketSnapshot` 是管道使用的内部数据包结构。它包含时间戳、IP、端口、协议、数据包大小和计算出的流密钥。 ### 3. 跟踪流 流跟踪器按流密钥对数据包进行分组,更新数据包和字节计数,计算每秒数据包数,确定流是新的还是已建立的,并检测突发行为。 ### 4. 评估检测规则 检测引擎寻找可疑模式,例如: - 流量峰值。 - 端口扫描。 - ICMP 泛洪。 - 重复的新连接行为。 - 可疑的源 IP。 它还使用滚动基线,以便阈值能够适应本地的流量历史。 ### 5. 对异常进行评分 评分器将检测上下文和流状态组合为 0 到 100 的分数。该分数映射为低、中或高严重级别。 ### 6. 关联信号 关联引擎将微弱但相关的信号合并为一个警报。它还会抑制重复项,以免仪表板充斥着重复的条目。 ### 7. 选择模拟动作 动作服务为演示环境选择一个安全的响应: - allow。 - warn。 - rate_limit。 - simulated_block。 ### 8. 刷新摘要 摘要服务在处理完每个数据包后重新计算仪表板聚合。这使 UI 保持最新,而无需手动刷新。 ### 9. 提供仪表板 HTML 页面渲染初始外壳,而 JSON API 返回最新的摘要、警报列表、活跃流、性能比较、场景标签和可解释性负载。 ### 10. 渲染 UI 前端脚本每隔几秒拉取一次 JSON 端点,并更新图表、表格、警报详情卡、流解释卡和检测管道视图。 ## 可解释层 仪表板旨在教授检测逻辑,而不仅仅是展示数字。 它包括: - 一个标记当前流量状态的场景横幅。 - 一个总结面板,回答正在发生什么、为什么发生以及正在模拟什么动作。 - 一个带有条件和信号细分的可解释警报列表。 - 逐步的数据包到动作管道。 - 一个显示异常何时开始的警报时间线。 - 一个发生前/中/后的比较面板。 - 可疑流和危险 IP 排名面板。 此表示层纯粹是附加的。它不会改变核心检测逻辑。 ## 仪表板部分 仪表板页面分为几个视觉区域。 ### 标题和场景横幅 显示系统的当前状态,例如正常流量、检测到流量峰值或检测到端口扫描。 ### 摘要计数器 显示总数据包数、总流数、总警报数和活跃流数。 ### 图表 显示数据包流量趋势、警报时间线和发生前/中/后的比较。 ### 检测管道 显示从数据包到动作的概念路径。 ### 可解释警报 显示触发每个警报的原因以及哪些信号对其做出了贡献。 ### 最新警报表 显示最新警报及其时间戳、类型、严重级别、分数、动作和源 IP。 ### 活跃流表 显示实时的流状态、数据包速率、突发分数和指标。 ### 热门用户和可疑流 显示哪些来源产生的流量最多,哪些流看起来风险最高。 ### 危险 IP 突出显示在演示过程中最值得关注的来源。 ### 性能面板 显示发生前/中/后的流量比较指标和检测延迟。 ### 警报详情面板 以更具描述性的形式显示当前选定或最新的警报。 ## 合成流量场景 该项目包括用于演示和测试的确定性流量构建器。 ### 正常 创建具有 TCP、UDP 和 ICMP 数据包混合的稳定基线流量。 ### flood 创建来自单一来源的突发流量,以模拟峰值或泛洪。 ### port_scan 创建跨越多个目标端口的数据包序列,以模拟侦察。 ### 混合 将基线、泛洪和端口扫描行为组合成一个混合场景。 ## 管理命令 ### 运行 Web 仪表板 ``` python manage.py runserver ``` 如果您的终端未使用安装了 Django 的环境,请使用完整的解释器路径: ``` C:/Users/Parag/AppData/Local/Python/pythoncore-3.14-64/python.exe manage.py runserver ``` ### 应用迁移 ``` python manage.py migrate ``` ### 运行实时监控 ``` python manage.py run_monitor ``` 有用的选项: ``` python manage.py run_monitor --simulate python manage.py run_monitor --iface Ethernet python manage.py run_monitor --timeout 30 python manage.py run_monitor --count 100 ``` ### 运行合成流量 ``` python manage.py simulate_traffic normal python manage.py simulate_traffic flood python manage.py simulate_traffic port_scan python manage.py simulate_traffic mixed ``` 如有需要,可在 Windows 端中使用完整的解释器路径: ``` C:/Users/Parag/AppData/Local/Python/pythoncore-3.14-64/python.exe manage.py simulate_traffic port_scan ``` ### 运行测试 ``` python manage.py test ``` ## 设置说明 1. 创建并激活虚拟环境。 2. 安装依赖项。 ``` pip install -r requirements.txt ``` 3. 应用数据库迁移。 ``` python manage.py migrate ``` 4. 启动仪表板。 ``` python manage.py runserver ``` 5. 在浏览器中打开仪表板。 ``` http://127.0.0.1:8000/ ``` ## 测试策略 测试套件分为多个集中的单元,以使行为保持可解释和稳定。 - 流测试验证分组、过期和突发检测。 - 阈值测试验证滚动基线学习。 - 检测试证端口扫描、ICMP 泛洪和可疑 IP 规则。 - 关联测试验证去重和严重级别升级。 - 动作测试验证模拟响应映射。 - 评分测试验证从异常分数到严重级别的映射。 - 性能测试验证发生前/中/后的比较报告。 存在自定义测试运行器是因为,在此工作区中默认的 Django 测试发现无法按此项目的预期可靠地收集嵌套的测试模块。 ## Django Admin 管理站点位于 `/admin/` 并暴露: - PacketRecord。 - FlowRecord。 - AlertRecord。 - TrafficSummary。 管理注册被特意保持简单,以便在演示期间可以检查记录而无需额外配置。 ## 文件白话释义 ### 根目录 - `manage.py`:命令入口点。 - `README.md`:项目指南。 - `requirements.txt`:包列表。 - `db.sqlite3`:本地运行时数据库。 ### network_anomaly - `settings.py`:全局配置、静态文件、模板、数据库和监控设置。 - `urls.py`:根路由。 ### monitor 核心 - `apps.py`:应用注册。 - `admin.py`:管理面板注册。 - `models.py`:数据库模式。 - `urls.py`:应用路由。 - `views.py`:仪表板和 API 负载组装。 - `test_runner.py`:显式测试发现。 - `test_suite.py`:兼容性测试导出。 ### monitor 服务 - `packet_capture.py`:数据包规范化和嗅探。 - `flow_tracker.py`:流状态、速率、突发和过期逻辑。 - `detection.py`:自适应规则引擎。 - `scoring.py`:异常评分。 - `correlation.py`:警报关联和抑制。 - `actions.py`:模拟执行决策。 - `performance.py`:比较指标。 - `summaries.py`:仪表板聚合。 - `engine.py`:编排。 ### monitor 实用程序和场景 - `rolling.py`:滚动统计。 - `traffic.py`:合成场景。 ### monitor 命令 - `run_monitor.py`:实时或合成监控入口点。 - `simulate_traffic.py`:场景运行器。 ### monitor 迁移 - `__init__.py`:包标记。 - `0001_initial.py`:基础模式。 - `0002_monitor_enhancements.py`:增强字段。 ### monitor 展示层 - `dashboard.html`:仪表板布局。 - `dashboard.js`:数据绑定和图表渲染。 - `style.css`:主题和布局。 ### monitor 测试 - `test_actions.py`:动作映射。 - `test_correlation.py`:关联和去重。 - `test_detection.py`:规则检测。 - `test_flow.py`:流跟踪。 - `test_performance.py`:性能比较。 - `test_scoring.py`:评分和严重级别。 - `test_thresholds.py`:滚动阈值。 ### 顶级静态文件 - `.gitkeep`:将静态文件夹保留在源代码控制中。 ## 操作说明 - 本项目完全在本地运行。 - SQLite 是唯一的数据库。 - 不会执行任何防火墙更改。 - 不需要云服务或代理。 - 合成命令在笔记本电脑演示中是安全的。 - 仪表板会自动刷新,但必须保持页面打开才能看到更新。 ## 故障排除 ### 找不到 Django 如果 `python manage.py ...` 失败并出现 Django 导入错误,说明您的终端使用了错误的 Python 解释器。请使用安装了 Django 的解释器: ``` C:/Users/Parag/AppData/Local/Python/pythoncore-3.14-64/python.exe manage.py runserver ``` ### 仪表板没有显示更新 确保以下两点都成立: - `runserver` 命令仍在运行。 - 仪表板页面在浏览器中保持打开。 然后运行一个模拟命令,例如 `simulate_traffic flood` 或 `simulate_traffic port_scan`。 ### 模拟后 UI 显得过时 使用 `Ctrl+F5` 对浏览器进行一次硬刷新。仪表板每隔几秒轮询一次 JSON 端点,因此在模拟完成后不久就会出现新数据。 ### 实时嗅探被阻止 如果您的操作系统权限阻止了 Scapy,请运行: ``` python manage.py run_monitor --simulate ``` 这仍会为演示生成有用的遥测数据。 ## 设计目标 该项目的目标不仅是检测可疑流量,而且要让检测过程易于理解。系统的每个部分都经过构建,以便观察者可以回答三个问题: 1. 发生了什么? 2. 系统为什么做出反应? 3. 系统下一步会做什么? 这就是为什么该项目同时包含后端异常管道和展示/可解释层。
标签:Chart.js, Django, ICMP洪水检测, Python, Scapy, SQLite, 云计算, 入侵检测系统, 安全大屏, 安全数据湖, 异常检测, 插件系统, 无后门, 毕业设计, 流量关联分析, 流量可视化, 流量回放, 流量基线分析, 端口扫描检测, 网络安全, 网络安全演示, 网络流量分析, 规则引擎, 计算机网络, 逆向工具, 防御绕过, 隐私保护