基于层次聚类方法的流量异常检测
链接:百度网盘链接
提取码:9trx
1.模型框架
2.数据预处理
-
流量格式转换
在网络中捕获的流量数据包的初始格式通常为pcap格式,内容表现形式为 16进制的数据
为了将其转化为安全分析人员熟知的IP、端口等内容,需要将pcap格式转换成netflow格式
pacp ----> netflow(1)pcap格式
pcap:Global Header(24B)、Packet Header(16B)、Packet Data(共n个字节)
Global Header:定义了该文件的最大存储长度、读取规则等内容 Packet Header:数据包包头。定义了数据包的时间戳、长度等内容 Packet Data:数据
(2)netflow格式
7元组:源IP地址、目的IP地址、源端口号、目的端口号、协议种类、服务种类、输入接口
如果两段流量的7元组相同,则属于同一个数据流,否则属于不同的数据流
(3)转换方法
在ubuntu环境下,借助3种工具,分别是softflowd、nfcapd、nfdump
softflowd:读取pcap文件,并将其转换为netflow,输出至指定端口,包含老化时间、抽样等多项参数 nfcapd:在指定端口接收netflow数据,并输出为netflow文件 nfdump:读取netflow文件
-
层次聚类
主要思想:计算各个数据点的相似度,最终形成树形分布图,对数据集在不同的层次上进行划分
根据聚类树划分的不同,分为:
分裂法:自顶向下的分割方法 凝聚法:自底向上的聚合方法(使用更广泛)
凝聚法:将每个数据点作为一个初始聚类簇,每次都寻找相似度最高的2个类别进行合并,并不断迭代合并的过程,直至分类数目达到预期设定的值。
簇间距离测量算法:
(1)单连接算法:2个簇的距离是由这2个簇中最近的2个样本点之间的距离决定,会受到极端值的影响 (2)全连接算法:2个簇的距离是由这2个簇中最远的2个样本点之间的距离决定,会受到极端值的影响 (3)均连接算法:2个簇的距离是这2个簇中的所有样本点两两之间距离求均值的结果,计算量较大,结果更合理一些
结果为:
3.异常流量检测模型
使用了七种常用的机器学习算法:决策树、随机森林、SVM、AdaBoost、GBDT、GNB、MNB
4.实验与分析
分析可得:基于约减的SVM算法效果最佳,因为SVM算法具有较强的鲁棒性,且泛化能力较好
基于约减的SVM算法对不同数据量的约减率:
分析可得:当流量数据为20万条时,数据约减量达到峰值,因此,基于层次聚类的流量异常检测模型的最佳数据量处理切片为20万条。对于新的需预测的流量数据,以20万条数据量作为划分区间,将其划分为多段流量信息,再使用基于层次聚类的流量异常检测模型进行检测,能到达比较好的约减效果