琼中黎族苗族自治县网站建设_网站建设公司_前端开发_seo优化
2026/1/10 17:13:36 网站建设 项目流程

目录
第一章 绪论 4
1.1课题研究的背景与意义 4
1.1.1什么是web异常检测 4
1.1.2基于机器学习web异常检测技术 4
1.2课题研究的内容 5
本章小结 5
第二章 聚类分析概述 5
2.1 什么是聚类分析 5
2.2 基于距离的聚类 6
2.3 基于密度的聚类 6
2.4本章小结 7
第三章 Web入侵技术概述 7
第四章 基于聚类的Web入侵检测实现 8
4.1 开发工具介绍 8
4.2 数据集的选择 8
4.3 数据预处理(标准化) 9
4.4 建立入侵检测模型 10
4.4.1 利用k-means建立聚类 10
4.4.2 利用DBSCAN建立聚类 11
4.5 模型的性能评价 11
4.6 本章小结 12
5 总结 12

摘要

针对目前网络入侵行为日益严重和检测网络入侵行为日益严重的问题,本文研究的是通过机器学习来提高网络入侵的检测能力。在传统的入侵检测系统(IDS)通常是使用基于某些规则的匹配来对网络入侵行为进行检测,这种检测方式存在不够灵活,对新出现的网络入侵行为检测不准确的缺点。而本文使用机器学习中的聚类算法来进行网络入侵行为的检测,通过对数据集特征化,然后分别利用聚类算法中的K-Means和DBSCAN来构建网络入侵的检测模型,最后将两者之间表现出的实际性能,进行相对深入的细致对比,筛选出性能比较高的算法,来应用到网络入侵的检测中。通过使用像这样的机器学习算法来构建网络入侵检测模型可以有效的弥补传统的IDS的缺点。
关键词:机器学习 聚类算法 入侵检测 K-Means DBSCAN
Abstract
In view of the increasing network intrusion behavior and the increasingly serious problem of detecting network intrusion behavior, this paper studies the ability of network intrusion detection through machine learning. In traditional Intrusion Detection System (IDS), network intrusion behavior is usually detected by using certain rule-based matching. This detection method is not flexible enough to detect inaccurate network intrusion behavior. In this paper, the clustering algorithm in machine learning is used to detect the network intrusion behavior. By characterizing the data set, then using K-Means and DBSCAN in the clustering algorithm to construct the network intrusion detection model, and finally through this The performance of the two algorithms is compared, and the algorithm with higher performance is selected to be applied to the detection of network intrusion. By using a machine learning algorithm like this to construct a network intrusion detection model, it can effectively compensate for the shortcomings of the traditional IDS.
Keywords: machine learning clustering algorithm intrusion detection K-Means DBSCAN
第一章 绪论
1.1课题研究的背景与意义
现如今,web3.0时代已经来临,网络逐步实现一体化,赋予网络用户极为广阔的自由空间,可以切实满足他们的实际需求。在此背景下,多样化软件应运而生。但是这也产生了严重的安全问题,在以往十年当中,全球前沿的科技企业,例如:谷歌以及Facebook等,均出现过极为恶劣的各类网络安全事件,造成了大量用户数据泄露,从而危害到网络用户自身的财产安全。故而在当前时期,应当致力于推进网络入侵检测工作,实现全面的智能化。
本文就基于此,将从聚类分析在网络安全中的应用这个选题出发,借助于聚类算法的作用,积极构建出科学完善的网络入侵检测模型,以此来突出自身的优势。该研究的意义在于随着web技术的持续发展,web的架构将会越来越复杂,面对的攻击也会是千变万化,传统的基于规则的网络入侵检测可能会慢慢消失,网络入侵检测的智能化将会成为主流,该研究将会给未来网络入侵检测的智能提供一个更好的素材。
1.1.1什么是web异常检测
在解释什么是web异常检测之前,本文首先针对其基本概念,进行大致的阐述:其旨在发现相对特殊的对象,即所谓的离群点。故而通常情况下,异常检测也被人们称之为偏差检测。而web异常检测就是指在众多的指向服务器的链接当中。找到一些和正常链接不同的异常链接并阻断它。来保护服务器设备免受一些不法分子的攻击。
1.1.2基于机器学习web异常检测技术
通常情况下,以往的web入侵检测技术,主要借助于维护规则集的作用,针对不正当的入侵访问,进行及时有效的拦截。然而,这种方式实则存在某些不足之处,例如:高技术含量的黑客,往往能够绕过硬规则。与此同时,该规则很难承受来源于0day发起的攻击;除此之外,该规则的建立还需耗费极为高昂的经济成本,这无疑加大企业的负担。
在此情况下,以相关机器学习技术为基础,而成功构建的新型web入侵检测技术,实则能够针对以往方法的劣势进行及时弥补。从本质上而言,机器学习方法实则可以借助于数量可观的数据,来实现一系列自动化学习等,故而其在现今已经广泛应用于图像领域以及相应的自然语言处理等多样化领域。但是,该方法同样存在某些不足之处。其中尤为关键的即为标签数据的显著短缺,而且趋于多样化,不利于模型的后期学习等相关工作。故而在大部分情况下,该方法基本在不存在任何监督主体形式的环境中进行。通过基于数量可观的正常日志,积极构建出科学合理的模型,再将不符合该模型的数据定义为异常数据。此类思路完全相悖于拦截规则。值得一提的是,拦截规则旨在针对不正当的入侵行为,进行相对精准的识别。
1.2课题研究的内容
本课题主要研究的是利用机器学习中的聚类算法K-Means和DBSCAN算法,基于KDD-Cup99数据集的作用,来构建网络入侵检测模型,然后对这两个不同的聚类算法所构建的网络入侵检测模型的性能进行比较,筛选出性能比较高的算法。
本章小结
在本章节中,重点针对本文的基本背景及其实际意义,进行相对深入的细致阐述。以及对web异常检测和机器学习的简单介绍,并且简述了本课题的研究内容,让我们对本课题有一个大概的了解。

第二章 聚类分析概述
2.1 什么是聚类分析
聚类分析的基本含义为:将相关对象所组成的集合进行细致分组,从而将性质相似的对象归为一类。从这一角度而言,聚类和分类是不同的。
相较于分类而言,聚类表现出一定的差异性,其中尤为关键的即为所划分的类必须未知。
聚类的本质,在于将海量数据归于相应的类别亦或为簇中,故而在相同簇中所含有的对象,实则表现出极为显著的相似性,反之则表现出相对明显的差异性。
基于统计学的角度进行观察,聚类分析实则借助于数据建模的作用,针对现有的相关数据,进行科学得当的简化。事实上,以往的统计聚类分析方法,重点涵盖分解法、动态聚类法以及有重叠聚类等相关类别。值得一提的是,某些以k-均值等核心算法为基准的各类聚类分析工具,在当前时期已经在以SPSS为主的统计分析软件包中,获得相对广泛的实际应用。
如果基于机器学习的方面来看,簇实则等同于隐藏模式。而聚类的本质则在于针对簇所表现出的无监督学习行为,进行及时采集。相较于分类而言,聚类表现出尤其显著的差异性,其实则属于观察式学习的范畴。
聚类分析实则表现出相对良好的探索性,可基于海量的样本数据,实现科学深入的自动分类。由于各个研究者的采用方法各不相同,故而通过聚类分析一般会获得相异的结论,即使研究对象为同组数据,也是如此。
基于日常应用的方面而言,聚类分析实则对于现今的数据挖掘领域至关重要。与此同时,聚类还可被看作为完全独立的工具,针对相关数据的实际分布情况,进行及时采集。通过观察和筛选,来针对某聚簇集合,进行更深层次的细致分析。
2.2 基于距离的聚类
从本质上而言,K-Means聚类算法实则基于空间存在的k个点,来实现后期的聚类工作。并将其中最近的相关对象进行细致归类,借助于迭代的首选,分别更新多样化聚类中心的实际数值,以此来获得最佳效果。
对于K-Means算法而言,其所遵循的基本流程大致如下:
输入是样本集D={x1,x2,…xm},聚类的簇树k,最大迭代次数N
输出是簇划分C={C1,C2,…Ck}
1) 从数据集D中随机选择k个样本作为初始的k个质心向量: {μ1,μ2,…,μk}
2)对于n=1,2,…,N
a) 将簇划分C初始化为Ct=∅t=1,2…k
b) 对于i=1,2…m,计算样本xi和各个质心向量μj(j=1,2,…k)的距离:dij=||xi−μj||22,将xi标记最小的为dij所对应的类别λi。此时更新Cλi=Cλi∪{xi}
c) 对于j=1,2,…,k,对Cj中所有的样本点重新计算新的质心μj=1|Cj|∑x∈Cjx
e) 如果所有的k个质心向量都没有发生变化,则转到步骤3)
3) 输出簇划分C={C1,C2,…Ck}
一般情况下,K-Means聚类算法通常含有下述基本特征。例如:其在建设过程中相对迅猛,并且极为简洁,尤其适用于大数据集的处理,表现出极为优良的可伸缩性。值得一提的是,对于该类算法而言,其所表现出的时间复杂度实则为O(nkt) ,在此之中,n意味着数据当中全部集中对象的实际数量,与此同时,t=意味着全部算法迭代的实际次数。除此之外,k意味着簇的实际数量。
2.3 基于密度的聚类
DBSCAN聚类算法与K-Means不同,它是基于聚类的一种算法。它旨在假设类别可以取决于样本分布过程中所表现出的紧密性。由此得知,对于类别完全相同的样本而言,其彼此之间实则表现为紧密结合的关系,将其聚合起来即为聚类类别。在此情况下,只需将全部紧密结合的样本进行细致划分,使其生成多样化类别,即可获得全部聚类类别结果。
对于此类算法而言,其关于聚类的基本概念如下:借助于密度可达关系的作用,将能得到和最大密度紧密连接的某特定样本集合,即簇。
在上述簇中,能够包含数个核心对象。假设仅仅存在单个核心对象,则意味着簇中存在的其他数量可观的非核心对象样本,均处于该特定核心对象所表现出的ϵ-邻域当中;与此同时,假设存在若干核心对象,则意味着簇中存在的随机核心对象,所表现出的ϵ-邻域当中,必将含有某个除自身以外的核心对象,才能达到紧密结合的效果。值得一提的是,若将全部核心对象所表现出的的ϵ-邻域中,所蕴含的全体样本集合进行紧密组合,必将形成某特定的DBSCAN聚类簇。
若想找出该特定的簇样本集合,应当借助于DBSCAN算法的作用。首先,随机采集某尚未分类的核心对象,将其定义为种子。其次,找出全部与之相关联的密度可达的样本集合,即可获得聚类簇。随后重复上述步骤,直至全部核心对象均含有自身的类别。
DBSCAN聚类算法的主要特点是:相较于K-means基本方法而言,DBSCAN无需提前知晓后期的簇类数量,并能采集多样化形状的簇类。与此同时,该方法可精准识别相应的噪声点,并且相对于离群点,表现出极为优良的鲁棒性和检测性。如果将DBSCAN和数据库之间进行协同运用,则将能够有效提高现有区域的实际查询速度。
2.4本章小结
在本章节中,旨在针对K-Means算法以及相应的DBSCAN算法,所表现出的基本概念,进行相对深入的细致阐述。从而为后面的算法建模提供帮助。
第三章 Web入侵技术概述
在当今web应用越来越复杂的时代,不法分子对于web所采取的攻击技术也愈加趋于多样化,下面简单介绍10种高发的web入侵技术:
3.1 sql注入:即借助于将相关SQL命令径直插入至Web表单即刻提交等手段,诱导服务器执行某些恶意的SQL命令。整体而言,其实则借助于当前的应用程序,将相关SQL命令径直传递至后台数据库引擎是,使其即刻执行。这种行为一般基于数据库当中的漏洞而实现。造成sql注入的原因有很多,其中主要涉及到①类型处理出现差错;②数据库配置表现出的安全性还有待提高;③查询集处理尚不科学;④错误处理并非恰当。这种漏洞会造成数据库信息泄漏,网页篡改,数据库被恶意操作等后果。
3.2 XSS攻击实则存在于web应用当中,表现为尤为典型的计算机安全漏洞。其可以允许恶意web用户,将不善意的代码径直植入至其他多样化用户的页面当中。通常情况下,XSS能够细分成三种类型,其中包含反射型以及DOM型,此外还涵盖存储型。从本质上而言,XSS危害也特别巨大,甚至能直接盗取各种类型的用户帐号,例如:用户网银帐号等。与此同时,其还能针对尤为关键的企业数据,进行相对精准的控制,其中包含但并不仅限于读取数据以及篡改数据等。除此之外,XSS还能窃取企业尤为关键的商业资料,危害极大。
3.3 CSRF跨站请求伪造,通常又被人们称之为Session Riding,其本质在于恶意利用某特定网站。相较于XSS而言,其表现出尤为显著的差异性,详细如下:XSS的攻击对象仅仅为存在于站点之中的海量信任用户,但是对于CSRF来说,其旨在基于一系列伪装,使其自身成为网站信任的用户,以此来发送恶意请求。从这一角度而言,CSRF攻击虽然现今尚未获得相对广泛的实际应用,然而却很容易被人忽视,故而其实则比XSS更加危险。
3.4通常情况下,分布式拒绝服务攻击的基本含义为:通过各种类型服务器技术的协同作用,将若干计算机之间进行紧密结合,从而形成性能强大的攻击平台,以此来针对若干目标进行DDoS攻击,这样所造成的攻击威力,将呈现倍数式增长。一般情况下,首先,攻击者会借助于某特定的偷窃帐号,将自身所含的DDoS主控程序,径直安装至某特定的计算机当中,其次,基于预先拟定的时间,将现有的主控程序和数量可观的代理程序之间进行实时通讯。在此情况下,一旦代理程序已经成功接收相关指令,将会即刻发动迅猛攻击。值得一提的是,借助于各种类型服务器技术的协同作用,主控程序可以在数秒的时间内,实现众多代理程序的数千次运行。在这之中,尤为关键的时是DDoS攻击一般借助于网络中相关基本协议的作用,例如:Email协议,故而难以对其进行有效防御,只能在攻击出现的情况下,即刻停止服务来对其进行限制。但若如此,合法用户的请求必将得不到回应,这将会影响到网站获得的经济收益。故而一旦发生大规模的DDoS事件,将会极大耗费原本极为充足的网络资源。
3.5 SSRF旨在将内部系统作为自身的攻击目标,其同样借助于服务端漏洞而实现。

第四章 基于聚类的Web入侵检测实现
4.1 开发工具介绍
本文所选择的开发语言为python。这是由于,该语言已经成为现今炙手可热的计算机程序设计语言之一。其本质为脚本语言,表现出极为良好的动态特征,而且还能面向对象。Python自研发之初,旨在编写各种类型的自动化脚本。然而在当前时期,由于版本的持续升级,其新增某些尤为关键的语言功能,故而广泛适用于大规模的项目当中。
开发工具使用Anaconda, Anaconda实则为Python的典型发行版本,表现出开源的基本特性,其中涉及到conda等高达180个科学包。由于其中涵盖数量可观的科学包,故而Anaconda一般需要下载相对较大的文件。用户若想节约空间,也能运用Miniconda版本,该版本相对较小。
4.2 数据集的选择
本文旨在采用KDDCUP99数据集。1998年,西方发达国家的美国MIT林肯实验室,曾经研发出此数据集,并且积极构建出适用于自身军事领域的模拟网络环境。在此情况下,该实验室连续收集高达9周的 TCPdump() 网络连接数据以及相应的系统审计数据,从而针对多样化用户以及各种类型的攻击手段,进行科学合理的仿真。值得一提的是,该采集过程细分为两大阶段,详细如下:第一阶段,7周。其涵盖高达5,000,000的网络连接记录;第二阶段,2周。其涵盖高达2,000,000的网络连接记录。
在上述内容中所涉及的网络连接,可以看作为基于某特定的时间当中,自始至终而形成的TCP数据包序列。在此期间,数据将会基于预定义协议,完成自源IP地址之初,直至目的IP地址为止的整体传送过程。需要注意的是,任何网络连接均会被系统标记,从而细分成正常以及异常两类。其中,异常类型一共含有4大类别,累计涵盖高达39种攻击类型。
4种异常类型分别是:
拒绝服务攻击,例如;
主要代表来源于远程主机所发出的未授权访问,例如
未授权的本地超级用户特权访问,例如
端口监视或扫描,例如。
在此之后,全球著名学者Sal Stolfo及其Wenke Lee,曾经借助于数据挖掘等多样化技术,针对上述所提及的数据集,进行更深层次的特征分析,以及相对深入的数据预处理工作,以此来组成崭新的数据集,即1999年尤为典型的KDD99数据集。
对于此类数据集而言,其旨在基于41个特征值,针对连接(
),进行极为细致的描述:
2.
normal。其中最后一个字段是用来标记该条数据是正常还是异常的数据。
4.3 数据预处理(标准化)
因为kddcup99数据集中存在非数值化数据,于是对该数据集进行标准化处理
第一步将定义将源文件行中3种协议类型转换成数字标识的函数,代码如下:

protocol_list=['tcp','udp','icmp'] return find_index(input[1],protocol_list)[0]

第二步将定义将源文件行中70种网络服务类型转换成数字标识的函数,代码如下:

service_list=['aol','auth','bgp','courier','csnet_ns','ctf','daytime','discard','domain','domain_u', 'echo','eco_i','ecr_i','efs','exec','finger','ftp','ftp_data','gopher','harvest','hostnames', 'http','http_2784','http_443','http_8001','imap4','IRC','iso_tsap','klogin','kshell','ldap', link','login','mtp','name','netbios_dgm','netbios_ns','netbios_ssn','netstat','nnsp','nntp', 'ntp_u','other','pm_dump','pop_2','pop_3','printer','private','red_i','remote_job','rje','shell', 'smtp','sql_net','ssh','sunrpc','supdup','systat','telnet','tftp_u','tim_i','time','urh_i','urp_i', 'uucp','uucp_path','vmnet','whois','X11','Z39_50'] if input[2] in service_list: return find_index(input[2],service_list)[0]

第三步定义将源文件行中11种网络连接状态转换成数字标识的函数,代码如下:

flag_list=['OTH','REJ','RSTO','RSTOS0','RSTR','S0','S1','S2','S3','SF','SH'] if input[3] in flag_list: return find_index(input[3],flag_list)[0]

基于源文件行中,将现有的攻击类型,转化为相应的数字标识,以此来实现的函数代码详细如下:

#label_list=['normal.', 'buffer_overflow.', 'loadmodule.', 'perl.', 'neptune.', 'smurf.', # 'guess_passwd.', 'pod.', 'teardrop.', 'portsweep.', 'ipsweep.', 'land.', 'ftp_write.', # 'back.', 'imap.', 'satan.', 'phf.', 'nmap.', 'multihop.', 'warezmaster.', 'warezclient.', # 'spy.', 'rootkit.'] global label_list #在函数内部使用全局变量并修改它 if input[41] in label_list: return find_index(input[41],label_list)[0] else: label_list.append(input[41]) return find_index(input[41],label_list)[0]

到此完成数据的标准化工作,完成模型建立前的准备。
4.4 建立入侵检测模型
4.4.1 利用k-means建立聚类
借助于sklearn当中所蕴含的K-Means算法,将能针对上述各类数据,进行科学合理的聚类,首先需要对数据进行读取,并且应当借助于pandas模块中涉及的pd函数,针对相关数据进行相应的读取,其基本代码如下:

然后调用K-Means进行数据的分析,

由于数据并不是二维的,在数据分析完成以后,需要使用sklearn.decomposition模块中的PCA函数对数据进行降维,

其次,借助于模块中所涉及的plt函数,针对现有的图进行良好的绘制,对数据进行可视化,

因为如果样本数过多,绘制出来的散点图几乎看不出区别,所以绘制下图时只选择了24条数据来进行演示。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询