论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

个人入侵检测系统的实现(论文+程序)

2        个人入侵检测系统的设计

内容来自论文无忧网 www.paper51.com

2.1  数据包捕获模块 paper51.com

网络入侵检测系统要分析的对象是网络中的数据包。所以我们就需要对流经网络的数据包捕获并加以分析,这样才能得到实现入侵检测的功能。对于不同的操作系统有许多不同的数据包捕获方法。在本系统中,采用了windows下的 Winpcap网络驱动开发包,它是Windows平台下的一个免费、公共的网络驱动开发包。开发Winpcap这个项目的目的在于为Win32应用程序提供访问网络底层的能力。它提供了以下的各项功能: 内容来自论文无忧网 www.paper51.com

1、捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报 http://www.paper51.com

2、在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉 http://www.paper51.com

3、在网络上发送原始的数据报

paper51.com

4、收集网络通信过程中的统计信息 copyright paper51.com

Winpcap由三个模块构成:NPF, packet.dll, wpcap.dll。前一个工作在内核层,后两个工作在用户层。第一个模块是内核部分NPF (Netgroup Packet Filter),在Win95/98中它是一个VXD(虚拟设备驱动程序文件)文件,在WinNT/Win2000下是一个SYS文件。它的主要功能是过滤数据包,并把这些数据包原封不动地传给用户态模块。当然也添加了一些系统特定的标志(比如时间戳管理)。这个过程中包括了一些操作系统特有的代码。第二个模packet.dll用来在不同的Win32平台下提供一个通用的公共的包驱动接口。事实上,不同版本的Windows平台在内核层模块和用户进程之间的接口不完全相同,packet.dll用于解决这些不同。提供了一套系统独立的API,调用packet.dll的程序能够运行在不同版本的Windows平台上而无需重新编译。packet.dll还有一些附加的功能。它可执行一些低层操作:如:获得网卡名字,动态装载驱动,得到比如机器的网络掩码、硬件冲突等一些系统特定的信息。Packet.dll和NPF都是系统相关的,在Win95/98和WinNT/2000等不同系统架构Packet.dll会相应有些变化。第三个模块wpcap.dll是系统无关的,它提供了更高层、抽象的函数。它包括了一些比如过滤器生成、用户级缓冲等其它的高层函数,增加了比如统计和包发送等更高级的特性。因此程序员能处理两种类型的API:一套原始函数集,包含在packet.dll中,直接与内核层调用匹配;另一套高层函数由wpcap.dll提供,便于用户调用,功能更强大。程序员能随意使用wpcap.dll,但只能在受限的环境中直接使用packet.dll. 内容来自www.paper51.com

总的说来,Packet.dll直接映射了内核的调用。Wpcap.dll提供了更加友好、功能更加强大的函数调用。Winpcap的具体结构图2所示:

http://www.paper51.com

图2Winpcap的具体结构 内容来自论文无忧网 www.paper51.com

正如在Windows网络体系结构中所阐释的,Win32网络架构基于NDIS(Network Drive Interface Specification网络驱动程序接口标准)。NDIS工作在Windows内核网络部分的最底层。捕获进程核心必须工作在内核层,先于协议栈之前处理包。BPF被网卡驱动程序直接调用,要求NIC设备驱动程序遵从一些所谓的“BPF(BerkeleyPacket Filter)驱动规范”。换句话说,它需要设备驱动可以直接调用BPF Tap函数,能控制所有经过网卡的包(发送或接收),能对过滤后的包进行复制。当使用Winpcap进行捕获时,这种方法明显不行。因为Windows与BPF驱动规范有些不同:Windows不允许为了增加捕获功能而改变操作系统和NIC驱动。因此,Winpcap把Network Tap作为协议驱动放置在NDIS结构的上方。NDIS没有从NPF中完全分离出底层,不能自动支持不同的介质类型,故需要以这种方式构建。与NDIS的交互使NPF(NetGroupPacket Filter)比原始的BPF更加复杂,BPF通过一条简单的回调函数与系统交互;在另一方面,NPF是协议栈的一部分,就同其它网络协议一样与操作系统交互。然而,NPF获得了更好的执行效果,其Tap比BPF还要运行得快。同BPF一样,当包静止时NPF把过滤器放入NIC驱动内存中。另一个优化措施是NPF的同步操作。异步调用不支持,因此用户级存取经常被阻塞。NPF不需要设置用户级访问缓冲队列,这使驱动运行得更快。

内容来自www.paper51.com

图3显示了NPF在NDIS结构中的位置: 内容来自www.paper51.com

可以看出Winpcap也是用的NDIS,它将自己注册为一个协议处理驱动。(在原代码的driverentry里面能看到)。NPF是Winpcap中的核心部分,它完成了大部分的工作:将数据包发送到网络中并导出捕获的数据包,交由用户程序分析处理。

内容来自www.paper51.com

图3 NDIS内NPF

http://www.paper51.com

Winpcap中NPF的实现由于是以协议驱动程序的模式来实现的,虽然从性能上看来并不是最始数据的完全访问。不同的Windows系统有不同的NDIS版本,NPF兼容Win2K及其后续的WinXP版本下的NDIS5,也兼容其他Windows平台下的NDIS3版本。NPF与操作系统之间的通信通常是异步的,NPF提供了一系列的回调函数供操作系统在需要时调用。NPF提供了应用程序所有I/O操作的回调函数,如:open,close,read,write等。 paper51.com

NPF与NDIS之间的通信也是异步的.一些事件如当数据包到达时是通过回调函数通知NPF(这个例子中是Packetes tapo),并且,NPF与NDIS和NIC驱动之间的通信是非阻塞函数来实现的。当NPF调用NDIS函数时,调用立即返回;当处理完毕时,NDIS再调用一个特定的函数通知NPF.NPF对所有的底层操作都提供了回调函数。 图4显示了NPF的基础结构及其在Winpcap中的工作模式。 paper51.com

图4 NPF协议驱动 内容来自www.paper51.com

Winpcap中过滤进程由用户级部分开始。它能接收一组用户定义的过滤规则(例如接收所有的UDP数据包),把它编译成一套伪指令(例如,如果是IP包且协议类型等这些指令等于17.就返回“True"),把这些指令发送到内核层过滤器,最后激活代码。内核层过滤器必须能够执行这些指令;此外,它需要一个“BPF虚拟机”来执行伪代码从而对所有到来的包进行操作。这个核心层和BPF兼容的过滤器是Winpcap获得良好性能的关键。NPF不同于BPF的一个重要的结构差别就是选择了一个环形缓冲区作为核心缓冲区.这有利于数据包快的复制。但这种机制更难于管理。因为复制的数据不再有固定的大小(Libpcap中,用户缓冲区和核心缓冲区都是32K)。当数据从内核缓冲区传送到用户缓冲区时,相同数量的包被复制到内核缓冲区中。它们是同步更新的,而不是在之后。由于内核部分较之缓冲区传送有更高的优先级,能独占CPU时,故复制过程(从用户层开始)能释放掉缓冲区已传送的部分。环形缓冲区允许所有的容量来存放数据包,前面谈到的一对BPF交换缓冲区只能用一半的容量。整个缓冲区可以用一条简单的Read() 指令读取,肯定减少了系统调用和在用户、内核模式之间上下文切换的次数。因为一次上下文切换需要保护现场(仅CPU描述符和任务状态段的开销就接近数百个字节),大批的传送会减少进程的开销。但是一个太大的用户缓冲区不会带来任何好处。当可分配内存太大时,上下文切换的开销反而可忽略不计了。Winpcap的核心缓冲区比BPF的大,通常为1M。一个小缓冲区会影响捕获进程。尤其在一段时间里应用进程读取数据的速度不如捕获进程,而且数据要被传送到磁盘,网络流量在激增。内核缓冲区和用户缓冲区都能在运行时间里改变。 paper51.com

2.2  数据解析模块

paper51.com

在本模块的设计中,主要涉及了三方面的知识:windows网络体系结构、TCP/IP协议,数据的封装和分用过程。 http://www.paper51.com

TCP/IP参考模型与ISO(International Standards Organization)的OSI(Open SystemsInterconnection Reference Model)参考模型相比,要简单实用得多,也是目前广泛使用的网络参考模型。在TCP/IP参考模型中没有明确的数据链路层和物理层,而是将它们合为较为抽象的“网络设备互连”作为硬件基础,随主机和网络的不同而不同。这种模型的应用范围较广,既可用于广域网.也可用于局域网。TCP/IP协议族,有很多协议。 内容来自论文无忧网 www.paper51.com

当应用程序用TCP传送数据是,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment)。IP传给网络接口层的数据单元称作IP数据报。通过以太网传输的比特流称作帧(Frame)。这就是通常说的数据的封装过程。 内容来自www.paper51.com

当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)。 http://www.paper51.com

IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP提供不可靠、无连接的数据报传送服务。 paper51.com

IP各域的含义如下: 内容来自www.paper51.com

版本:当前IP协议的版本号,本论文采用的版本号为4;

paper51.com

首部长度:以32bit为单位的包头长度; copyright paper51.com

服务类型:规定对本数据报的处理方式,比如优先权等;

内容来自www.paper51.com

总长:以Byte为单位的整个IP数据报长度;

内容来自论文无忧网 www.paper51.com

标识:信源主机赋予每个IP数据报的唯一标识符号,用于控制分片及其重组;

内容来自论文无忧网 www.paper51.com

标志和片偏移:同样用于控制分片及其重组; copyright paper51.com

生存时间:设置本数据报的最大生存时间,以秒为单位; paper51.com

协议:表示创建本IP数据报数据区数据的高层协议的类型,如TCP,UDP等;

copyright paper51.com

头标校验和:用于保证头标数据的完整性; 内容来自www.paper51.com

源IP地址和目的IP地址: 分别指发送本数据报的主机IP地址和接受本数据报的主机的IP地址; 内容来自www.paper51.com

选项:用于控制和测试,是IP数据报中可选的部分,包含“源路径”、“路径记录”、“时间戳”等几种类型。

内容来自www.paper51.com

TCP协议是网络中应用最为广泛的协议,许多的应用层协议都是在建立在TCP协议之上的。

内容来自www.paper51.com

TCP协议头部信息如下:

paper51.com

源端口:发送端TCP端口号; 内容来自论文无忧网 www.paper51.com

目的端口:接收端TCP端口号; 内容来自www.paper51.com

序号:指出段中数据在发送端数据流中的位置;

内容来自论文无忧网 www.paper51.com

确认号:指出本机希望下一个接收的字节的序号;

内容来自www.paper51.com

头标长度:以32bit为单位的段头标长度,针对变长的“选项”域设计的;

内容来自论文无忧网 www.paper51.com

码位:指出段的目的与内容,不同的各码位置位有不同的含义; 内容来自论文无忧网 www.paper51.com

窗口:用于通告接收端接收缓冲区的大小; 内容来自论文无忧网 www.paper51.com

校验和:这是可选域,置0表示未选,全1表示校验和为伍; copyright paper51.com

紧急指针:当码位的URG置位时,指出紧急指针的序号; copyright paper51.com

------分隔线----------------------------
联系方式