1.一种基于角标随机读取的Snort报警数据聚合方法,其特征在于,该方法包括以下步骤:S1.采集原始Snort报警数据;
S2.对原始Snort报警数据进行标准化得到标准化Snort报警数据;
S3.对标准化Snort报警数据进行预处理操作,包括根据步骤S1采集到的原始Snort报警数据出发,采用数据清理、属性选择和数据过滤方法来减少重复Snort报警数据的数量;
S4.以随机生成角标的方式对步骤S3获得精简后的Snort报警数据进行随机打散排列,通过入侵检测系统报警数据的读取方式,以随机生成角标的方式达到每条报警数据随机打散排列的目的;
S5.根据步骤S4所得到的打散后的Snort报警数据,计算打散后的标准化Snort报警数据的各属性的相似度;
S6.根据步骤S4所得到的打散后的Snort报警数据,计算每条Snort报警数据中各属性的权重值;在计算全局相似度的时候,需为每种报警属性设置一个权重W,用来衡量该属性在计算全局相似度中的重要性,采用熵值法来确定各个属性的权重值;
S7.根据步骤S5得到的各属性的相似度以及步骤S6得到的各属性的权重值计算每条Snort报警数据的全局相似度;并计聚合结果。
2.根据权利要求1所述的一种基于角标随机读取的Snort报警数据聚合方法,其特征在于,所述Snort报警数据包括由规则号、规则名称、优先级别、时间戳、原始IP、目的IP、协议类型、源端口、目的端口和报警类别10种属性构成的十元组。
3.根据权利要求1所述的一种基于角标随机读取的Snort报警数据聚合方法,其特征在于,所述步骤S3包括以下子步骤;
S31.对需预处理的标准化Snort报警数据进行集合封装;
S32.从本地MySQL数据库进行join操作生成所需的Snort报警数据表;对整个Snort报警数据文本按每两条顺序读取加载,若读取到最后一行则直接跳出循环,否则一一加载到集合;
S33.将Snort报警数据按照指定的时间属性升序排序,在排序后的数据集上移动一个的固定大小时间窗口,每次只检测时间间隔小于固定大小时间窗口内的Snort报警数据,判定它们是否匹配;
S34.以计数迭代不断循环比较,精简记录的方式减少Snort报警数据的数量。
4.根据权利要求1所述的一种基于角标随机读取的Snort报警数据聚合方法,其特征在于,所述步骤S4包括以下子步骤:S41.对精简后的Snort报警数据进行集合封装;
S42.对整个Snort报警数据文本进行逐条顺序读取加载,若读取到最后一行则直接跳出循环,否则将加载到集合;
S43.对Snort报警数据按照时间属性进行升序排序和分月份划段处理,再对每个月内的数据进行随机打散排列。
5.根据权利要求1所述的一种基于角标随机读取的Snort报警数据聚合方法,其特征在于,在所述步骤S5中,所述各属性的相似度包括报警标识属性的相似度、报警名称属性的相似度、报警时间戳相似度和IP地址相似度。
6.根据权利要求1所述的一种基于角标随机读取的Snort报警数据聚合方法,其特征在于,所述步骤S7包括以下子步骤:S71.计算每条报警数据的全局相似度;
S72.对计算全局相似度后的Snort报警数据进行集合封装;
S73.对整个Snort报警数据文本进行逐条顺序读取加载,若读取到最后一行则直接跳出循环,否则加载到集合;
S74.读取指定的每条报警数据相似度属性列的内容分别与期望阈值集合进行比较,并统计满足条件的报警条数;
S75.若全局相似度小于期望阈值,则该条报警数据为聚合所得到的报警数据结果;否则,则表明此条报警数据不是所期望的聚合范围。
7.根据权利要求5所述的一种基于角标随机读取的Snort报警数据聚合方法,其特征在于,在计算报警名称属性相似度时,使用Tableau Desktop进行统计分析,报警名称属性相似度计算公式设置如下:其中, 是报警数据的名称相似度值, 和 分别表示第i条和第j条报警数据, 是报警数据的名称属性。
8.根据权利要求5所述的一种基于角标随机读取的Snort报警数据聚合方法,其特征在于,所述时间戳相似度通过以下方法计算获得:
将时间间隔 和预设的最小阈值 及最大阈值 进行比较,当时间间隔小于 则相似度为0,当时间间隔 大于 则相似度为1,如果时间间隔 在和 之间则相似度为 ,其中,当预设的最小阈值 为30s,最大阈值 为
330s时,计算公式设置如下:
其中, 是报警数据时间戳的相似度值, 和 分别表示
第i条和第j条报警数据;
所述IP地址相似度通过以下方法计算获得,
采用无类别域间路由的格式对于IP地址的比较,将每两条报警数据相同的二进制位个数r除以IP地址二进制位长度的值作为两个IP地址的相似度,其中,IP地址二进制位长度的值为32;
计算公式设置如下:
其中, 是报警数据的IP相似度值, 和 分别表示第i条和第j条报警数据。
9.根据权利要求4所述的一种基于角标随机读取的Snort报警数据聚合方法,在所述步骤S43中,先将每个月内随机打散后的中间报警数据用M集合存储,再统一用R集合重新存储得到最后的报警数据;其中,每遍历一次取两条报警数据所在行号得到生成的随机数与角标标记区进行比较,如果第一次出现,则将其存入并退出当层循坏,否则重新生成随机数取值再进行比较。