【网络入侵检测系统的设计与实现9000字(论文)】_第1页
【网络入侵检测系统的设计与实现9000字(论文)】_第2页
【网络入侵检测系统的设计与实现9000字(论文)】_第3页
【网络入侵检测系统的设计与实现9000字(论文)】_第4页
【网络入侵检测系统的设计与实现9000字(论文)】_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络入侵检测系统的设计与实现中文摘要入侵检测技术在维护网络安全上发挥着重要的作用,是抵御网络入侵行为的一道坚固的屏障。各种入侵检测系统(NIDS)也有着广泛的应用,但是,传统的入侵检测系统在面对现如今数据爆炸的情况下显得有些力不从心,逐渐暴露出了传统入侵检测系统的一些不足,例如误报和漏报率较高、对海量数据的处理能力不足等等。本文基于Linux平台上进行设计开发网络入侵检测系统。该系统可以实时的对网络数据进行采集,通过自身的协议分析模块和异常检测模块对数据包进行检测分析,及时找出入侵行为并进行警告,同时模仿B/S结构设计系统的控制模块,系统捕获进入内部网络的数据包,并逐一进行分析和检测;实时实施威胁处理,同时消耗最少的系统资源;大大增强了内部网络的安全性并保护了敏感数据。提供有效的支持。关键词:入侵检测;网络安全;Linux目录TOC\o"1-3"\h\u24601第1章引言 第1章引言在当今瞬息万变的网络技术时代,解决网络安全问题已成为个人,公司乃至政府部门和国家的主要挑战。这也是每个寻求解决网络安全问题的研究人员都应认真思考和研究的问题。本文主研究基于Linux的网络入侵检测系统的设计和实现。研究的具体内容如下:(1)从用户角度出发,将研究与入侵检测技术相结合,以提供对整个系统的清晰需求分析。(2)根据需求分析结果进行详细的系统设计。参考现有成熟的通用入侵检测模型框架,定义系统架构模型;将系统分为特定的相关模块,然后进一步完善每个模块的特定实现。(3)最后,介绍系统的测试部分,摘要和预测。在这一部分中,将对整个系统进行全功能测试和非功能测试,以最大程度地识别系统问题;结合测试结果来总结该系统的优缺点。最后,结合最新的相关技术,我们讨论了持续改进和扩展系统的未来方向。第2章系统的需求分析2.1功能需求系统应包含如下几种功能:(1)实时对网络数据进行收集;(2)对采集到的数据进行分析;(3)检测到异常行为及时向用户进行播报;(4)能够对分析数据进行储存复用;(5)与用户交互。2.2非功能需求分析在此系统中,非功能性需求主要包括以下方面:(1)系统资源消耗;对于部署在Linux主机上的入侵检测系统,由于其他实用程序可能正在Linux主机上运行,因此如果检测系统消耗过多的CPU或内存,则主机无法保证其他服务的可靠性。(2)系统检测性能;检测性能是入侵检测系统的检测效率,在一小时内可以处理的威胁数量以及警报数量;误报或误报的存在以及误报和误报的可能性。等待多少年。(3)系统对威胁的实时响应速度;入侵检测系统的重要功能是对威胁进行实时及时响应。第3章网络入侵检测系统的具体设计3.1系统总体设计3.1.1架构设计系统架构如图3-1所示。图3-1CIDF模型根据CIDF模型和需求分析结果,网络入侵检测系统可以分为四个模块:数据获取模块,协议分析模块,异常检测模块和控制模块。整个系统架构如图3-2所示:图3-2系统架构图3.1.2功能结构设计结合第2章的需求分析,可以得出系统的功能模块具体如下图所示:图3-3功能结构每个模块都有该模块的特定任务,这为设计的后续部分提供了基础。3.2系统各个功能模块设计3.2.1数据采集模块设计数据收集模块是入侵检测系统的最低部分,旨在从网卡收集数据帧,执行初步过滤处理,然后将数据帧传输到协议分析模块以进行进一步分析。为了使该模块正常运行,必须解决三个问题:(1)确定数据链路层协议的类型:不同类型的协议具有不同的数据帧;(2)怎样去在链路层获取数据包;(3)在捕获中如何保证其捕获效率。可以通过调整系统结构来确定链路层协议,即第一个问题。对于第一个问题,您可以通过调用操作系统提供的接口来确定数据链路层的协议类型。针对第二个问题,则需要通过Linux内核堆栈从而去找到方案解决。Linux协议栈的层次结构如图3-4所示:图3-4Linux协议栈结构从上图可以看到,有两种接收数据链路层的方法:一种是在套接字级别通过操作系统接口接收所有IP数据包;另一种是在套接字级别通过操作系统接口接收所有IP数据包。另一种是使用操作系统链接。直接从道路图层界面获取数据帧。套接字捕获的数据包不能覆盖所有协议的网络数据,该模块通过数据链路接口接收数据帧。数据采集模式如图3-5所示:图3-5数据采集模式图而要去确保链路层对数据包的有效捕获,就需要引入BPF捕获机制,讲BPF的数据过滤器设置参数,通过过滤器后的数据包将保存在BPF的缓冲区,具体模式如下图3-6:图3-6BPF工作原理图当缓冲区装满后,BPF会讲数据传递给用户进行统一处理,相比传统的单缓冲区,双缓冲区可以在缓冲区充满时通过另一个进行缓冲,无需等待,采集效率更高。3.2.2协议分析模块设计(1)从数据获取模块接收数据,提取数据包的密钥信息,并将其保存在适当的结构中。协议分析过程从前一个模块传递的链路层数据包开始。首先,删除报头和链路层数据帧的末尾以获取ARP,IP和RARP这三种协议之一,然后删除IP数据的报头以传输TCP,UDP或ICMP数据包。获取传输层协议。最后,从TCP或UDP删除标头以从应用程序中获取适当的协议。对于不同类型的协议数据包,分析过程包括分解信息以进行下一个检测步骤,并将其存储在适当的数据结构中。(2)将提取的数据保存在数据库中,并将其传递给异常检测模块以进行下一步检测。通过调用ODBC接口将数据保存在数据库中。(3)进行IP分段和重组,为下面的分析做准备。IP分段和重组使用提取的数据包属性来创建功能的链接列表,并将片段插入到链接列表中的相应数据结构中。重组过程如图3-7所示:图3-7分片重组流程(4)TCP流重组,为下一步分析做铺垫;TCP流的重组过程与IP片段的重组过程类似,不同之处在于,用于存储TCP数据包的数据结构被替换为队列。3.2.3异常检测模块设计异常检测主要包括三个部分:(1)通过协议端口对流量进行统计;设置阈值以计算每个端口的流量,任何超过该阈值的流量都会触发异常流量警报。流量统计功能是统计功能的补充,每次接收到数据包时,都会更新流量统计。(2)根据检测规则对数据进行检测;入侵检测旨在识别异常事件。数据包中包含的数据包通过分析所使用的传输协议和数据流的属性来指示异常。尽管将不同类型的网络算法写入日志文件,但检测方法相似。图3-8显示了一般过程:图3-8异常检测流程(3)报警处理。该系统具有三种处理警报消息的方式。①实时阻止:对于应用程序协议,处理方法是发送一条断开TCP连接的消息,而对于其他类型的处理,则创建一个误导性的ICMP消息,指出无法到达目标主机。②消息传送:将消息发送过程封装到系统中的一个函数中,并将生成的消息传递给消息发送函数,消息发送函数通过websocket协议将消息发送到控制器。③消息存储:转换消息格式,调用协议分析器模块中开发的存储功能并将其保存在数据库中。3.2.4控制模块设计已将功能模块添加到与用户交互的系统中。几个系统范围的功能和用户交互可以集成到该模块中,在此系统中称为控制器。它的功能是管理其他模块,使其更易于管理和使用整个系统。管理层可以控制数据收集模块的启动和停止,配置用于分析模块的协议类型的分析协议,在规则库中动态添加,删除和编辑检测规则。3.3数据库的设计常用基本系统,主要用于存储事务模块的分析和异常模块的检测;警报消息,包含IP对应,ICMP报告,TCP,UDP等约定的对应信息,并通过模块异常检测,表,每个日志连接生成警报对应表中。该系统使用数据表的以下主要元素:网络接口信息表:记录相关的网络接口信息,请参见表3-1。表3-1网络接口的相关信息序号字段名类型(长度)说明1NidInt(11)NotNULL接口编号,主键2HostnameText主机名3InterfaceText接口名4FilterText过滤参数5EncodingTINYINT数据编码方式6Date_tDate日期IP数据头表:记下接收到的IP数据包的头信息,见表3-2。表3-2IP数据包头部信息序号字段名类型(长度)说明1idIntUnsignedNotNULL数据编号,主键2srcIntUnsignedNotNULL源IP3destIntUnsignedNotNULL目的IP4versionTinyintUnsigned协议版本5Head_lenTinyintUnsigned头部长度6Tol_lenTinyintUnsigned总长度7flagsTinyintUnsigned标志位8offSmallintUnsigned片偏移9ttlTinyintUnsigned生存时间10protocolTinyintUnsigned协议类型11checksumSmallintUnsigned校验和12Date_tDate日期ICMP数据表:表3-3中显示了与ICMP数据包头有关的信息。表3-3ICMP数据包头部信息序号字段名类型(长度)说明1NidInt(11)NotNULL数据包编号,主键2codeTinyintUnsignedNotNULL代码3checksumSmallintUnsigned校验和4Icmp_idSmallintUnsigned标识符5seqSmallintUnsigned序列号6Date_tdate日期UDP数据表:UDP数据包收到的头信息,见表3-4。表3-4UDP头部相关信息序号字段名类型(长度)说明1NidInt(11)NotNULL数据报编号,主键2Src_pSmallintUnsignedNotNULL源端口3Dest_pSmallintUnsignedNotNULL目的端口4lenSmallintUnsigned数据包长度5checksumSmallintUnsigned校验和6Date_tDate日期TCP数据表:记录与TCP头数据包相关的信息,见表3-5。表3-5TCP数据报头部信息序号字段名类型(长度)说明1Src_pSmallintUnsignedNotNULL源端口2Dest_pSmallintUnsignedNotNULL目的端口3SeqIntUnsigned序号4ackIntUnsigned确认好5offTinyintUnsigned偏移量6Head_lenTinyintUnsigned首部长度7flagsTinyintUnsigned标志位8winSmallintUnsigned接收窗口9urpSmallintUnsigned紧急数据偏移10checksumSmallintUnsigned校验和11Date_tDate日期12Src_pSmallintUnsignedNotNULL源端口异常表:记录检测系统警告的数据包,见表3-6。表3-6异常数据报记录序号字段名类型(长度)说明1NidInt(11)NotNULL信息编号,主键2typeVarchar(11)协议类型3eventText描述信息4Hand_methodVarchar(11)处理方式5Date_tDate日期6Id_proIntUnsignedNotNULL数据包编号,外键上面的数据表包含IP,ICMP,TCP或UDP的段头信息。该信息可以支持详细的攻击后分析。用于分析异常网络行为的特征并制定更有效的检测规则。3.4本章小结本章介绍入侵检测系统的一般设计,然后详细分析系统体系结构和功能结构。建议将系统分为数据收集模块,协议分析模块,异常检测模块,控制模块和其他组件。提出了针对每个功能模块的设计思路,然后对每个功能模块的功能和设计进行了详细的分析和描述。最后,介绍了部分数据库表设计。第4章网络入侵检测系统的实现4.1数据采集模块实现数据采集模块的功能是在链路层上收集数据帧。在该系统中,该模块的工作流程是首先接收数据包,然后确定链路层协议的类型,并使用循环结构连续捕获数据链路层包并将其发送到其他模块进行处理。在此模块中,您可以定义过滤器选项并丢弃不必要的数据包。libpcap库在此系统上用于捕获数据包。Libpcap是一个“高级”功能库,用于捕获数据包接口,以便跨平台访问与实现无关的操作系统。该库用于访问通信层并捕获数据包。它使用第3.2.1节中介绍的BPF收集机制。Libpcap由伯克利大学开发。基于libpcap的调用过程如图4-1所示:图4-1libpcap库调用过程下面介绍一些libpcap库中的重要函数。char*pcap_lookupde(char*errbuf)top函数返回一个箭头,指向网络接口的字符串。发生错误时,错误消息将存储在errbuf指定的内存中,并且Errbuf中的字节数至少为PCAP_ERRBUF_SIZE。此功能是跨平台的。pcap_t*pcap_open_live(constchar*device,intsnaplen,intpromisc,intto_ms,char*errbuf)top函数返回pcap_t指针的类型,后续操作必须依赖于它。该函数的第一个参数是pcap_lookupdev的返回值,第二个参数用于确定要写入的字节数。此参数可用于指定仅在报纸的开头写入的信息,而不管数据如何。第三个参数是符号的位置。如果指示为0,则指示混合模型,其他任何值为混合模型。第四个参数确定要等待的毫秒数。此值之后,函数立即返回。设置为0时,表示您始终在等待书包到达。第五个参数用于在发生故障后存储当前信息。intpcap_loop(pcap_t*p,intcnt,pcap_handlercallback,u_char*user)该功能是关键功能,数据获取模块调用该功能以周期性地获取数据链路层帧。第一个参数是pcap_open_live的返回值,第二个参数确定要捕获的数据包数量。如果数据包的数量超过CNT数据包的数量,它们将立即返回给pcap_loop。通常,此参数设置为负数,这意味着数据包是在循环中捕获的,并且第三个是指向倒数功能的指针,并且指针类型应采用以下形式:voidcallback(u_char*userarg,conststructpcap_pkthdr*pkthdr,constu_char*packet)回调函数是用于处理捕获的数据包的代码,并将特定的处理流程引入该系统的协议分析模块中。数据采集模块运行时,首先安装三个信号处理功能来处理控制器发送的控制信号,其中两个用于处理采集模块的启动和暂停,另一个处理终端信号用于打印统计信息并完成处理。该模块在收到控制启动信号之前处于锁定状态。收到控制启动信号后,它将启动libpcap库的执行过程并执行循环数据包捕获任务。同时,它还可以接收控制停止信号并再次切换到锁定状态。4.2协议分析模块实现协议分析模块的目的是在进一步分析数据包之前执行一些处理,共享识别模块的一些功能,并创建一个更紧凑的识别模块,重点在于实现识别部分。具体如图4-2所示:图4-2协议类型选择图(1)从获取模块接收数据包,并将数据包中的IP协议的重要标志位等关键信息提取为预定的结构。IP标头的结构定义如下:typedefstructIpheader{u_int32src;u_int32dest;u_charversion;u_charhead_len;intlen;intoff;u_charttl;u_intprotocol;u_intchecksum;}Ipheader;对于捕获的数据包,报头信息可以逐层分离,然后每个协议报头信息的关键部分可以通过格式化的输出函数提取为与上述类似的结构。重复前面的过程,以提取数据帧中的所有协议信息,包括网络层,传输层和应用程序层,作为数据包的特征。(2)前一段的数据存储在数据库中,作为后续分析的基础,并传递给下一段处理模块。对于接收到的信息,提取函数有一个参数,这是下一个模块的反向函数。通过在处理结果后调用这个回电函数,它将间接完成将数据包转移到下一个模块的任务。存储在数据库中的信息,将存储过程封装为存储功能,并将int类型的结构和规范参数传输,并挑战saveNetHeader存储功能(void*int)。(3)IP重组,假设我们有50个IP包片段。碎片可能属于一个IP数据包或另一个IP数据包。为了分离不同数据包的碎片,必须从IP包的标题中提取一些特性,这样才能区分属于不同部分的IP包。您可以创建一个简单的IP包引用列表。表节点的下一个结构:typedefstructfragment{u_int32src;//源IPu_int32dst;//目的IPu_int8pro;//上层协议类型u_int8flag;//分片标志u_int16offset;//片偏移量u_int16odf;//数据包标识u_int32size;//分片大小u_int8ttl;//生存时间u_timetim;//节点创建时间rootFragboot;//指向存储分片的二叉树的根节点structfragment*next;//下一个节点指针}Fragment;其中,rootFrag指的是指向有关存储片段信息的二叉树,IP功能的单链接列表的结构如图4-3所示:图4-3IP分组特征链表结构在图4-3中,片段数据基于片段偏移量存储在二进制排序树中。具有较小片段偏移的数据包被插入到左子树中,而具有较大片段偏移的数据包被插入到右子树中。对于新接收到的IP数据包片段,组装过程如下:①提取碎片的特征信息。②滚动浏览简单链接的特征列表,以找到合适的片段特征。③如果找到了片段的相应段,则将该段添加到rootfrag在节点中指定的重复树中;否则,将新的特征节点添加到简单链接的特征列表中,并创建一个新的树,该树具有两个齿来存储信息片段。④查看细分属性引用列表,以查看是否创建了完整的部分。⑤对于组补丁,其重组将从单链列表中删除,并且将在重组Dan广播之后进行,直到下一次格式化该模块为止。⑥将正确返回该步骤,并进一步移动该过程。(4)重新组合TCP流。首先,创建代表TCP特征的数据结构。。typedefstructtcpLink{u_int32src;//源IPu_int32dst;//目的IPu_shortsrc_p;//源端口u_shortdst_p;//目的端口charstate;//连接状态u_char*data;//指向紧急数据的指针intoffset;//存储到data中的第一个字节的偏移量intcount;//data中的数据字节数queue*list;//存储数据的队列}tcpLink,*TcpLink;TCP流的重组可能是后续分析和检测HTTP协议的必要工作。TCP流的重组类似于IP流的重组。首先,定义一个TCP流标识数据结构,标识各种TCP流属性,然后根据每个TCP数据包的属性将它们放置在适当的TCP流数据队列中。然后对每个TCP流的数据队列中的数据进行排序以获取完整的TCP数据。4.3异常检测模块实现(1)流量统计。重要端口的流量统计功能的实现包括创建数据类型映射<shortint,向量<double>>,使用相应的端口号作为键,计算每个数据包的字节数,并同时将流量值计算为相应的端口流量超出阈值时发出警报。统计函数的声明如下:traffStatistics(void*,int)(2)异常检测。在功能表示规则的发现流程中,发现链接列表中包含不同类型的协议包,以匹配相应的发现功能,如以下发现功能所示:boolmatchAddress(uint32,int,uint32,int)如果数据包可以匹配检测到的源地址和目标地址,请继续调用以下检测功能:boolcheck(void*)上面函数的参数是一个空指针,参数值存储在链接的检测列表中。对于由容器表示的规则,您只需遍历容器并在容器向量<ipRule*>中调用类类型对象的成员函数,即可匹配并识别IP地址:boolipRule->matchAddress()boolipRule->check()以上函数可以直接访问类的成员,而无需设置参数。(3)报警处理。如设计模块中所述,警报处理包括三个部分:消息打印,消息存储和实时响应,它们由三个不同的功能执行。intSend(Message*)boolsaveAlrtMessage(Message*,pkg*)boolalrtImmedResponse(Message*,pkg*)4.4控制模块实现系统管理是一个小型Web项目,包含两个部分:前端和幕后流程。前端使用通过C++代码实现的HTML,CSS,JS和Bootstrap框架技术,并且网络接口协议用于在客户端之间进行通信的正面和背面。如果在后台检测到异常数据包,则会通过网络协议将警告消息主动发送到前控制站。在系统刚启动时,管理员可以在前端重新配置操作参数,并将其发送到后处理器以触发检测系统。图4-5显示了该系统的控制界面:图4-4web控制界面以下各节描述了内部和外部控制的实现:(1)控制后端:控制后端以C/C++实现。启动后端时,将创建3个线程来实现以下控制功能:线程1:打开套接字接口并等待前台连接请求。线程2:处理其他模块发送的消息并将其移至前端。线程3:接受页面上的控制消息,控制其他模块,然后将处理结果返回到前端页面。(2)当通过已安装的WebSocket实例打开控制页面时,前端页面规则库的更新将发送到后端,并处理后端,并将结果返回到前端。接收到数据后,前端页面将调用相应的处理函数。正确处理并填写起始页上的数据。同时,当内部检测进程检测到异常数据包时,将通过WebSocket将消息主动发送到外部接口,并且从外部接口接收到的消息将调用相应的进程以在消息列表中显示数据。4.5本章小结本章详细介绍不同功能模块进行实现的具体细节。第5章系统测试5.1测试目的测试目的包括:(1)发现软件错误这也是存在软件测试的主要原因。在软件测试的早期阶段发现问题可以帮助确保软件在后期阶段可以平稳运行。同时,可以降低运行时风险并提高测试效果。(2)对系统进行评估如果要评估软件的质量,则软件测试是必不可少的方法。测试数据的统计分析,例如测试过程中测试案例的成功率和覆盖率,可以大致确定软件可以满足预期功能要求的程度,同时可以基于测试结果来分析软件的后续情况。完善和提供参考依据。5.2测试方法对于该系统,系统的工作过程相对简单:首先由网络采集模块记录数据,然后由后续分析模块分别进行分析。因此,我们主要在系统上执行黑盒测试。以下各节详细介绍了测试过程。5.3功能测试5.3.1协议分析功能的测试在本节中,模拟用户行为对系统运行进行测试。通过运行这两个模块获得的协议分析结果如图5-1所示。:(a)(b)图5-1协议分析结果图图5-1(a)显示了IP密封的UDP数据的内容以及IP头的某些信息。图5-1(b)显示了IP协议中包含的TCP数据以及有关其IP头和TCP头的信息。5.3.2检测功能的测试针对测试功能,首先在系统添加具体检测规则,然后观察控件以查看它是否可以从后台获取检测信息。首先,通过浏览器打开Web管理页面,如图5-2所示,这是整个系统的管理界面:图5-2web控制页面如图5-2所示,左侧是控制页面的导航窗格,右侧的页面顶部是带有警告和协议统计信息的表,下半部分是通过Websocket协议从背面发送的数据。数据包相关消息:消息由五个字段组成,包括编号,协议类型,信息描述,处理方法和日期。警告信息以红色显示,日志信息以黑色显示,绿色类型用于标识特别受影响的经常使用的日志,例如B.TCP协议的数据部分。数据部分如图5-3所示:图5-3消息列表数据设定检测规则进行功能测试:规则头部:{httplocalhost***alrt}规则尾部:{id:1028;url:””;action:alrt;message:”detect”;}上面的规则的重点是检测从本地计算机发送到地址的http数据报,并在警报信息中添加“detect”行,从而对检测到的数据报发出警报;并将警报识别设置为1028。在引入以下规则之后,我们可以打开浏览器并访问域名。可以使用如图5-4所示的控件找到包含上述规则的数据包:图5-4检测结果数据如上图所示,系统中的消息列表包含有关危险编号1028的信息,并且消息包含预定义的字符串。5.4测试总结经过模拟测试后,系统目前功能初步满足设计要求。随着系统的运行,系统的检测规则得以更新,检测系统变得更加完善。第6章结论本文的主要研究内容总结如下:(1)首先分析并设计系统的具体功能,包括数据采集,协议分析和异常检测,同时为了系统的交互性,需要控制模块。(2)根据总体设计中提出的计划实施编码。在实施阶段,系统中广泛使用了现有的成熟相关技术,以提高系统的性能和可用性。示例:选择具有自身性能优势的C/C++编程语言进行编码,在数据采集模块中使用双缓冲模式以提高数据采集效率并减少数据包

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论