推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于Python的机器学习入侵检测的研究

更新时间:2019-12-21 12:34:54 大小:2M 上传用户:songhuahua查看TA发布的资源 标签:python机器学习 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

由于网络技术迅速发展,攻击成本低廉而与安全相关的产品却十分缺乏或落后,导致近年来安全问题频出。如何从海量的流量中检测出攻击威胁成了一种迫切需要而又困难重重的问题。恰逢机器学习的兴起,当下的硬件性能等条件可被满足的前提下,利用机器学习来判断数据报文是否恶意,成了一种理论上可行的方案。本篇包括流量特征的提取和相关机器学习算法的介绍,根据日常捕获的流量来提取相关的特征,再经由机器学习模型的判断,可迅速判断其是否具有威胁性。经过使用测试集对机器学习的模型进行评估,其准确率可以达到99%。


部分文件列表

文件名 大小
基于Python的机器学习入侵检测的研究.pdf 2M

部分页面预览

(完整内容请下载后查看)
安全模型、算法与编程  
[5]R. Sommer and V.Paxson. Enhancing Byte-Level Network  
Intrusion Detection Signatures with Context[J].Proc. ACM  
Conference on Computer and Communications Security CCS,  
2003.  
基于 Python 的机器学习入侵检测的研究  
孟 平 龙华秋  
(五邑大学智能制造学部 广东 529020)  
摘要:由于网络技术迅速发展,攻击成本低廉而与安全相关的产品却十分缺乏或落后,导致近年来安全问题频出。如何从海量的流量  
中检测出攻击威胁成了一种迫切需要而又困难重重的问题。恰逢机器学习的兴起,当下的硬件性能等条件可被满足的前提下,利用机  
器学习来判断数据报文是否恶意,成了一种理论上可行的方案。本篇包括流量特征的提取和相关机器学习算法的介绍,根据日常捕获  
的流量来提取相关的特征经由机器学习模型的判断迅速判断其是否具有威胁性过使用测试集对机器学习的模型进行评估,  
其准确率可以达到 99%。  
关键词:Python;机器学习;入侵检测  
如今互联网的发展速度和规模的扩张十分迅猛,IT技术硬  
件产品和软件产品的迭代更新非常迅速。互联网+的时代,如此  
迅速的发展给我们的生活带来了巨大的便利时也带来了众多  
的安全隐患。在大多数人眼中,互联网上的安全问题,大多都是  
数据泄露,以及其他相关问题,这些问题影响的大多都是企业,  
造成的损失也基本是经济上的损失而近年来发生的多起工业  
控制系统相关的安全问题分证明了攻击者完全可以通过互联  
网威胁到人们的现实生活如近期国外发生的工控系统入侵事  
件导致的他国全国范围大部分地区停电的事件下互联网的安  
全问题,已经被国家高中重视,网络安全事关国家安全。  
利用机器学习中的监督学习相关算法训练好的模型实际  
中应用时以快速对一个新提取的样本做判断断其是否恶  
意。比以往通过特征码等其他判断方式,少了查询特征码集合”  
和比对的操作判断速度上要远快于传统方式好的训练集  
和合适的算法及相应的参数使训练出来的模型具有很好的泛  
化性能。  
看作是分类是否具有攻击性和可能的攻击类别此在机器  
学习模型算法的选择上,我们将选择分类器相关的算法。  
1 系统流程图  
以下将对模型训练阶段的内容进行讲解:  
2.1 机器学习算法—逻辑斯谛回归  
1 系统设计  
计算机网络具有多层协议,在其七层模型(物理层、数据链  
路层、网络层、传输层、会话层、表示层、应用层)中,物理层  
和数据链路层太过底层话层示层和应用层涉及的协议众  
多不适合作为用于进行判断其是否恶意的基础网络层上可以  
开始不考虑具体的数据传输的实现,而传输层TCPUDP协议是  
上层协议的基础且仅为实现连续和离散的传输方式此在本次  
研究中,判断流量是否恶意便是基于网络层和传输层的数据报  
文。  
在本次研究课题中们采用的是机器学习中监督学习的逻  
辑斯谛回归算Logistic Regression要注意的是辑斯谛  
回归算法并不是回归模型相关的算法是用于分类的分类器算  
法。  
2.1.1 算法原理  
逻辑斯蒂回Logistic Regression一种分类算法算  
法原理如下:  
z = wT x +b  
在整个机器学习入侵检测中们需要有流量探针为我们  
捕获流量,而捕获的数据报文要经过特征提取,提取的特征会  
组成一个样本本将会是我们直接用于训练模型和模型判断  
的目标。在本次研究中,由于服务器性能等问题,为了方便,我  
们直接使用KDD 99 比赛中提供的五百万现成的样本,作为训练  
模型和模型评估的数据集合整个系统中将分为三个部分模  
型训练、样本采集和模型判断。  
不同类的 对应 的值为 或者 ,单位阶跃函数由于函数  
x
z
0
1
1
性质不可导不连续,所以引入  
函数:  
sigmoid  
y =  
1+ e-z  
1为系统流程图。  
2 具体实现  
如流程图中所示个系统中有三个部分相对独立型训  
练、检测判断、样本采集。本系统涉及机器学习的内容,要保证  
模型训练本采集和检测判断的部分的最终样本的维度特征的  
一致性,才能保证模型的使用。因本课题中,对样本的判断可以  
1
函数图  
2
y =  
1+ e-z  
40‖  
安全模型、算法与编程  
1
7land连接来自或送达同一个主机则为 1则为 0;  
8wrong_fragment:错误分段数量;  
y =  
1+ e-z  
所以令:  
9urgent:加急包个数;  
z = wT x +b  
10count:与当前连接具有相同的目标主机的连接数;  
11srv_count:与当前连接具有相同服务的连接数;  
12serror_rate与当前连接具有相同目标主机的连接中,  
出现“SYN”错误的连接的百分比;  
得到:  
1
y =  
-(wT x+b)  
1+ e  
化成对数形式:  
13srv_serror_rate与当前连接具有相同服务的连接中,  
出现“SYN”错误的连接的百分比;  
y
ln  
= wT x +b  
14rerror_rate与当前连接具有相同目标主机的连接中,  
出现“REJ”错误的连接的百分比;  
1- y  
y/(1-y) 代表了样本作为正例的可能性,1-y 是反例。  
所以 y=概率 p(y=1|x)  
15srv_rerror_rate与当前连接具有相同服务的连接中,  
出现“REJ”错误的连接的百分比;  
1-y=概率 p(y=0|x)  
所以上式又可化为:  
16same_srv_rate与当前连接具有相同目标主机的连接  
中,与当前连接具有相同服务的连接的百分比;  
17diff_srv_rate:在与当前连接具有相同目标主机的连接  
中,与当前连接具有不同服务的连接的百分比;  
18srv_diff_host_rate与当前连接具有相同服务的连接  
中,与当前连接具有不同目标主机的连接的百分比;  
19dst_host_count:与当前连接具有相同目标主机的连接  
数;  
p(y =1| x)  
p(y = 0 | x)  
ln  
= wT x + b  
解得:  
wT x+b  
e
p(y =1| x) =  
T x+b  
1+ ew  
1
p(y = 0| x) =  
T x+b  
1+ ew  
20dst_host_srv_count当前连接具有相同目标主机相同  
服务的连接数;  
将这 2 个等式化成一个等式:  
T xi +b  
ew  
1+ ew  
1
1-y  
p(yi | xi ;w,b) = (  
)y (  
)
T xi +b  
21dst_host_same_srv_rate当前连接具有相同目标主机  
相同服务的连接所占的百分比;  
T xi +b  
1+ ew  
对上式连乘,然后取对数,进行极大似然估计:  
22dst_host_diff_srv_rate:与当前连接具有相同目标主机  
不同服务的连接所占的百分比;  
m
λ(w,b) = ln p(y | x ;w,b)  
i
i
i=1  
23dst_host_same_src_port_rate当前连接具有相同目标  
主机相同源端口的连接所占的百分比;  
最大化上式相等于最小化:  
m
T
24dst_host_srv_diff_host_rate:与当前连接具有相同目标  
主机相同服务的连接中当前连接具有不同源主机的连接所占  
的百分比;  
(-y wT x + ln(1+ ew x ))  
i
i=1  
这是一个凸函数以使用梯度下降或者牛顿迭割线法)  
25dst_host_serror_rate:与当前连接具有相同目标主机的  
连接中,出现 SYN 错误的连接所占的百分比;  
26dst_host_srv_serror_rate当前连接具有相同目标主机  
相同服务的连接中,出现 SYN 错误的连接所占的百分比;  
27dst_host_rerror_rate:与当前连接具有相同目标主机的  
连接中,出现 REJ 错误的连接所占的百分比;  
28dst_host_srv_rerror_rate当前连接具有相同目标主机  
相同服务的连接中,出现 REJ 错误的连接所占的百分比。  
2.3 模型训练代码  
来求最优解。  
梯度下降的迭代式为:  
w = w+αβζ (w)  
因为要往增高的方向,所以是+号,代表梯度的正方向。  
2.1.2 逻辑斯蒂回归——多分类扩展  
逻辑斯蒂回归是二分类器,本系统是多分类器,所以采用  
OVR 的方式将二分类器的方式扩展到多分类器,OVR 训练多个  
分类器一个分类器将某一类别的视为正样本他视为负样  
本,训练出 n 个后,然后输出每个样本对应每个类别的概率,取  
最大的概率作为最终的输出结果。  
def ReadData(path):  
data=open(path).readlines()  
2.2 特征工程  
data=np.array([i.split(',') for i in data])  
data[:, -1] = [i.replace('\n', '').replace('.', '') for i in data[:, -1]]  
data_r=np.zeros(shape=data.shape)  
data_r[:,0]=[float(i) for i in data[:,0]]  
for i in range(4,40):  
data_r[:, i] = [float(j) for j in data[:, i]]  
protocol_type={k:i for i,k in enumerate(set(data[:,1]))}  
service={k:i for i,k in enumerate(set(data[:,2]))}  
flag={k:i for i,k in enumerate(set(data[:,3]))}  
label={k:i for i,k in enumerate(set(data[:,-1]))}  
print(protocol_type)  
为了方便,我们在模型训练阶段直接使用了 KDD 99 比赛的  
数据集缩减前期数据采集的时间数据集采集自美国军方  
网络样本的特征基于计算机网络的网络层和传输层的在  
其提供的特征上做了适当的选择和特征的向量化使其更加适用  
于本课题的研究。  
具体特征内容如下:  
1durationTCP 3 次握手建立到 FIN/ACK 连接结束  
为止的时间;  
2protocol type:协议类型;  
print(service)  
3Service:网络服务类型;  
print(flag)  
print(label)  
4flag:连接正常或错误;  
data_r[:, 1] = [protocol_type[j] for j in data[:, 1]]  
data_r[:, 2] = [service[j] for j in data[:, 2]]  
data_r[:, 3] = [flag[j] for j in data[:, 3]]  
5src_bytes:源主机到目标主机数据字节数;  
6dst_bytes:目标主机到源主机数据字节数;  
41‖  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载