23、移动网络中警报数据聚合与传输优先级策略

移动网络警报聚合与优先级传输策略

移动网络中警报数据聚合与传输优先级策略

在移动网络的安全监控中,警报数据的有效处理至关重要。由于网络带宽有限,需要采用有效的技术来减少警报数量,同时对警报进行合理的优先级排序,以确保关键警报能够及时传输。本文将详细介绍一种警报聚合技术以及相关的优先级排序方法,并通过实验验证其有效性。

1. 警报聚合技术概述

警报聚合技术旨在减少警报数量,提高监控效率。其主要步骤包括本地警报聚合、非本地警报聚合、警报优先级排序、警报传输和反馈传播。

1.1 协议警报聚合流程
  • 输入 :本地生成的警报
  • 输出 :元警报和反馈
  • 具体步骤
    1. 聚合本地生成的警报
    2. 若收到来自其他节点的非本地元警报,将其与本地元警报聚合
    3. 对元警报进行优先级排序并准备传输
    4. 当传输窗口可用时,若在范围内将元警报传输到前沿作战基地(FOB),否则传输到离 FOB 最近的相邻节点
    5. FOB 接收并处理元警报
    6. FOB 制定反馈并传播回节点

以下是该协议的时序图:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(t0: 本地警报生成<br>非本地元警报接收):::process --> B(t1: 警报聚合与优先级排序):::process
    B --> C(t2: 中间节点转发并可能重新聚合):::process
    C --> D(t3: FOB 接收相邻节点元警报):::process
    D --> E(t4: 元警报处理):::process
    E --> F(t5: 元警报分析与反馈确定):::process
    F --> G(t6: 反馈传播<br>节点接收反馈并调整聚合级别):::process
2. 网络拓扑结构

该技术运行的网络拓扑由移动节点和前沿作战基地(FOB)组成。每个移动节点运行入侵检测系统(IDS),节点将生成或接收的警报聚合为元警报,并发送到跳数比当前节点低的相邻节点。距离 FOB 一跳的节点直接将元警报发送到 FOB,FOB 处理并分析接收到的元警报,然后向节点提供反馈。

3. 警报聚合算法
3.1 本地警报聚合

本地警报聚合是将本地生成的原始警报聚合为元警报的过程。重要的警报属性包括源和目标 IP 地址、签名或异常/行为模式等,可分为分类属性(如 IP 地址、端口号)和连续属性(如持续时间)。

在算法中,形成多个警报属性集,每个属性集由一个或多个警报属性组成,一个属性可以属于多个集合。元警报的每个属性集存储在一个单独的队列中,不属于属性集的元警报参数作为列表存储在同一元警报中。

原始警报用 7 元组表示:原始警报 ID、源 IP 地址、目标 IP 地址、签名类型或 ID、端口 ID、警报事件发生时间、节点 ID 和日志数据。聚合后的元警报表示为:元警报 ID 号、特定元警报代表的原始警报数量、元警报更新时间、聚合属性 1 到 n,以及包含未用于聚合的原始警报参数的元组列表。

以下是本地警报聚合算法:

算法:本地警报聚合
输入:原始警报
输出:元警报(按队列分组)
1. 初始化属性集
2. 初始化元警报队列
3. 对于每个读取的警报:
    如果队列为空:
        则
            随机将警报分配到队列并生成元警报
    否则
        检查属性数量最多的队列
        如果警报可以聚合:
            则
                聚合警报
        否则
            检查其余队列
            如果警报可以聚合:
                则
                    聚合警报
            否则
                随机将警报分配到队列并生成新的元警报

以下是该算法的流程图:

graph TD
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(新原始警报生成):::process --> B{元警报队列是否为空?}:::process
    B -- 是 --> C(确定聚合属性数量最多的队列):::process
    C --> D(将警报随机分配到队列):::process
    D --> E(创建新的元警报):::process
    B -- 否 --> F(确定聚合属性数量最多的队列):::process
    F --> G{新警报能否与现有元警报聚合?}:::process
    G -- 是 --> H(将新警报与现有元警报聚合):::process
    G -- 否 --> I{是否检查了所有队列?}:::process
    I -- 否 --> J(继续检查其余队列):::process
    J --> G
    I -- 是 --> D
3.2 非本地警报聚合

每个节点除了处理本地警报外,还能接收来自相邻节点的元警报。非本地元警报在可能的情况下与本地元警报聚合,然后将结果元警报转发到下一个节点。

以下是非本地元警报聚合算法:

算法:非本地元警报聚合
输入:非本地元警报队列
输出:无
1. 对于每个接收到的非本地元警报队列:
    将其属性集与本地元警报队列的属性集进行比较
    如果属性集匹配:
        则
            将其元警报与本地队列中的现有元警报聚合
            丢弃非本地元警报队列
    否则
        将非本地元警报队列存储为本地

以下是该算法的流程图:

graph TD
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(新的非本地元警报接收):::process --> B{属性集是否与本地元警报匹配?}:::process
    B -- 是 --> C(将元警报与现有元警报聚合):::process
    B -- 否 --> D(将元警报添加到队列):::process
    C --> E{新元警报能否聚合?}:::process
    E -- 是 --> C
    E -- 否 --> F(创建新队列并存储非本地元警报):::process
4. 警报优先级排序

由于带宽有限,需要对警报进行优先级排序,确保关键警报在传输窗口可用时优先传输。通过计算每个队列的概率分布来实现警报优先级排序,具有最高值的队列中的元警报将优先传输。

以下是元警报队列传输优先级排序算法:

算法:元警报队列优先级排序
输入:元警报队列
输出:无
1. 检查每个队列的先前多项式分布函数值
    如果值存在且未过期:
        则
            读取自上次计算以来的传入警报数量
            如果数量超过预设阈值:
                则
                    计算多项式分布函数
            否则
                先前值仍然有效,无需重新计算
    否则
        计算多项式分布函数
2. 根据计算值对传输顺序进行优先级排序
4.1 分布函数计算

为了基于警报属性或参数进行警报聚合,假设攻击实例是生成警报的随机过程,且警报属性具有不同的概率分布。分类属性具有多项分布,连续属性具有标准正态分布。

多项分布的计算公式为:
[P(Q_j) = \frac{N!}{(n_1!n_2!…n_k!)} \prod_{i=1}^{k} p_i^{n_i}]
其中:
- (Q_j) 是元队列 (j)
- (N) 是原始警报的数量
- (k) 是 (Q) 中的元警报数量
- (n_i) 是聚合在元警报 (i) 中的警报数量
- (p_i) 是观察到元警报 (i) 的概率

(p_i) 的计算公式为:
[p_i = W_{A_i} \times W_{I A_i} \times \frac{n_i}{N}]
其中:
- (P_i) 是元警报 (i) 的概率
- (W_{A_i}) 是包含元警报 (i) 的队列的属性权重
- (W_{I A_i}) 是元警报 (i) 的属性值的权重
- (n_i) 是元警报 (i) 中的警报数量
- (N) 是原始警报的数量

正态分布的概率密度函数为:
[\varphi(x) = \frac{1}{\sqrt{2\pi}} e^{-\frac{1}{2}x}]

5. 警报传输

元警报在带宽可用时进行传输。传输前,检查元警报的计时器是否未过期,以及该元警报中包含的原始警报是否未在其他元警报中传输过。如果未传输过,则进行传输;如果已传输过,则将其剔除并丢弃。

以下是警报传输算法:

当传输窗口打开时:
    检查元警报时间
    如果元警报时间已过期:
        则
            丢弃警报
    否则
        检查已传输警报列表
        如果警报已传输:
            则
                丢弃警报
        否则
            传输警报
6. 反馈传播

基于对收到的元警报的分析,FOB 的分析师可能会对某些警报给予特别关注,或增加与某些警报相关的原始数据包数据的接收量。为此,提出了一种使用多播的反馈传输机制。FOB 将其反馈偏好多播到所有连接的节点,这些节点再将消息转发到其连接的节点。使用简单的路由算法避免路由循环。

7. 实验验证

为了评估上述算法的有效性,进行了实验验证。

7.1 实验设置

从 2012 年 10 月 1 日至 10 月 14 日,从企业级生产网络入侵检测系统(NIDS)中收集了十个节点两周的数据,使用了 Snort 新兴威胁(ET)和漏洞研究团队(VRT)规则集的组合。假设不存在路由循环,每个节点只传输到一个节点。使用相同的属性集进行数据聚合,属性集可根据先前收集的数据和分析师的反馈进行定义和修改。

使用的属性集如下表所示:
| 属性集 | 描述 |
| ---- | ---- |
| {AlertID} | IDS 警报 ID |
| {AlertID, srcIP} | IDS 警报 ID,源 IP 地址 |
| {AlertID, srcIP, portID} | IDS 警报 ID,源 IP 地址,目标端口 ID |
| {AlertID, srcIP, portID, dstIP} | IDS 警报 ID,源 IP 地址,目标端口 ID,目标 IP 地址 |
| {AlertID, duration} | IDS 警报 ID,警报持续时间 |

各节点收集的原始警报数量如下表所示:
| 节点 ID | 原始警报数量 |
| ---- | ---- |
| 1 | 339,311 |
| 2 | 148,320 |
| 3 | 216,802 |
| 4 | 228,448 |
| 5 | 307,169 |
| 6 | 33,660 |
| 7 | 43,326 |
| 8 | 22,779 |
| 9 | 111,707 |
| 10 | 119 |
| 总计 | 1,451,633 |

7.2 实验结果

首先在每个节点本地运行聚合算法,将原始警报聚合并分配到五个队列中。结果如下表所示:
| 节点 ID | 原始警报数量 | 元警报数量(队列 0) | 元警报数量(队列 1) | 元警报数量(队列 2) | 元警报数量(队列 3) | 元警报数量(队列 4) | 总计 | 减少率 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 1 | 339,311 | 129 | 29 | 18 | 19 | 30 | 33 | 1,109 | 99.92% |
| 2 | 148,320 | 93 | 15 | 21 | 14 | 23 | 20 | | |
| 3 | 216,802 | 43 | 14 | 7 | 5 | 5 | 12 | | |
| 4 | 228,448 | 165 | 32 | 34 | 33 | 39 | 27 | | |
| 5 | 307,169 | 169 | 30 | 38 | 33 | 39 | 29 | | |
| 6 | 33,660 | 350 | 71 | 62 | 71 | 77 | 69 | | |
| 7 | 43,326 | 70 | 13 | 15 | 24 | 10 | 8 | | |
| 8 | 22,779 | 35 | 8 | 6 | 6 | 7 | 8 | | |
| 9 | 111,707 | 48 | 8 | 8 | 11 | 13 | 8 | | |
| 10 | 119 | 7 | 2 | 1 | 2 | 1 | 2 | | |

比较原始警报和元警报在磁盘上的大小,并计算每个警报的日志大小。对于日志文件的传输,考虑了三种方案:
1. 传输所有警报的所有日志
2. 仅传输给定元警报中第一个警报的日志
3. 不传输任何日志文件,而是本地存储

结果如下表所示:
| 方案 | 警报数量 | 警报大小(Kb) | 日志文件大小(Kb) | 总大小(Kb) | 减少率 |
| ---- | ---- | ---- | ---- | ---- | ---- |
| 原始警报 | 1,451,633 | 8,876 | 54,808 | 63,684 | - |
| 元警报(全日志) | 1,109 | 3,805 | 54,808 | 58,612 | 7.96% |
| 元警报(部分日志) | 1,109 | 3,805 | 929 | 4,734 | 92.57% |
| 元警报(无日志) | 1,109 | 3,805 | - | 3,805 | 94.03% |

考虑最佳情况,即每个节点在传输自己的元警报之前接收所有可能的非本地元警报,结果如下表所示:
| 节点 ID | 本地元警报数量 | 接收的非本地元警报数量 | 聚合后的本地和非本地元警报数量 | 到达 FOB 的总元警报数量 |
| ---- | ---- | ---- | ---- | ---- |
| 1 | 129 | 412 | 445 | 710 |
| 2 | 93 | 352 | 390 | |
| 3 | 43 | 420 | 412 | |
| 4 | 165 | - | 165 | |
| 5 | 169 | 90 | 187 | |
| 6 | 350 | - | 350 | |
| 7 | 70 | - | 70 | |
| 8 | 35 | - | 35 | |
| 9 | 48 | - | 48 | |
| 10 | 7 | - | 7 | |

最佳情况下的大小比较如下表所示:
| 方案 | 警报数量 | 警报大小(Kb) | 日志文件大小(Kb) | 总大小(Kb) | 减少率 |
| ---- | ---- | ---- | ---- | ---- | ---- |
| 原始警报 | 1,451,633 | 8,876 | 54,808 | 63,684 | - |
| 元警报(全日志) | 710 | 3,120 | 54,808 | 57,928 | 9.04% |
| 元警报(部分日志) | 710 | 3,120 | 769 | 3,889 | 93.89% |
| 元警报(无日志) | 710 | 3,120 | - | 3,120 | 95.10% |

通过实验结果可以看出,该警报聚合技术和优先级排序方法在减少警报数量和节省带宽方面具有显著效果。特别是在最佳情况下,元警报数量和大小都有进一步的减少。在实际应用中,可以根据具体需求选择合适的日志传输方案,以平衡数据完整性和带宽使用。

移动网络中警报数据聚合与传输优先级策略

8. 实验结果分析

从实验结果来看,警报聚合技术在减少警报数量和节省带宽方面表现出色。

在本地警报聚合阶段,原始警报数量高达 1451633 条,而聚合后的元警报数量在最坏情况下为 1109 条,减少率达到了 99.92%。这表明通过合理的属性集划分和聚合算法,能够将大量的原始警报有效地合并为少量的元警报,大大减轻了数据传输的负担。

对于日志文件的处理,不同的传输方案产生了不同的效果。传输所有警报的所有日志时,虽然数据完整性最高,但总大小减少率仅为 7.96%,因为日志文件本身占用了大量的磁盘空间。仅传输给定元警报中第一个警报的日志时,总大小减少率达到了 92.57%,在保证一定数据完整性的同时,显著节省了带宽。不传输任何日志文件,而是本地存储时,总大小减少率高达 94.03%,但可能会在后续分析中缺乏足够的原始数据支持。因此,在实际应用中,需要根据具体的安全需求和带宽情况选择合适的日志传输方案。

在最佳情况下,即每个节点在传输自己的元警报之前接收所有可能的非本地元警报,元警报数量进一步减少到 710 条,与最坏情况相比减少了 35.98%,与原始警报相比减少了 99.95%。同时,元警报的大小也有所降低,如元警报(部分日志)的总大小减少率达到了 93.89%。这说明非本地警报聚合能够进一步提高数据的压缩率,优化带宽使用。

9. 技术优势与应用场景
9.1 技术优势
  • 减少警报数量 :通过警报聚合技术,将大量的原始警报合并为少量的元警报,减少了需要传输和处理的警报数量,降低了系统的负担。
  • 优化带宽使用 :根据警报的优先级进行排序,确保关键警报优先传输,提高了带宽的利用效率。同时,通过合理的日志传输方案,进一步节省了带宽。
  • 提高分析效率 :聚合后的元警报更便于分析师进行分析和处理,能够更快地发现潜在的安全威胁。
9.2 应用场景
  • 移动网络安全监控 :在移动网络中,带宽资源有限,该技术能够有效地减少警报数据的传输量,提高监控效率。
  • 企业级网络安全 :对于大型企业的网络,每天会产生大量的安全警报,使用该技术可以对警报进行有效的管理和分析,及时发现和处理安全事件。
  • 物联网安全 :物联网设备数量众多,产生的警报数据也非常庞大。该技术可以帮助物联网系统对警报进行聚合和优先级排序,确保关键信息能够及时传输和处理。
10. 总结与展望

本文介绍了一种移动网络中警报数据聚合与传输优先级策略,包括警报聚合技术、优先级排序方法、警报传输和反馈传播机制,并通过实验验证了其有效性。实验结果表明,该技术能够显著减少警报数量,节省带宽,提高分析效率。

在未来的研究中,可以进一步优化警报聚合算法,提高聚合的准确性和效率。同时,可以结合机器学习和人工智能技术,对警报进行更深入的分析和预测,提前发现潜在的安全威胁。此外,还可以探索如何在不同的网络环境和应用场景中更好地应用该技术,以满足多样化的安全需求。

11. 相关算法总结

为了方便读者回顾和使用,下面对文中涉及的主要算法进行总结:

算法名称 输入 输出 主要步骤
本地警报聚合 原始警报 元警报(按队列分组) 1. 初始化属性集和元警报队列;2. 对于每个读取的警报,根据队列情况进行聚合或分配到新队列
非本地元警报聚合 非本地元警报队列 1. 比较非本地元警报队列的属性集与本地队列的属性集;2. 匹配则聚合,不匹配则存储为本地
元警报队列优先级排序 元警报队列 1. 检查队列的先前多项式分布函数值;2. 根据值和传入警报数量决定是否重新计算;3. 根据计算值对传输顺序进行优先级排序
警报传输 有序元警报队列 1. 检查元警报时间和传输历史;2. 未过期且未传输过则传输,否则丢弃
12. 流程图总结

以下是文中主要算法的 mermaid 流程图总结:

本地警报聚合流程图
graph TD
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(新原始警报生成):::process --> B{元警报队列是否为空?}:::process
    B -- 是 --> C(确定聚合属性数量最多的队列):::process
    C --> D(将警报随机分配到队列):::process
    D --> E(创建新的元警报):::process
    B -- 否 --> F(确定聚合属性数量最多的队列):::process
    F --> G{新警报能否与现有元警报聚合?}:::process
    G -- 是 --> H(将新警报与现有元警报聚合):::process
    G -- 否 --> I{是否检查了所有队列?}:::process
    I -- 否 --> J(继续检查其余队列):::process
    J --> G
    I -- 是 --> D
非本地元警报聚合流程图
graph TD
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(新的非本地元警报接收):::process --> B{属性集是否与本地元警报匹配?}:::process
    B -- 是 --> C(将元警报与现有元警报聚合):::process
    B -- 否 --> D(将元警报添加到队列):::process
    C --> E{新元警报能否聚合?}:::process
    E -- 是 --> C
    E -- 否 --> F(创建新队列并存储非本地元警报):::process

通过这些算法和流程图,读者可以更清晰地理解警报数据聚合与传输优先级策略的实现过程,为实际应用提供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值