校园网网络行为实时监测系统.pdf_第1页
校园网网络行为实时监测系统.pdf_第2页
校园网网络行为实时监测系统.pdf_第3页
校园网网络行为实时监测系统.pdf_第4页
校园网网络行为实时监测系统.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

摘 要 本文设计了一个比较完善的分层式校园网网络行为实时监测系统,并对其各 模块的功能和实现方法进行了分析与描述。在网络数据的采集方式上,采取了一 种基于 sFlow 的采集技术与基于“包捕获”的采集技术相结合的数据信息采集结 构。而在网络行为分析方面,采用了协议分析技术对采集到的数据包进行数据分 析以得到各种不同的流量信息;采用了模式匹配技术和协议分析技术相结合的方 法来完成对异常行为的实时检测。 此系统可以使管理者实时地监测到校园网内部用户的网络行为信息,且对规 模日益庞大、速度越来越快的高校校园网建设具有一定的参考意义。 关键词:网络行为分析,网络监测,协议分析 关键词:网络行为分析,网络监测,协议分析 ABSTRACT This paper presents a rather perfect solution for the real-time and improved hierarchical network-behavior monitoring system, analysis and describe in detail the function and implementation method of each sub module of the system. With regard to the acquisition mode of network data, the structure of data acquisition combining the sFlow-based acquisition technique with the Packet Capture-based acquisition technique is used. With regard to the analysis of network behaviors, this paper applies the technique of protocol analysis to give an analysis of data to the acquired data packets, so that we can get the detailed traffic information; and the paper applies the method of combining the technique of pattern matching with the technique of protocol analysis to monitor the real-time detection of abnormal behaviors. This system can make the administrator real-time monitor the information on the network behaviors of internal users in the campus network, and give some references for the construction of the campus networks in colleges that become increasingly large in scale and progressively faster in speed. Cai Zhen(Computer Application Technology) Directed by prof. Zhu Yongli KEY WORDS: network behavior analysis,network monitoring,protocol analysis 目 录 中文摘要 英文摘要 第一章 引言1 1.1 课题研究背景和意义1 1.2 国内外相关技术的研究现状2 1.3 本文研究内容及组织结构3 第二章 网络行为实时监测的相关技术5 2.1 网络行为实时监测系统概述5 2.2 网 络 数 据 采 集 技 术 6 2.2.1 网络数据采集技术概述6 2.2.2 基于“包捕获”的网络数据采集技术8 2.2.3 基于 sFlow 的网络数据采集技术11 sFlow 数据采集的工作原理11 sFlow 相比其它采集技术的优点13 sFlow 的采样误差问题13 2.3 异常行为模式匹配技术14 2.4 网络协议分析技术15 第三章 校园网网络行为实时监测系统的体系结构设计17 3.1 校园网现状与网络行为特点17 3.2 校园网网络行为实时监测系统的设计目标和要求18 3.3 网络行为实时监测技术和方法的选取及设计19 3.4 校园网网络行为实时监测系统总体结构20 第四章 系统各模块的设计与实现24 4.1 基于 sFlow 的数据包采集模块24 4.1.1 配置支持 sFlow 功能的核心交换机24 4.1.2 数据包采集并编码25 4.1.3 数据接收、解析并分类整理26 4.2 基于“包捕获”的数据包采集模块29 4.2.1 数据包捕获过程29 4.2.2 数据存储结构设计32 4.3 流量分析模块的功能及实现33 4.3.1 监测校园网出口带宽及其利用率34 4.3.2 掌握校园网内不同用户群的网络行为特征34 4.3.3 通过协议分析统计不同网络应用服务的使用情况35 4.3.4 实时监测校园网内发生的异常流量39 4.4 异常行为分析模块的设计与实现40 第五章 结论47 参考文献49 致 谢51 在学期间发表的学术论文和参加科研情况52 1 第一章 引 言 1.1 课题研究背景和意义 随着计算机技术和网络技术的快速发展,人们对互联网的认识和使用已经越来 越深入,据中国互联网中心 CNNIC 统计,截至 2009 年 6 月 30 日,中国网民规模达 到 3.38 亿人,普及率达到 25.5%。网民规模较 2008 年底年增长 4000 万人,半年增 长率为 13.4%,中国网民规模依然保持快速增长之势。其中,学生网民的数量达到 1.07 亿,占比 31.7%,是目前网民的最大群体 1。 党的“十七”大报告明确提出要“大力推进信息化,加快建设现代化” 。而加 快推进教育信息化的建设,培养适应信息化社会的人才,也已成为教育变革的一个 新的标志。近年来,各级教育部门都加大了对网络建设的投入力度,国内高校的信 息化发展迅速,千兆及万兆校园网、电子图书馆等系统的建设已经取得了突破性的 进展。加上各个院校之间的网络互联,网络信息资源得到了更充分的共享,网络信 息技术在教育教学中被大量应用,加快了信息化知识和技能的普及进程。网络已成 为高校教育教学不可缺少的环节,网络信息技术正在对高校教育的各个领域产生巨 大而深远的影响。 大学生群体对网络的依赖感是青少年网民中最高的, 这与其网络生活最为活跃 密切相关,而且在各种主要的网络应用普及率上,大学生群体也均高于其他青少年 网民群体 2。所以,面对日益复杂的网络应用和庞大的校园网络,如何保证校园网 络信息安全,并对校内的各种上网行为进行管理和规范,避免师生对网络资源的不 良使用,促进校园网的健康发展,已经成为各高校对信息化建设的进一步要求。 国内一家专门针对高校网络研发网络行为管理系统的公司(8e6 科技公司)进 行过一次调研,这项针对全国高校进行校园网络安全的调查统计显示:25%的受访 者担心不当网站内容会影响学生身心健康的发展与学业发展;36%的受访者担心学 生/ 教职员工使用网络会引来安全问题;55%的受访者表示目前校园网络使用问题 多数是由不当上网行为而引发的;超过 70%的受访者相信利用网络行为管理产品来 管理、记录、分析网络行为和网络存在的安全风险,能有效防范不当网络行为引发 的网络安全与资源滥用问题,并且能为学校提供一个优质安全的网络学习环境 3。 目前校园网用户网络行为中存在的主要问题有: (1)非法网站带来的法律责任 风险,一些色情暴力网站以及网络游戏对学生学习生活所带来的负面影响; (2)随 意使用在线音频和视频应用、P2P 类下载工具所引起的网络带宽资源的拥塞; (3) 2 对 Web 电子邮件、BBS 信息发布或 MSN、QQ 等即时通信工具的不当使用而导致的 重要信息泄露; (4)隐藏在各类娱乐或交易类网页中的病毒、蠕虫、木马等恶意程 序带来的安全事故风险。 要解决这些问题,就要使用有效的解决方案。目前已有的防火墙、入侵检测系 统和路由器等安全工具可以记录网络访问,但无法提供有关访问内容更详细的记录 信息。因此,出于网络监管、安全监测等目的,校园网相关管理部门和管理者就需 要及时、充分地了解网络上发生的各种情况。而校园网网络行为实时监测系统可以 通过运用网络测量、协议分析、网络安全审计和规则匹配等相关技术对校园网内部 用户的网络行为进行监听和分析,以此达到防止泄密、防止网络攻击、监测和管理 用户上网行为和控制网络流量等目的。 1.2 国内外相关技术的研究现状 目前,随着人们对内部网络信息安全的越发重视,实时了解和掌握内部网络的 使用情况和用户行为的要求也越来越高。近年来,国内外关于网络行为监测技术的 研究和相关产品的研发也都取得了突破性的进展。 在网络数据采集方面,采用最多的便是基于“包捕获”的网络数据采集技术, 其通过将网卡设置为“混杂模式”以截获网内传输的数据包,理论上其可以截获网 内用户所有的数据包,以此对网内用户的网络行为进行完全监测和分析。其缺点是 当其应用在高速且庞大的内部网络中时,面对网络中大量的用户数据包,并且要求 实时进行监测与分析时, 显得力不从心。 于1996年由思科公司的Darren Kerr和Barry Bruins发明的NetFlow技术目前已经研发到了V9,其工作原理为:对流经网络设备 内部的数据包进行捕捉并分析对比,将符合相同规则的数据包进行聚类操作,然后 一同发送给数据收集服务器,以方便统计网络流量和用户行为等信息。其缺点是因 为网络设备要对大量的数据包进行聚类操作,所以会占用网络设备的大量资源,且 成本较高。 2001年, 由交换机监测软件生产商InMon的工程师和HP、 Foundry Networks 的开发人员联合开发的“永远在线”技术-sFlow 4,通过将其嵌入到网络路由器和 交换机ASIC芯片中,可以对整个网络上传送的局域网和广域网数据包流进行随机采 样,让用户详细、实时地掌握网络传输流的性能、趋势和问题。其不但能够大大降 低实施成本而且能够采集到更加详细的网络数据包信息。sFlow的优点虽然很多, 但也具有其固有缺点,那便是因为其基于“采样”技术,无法对所用的网络数据进 行监测,所以在网络用户异常行为检测方面逊色很多。 而在对网络用户异常行为分析方面,主要的分析方法有两大类:一类是以网络 用户的正常行为建模,来判断采集到的行为信息是否异常,其称为异常检测技术, 3 主要包括基于统计分析、基于数据挖掘和基于神经网络的检测方法等;另一类是以 网络用户的不正常行为建模,检测采集到的行为信息是否符合这些模式,其称为误 用检测技术,主要包括基于模式匹配、基于专家系统和基于模型推理检测方法等。 目前,基于误用的异常行为检测技术是数据分析的主流应用技术,它的研究始于20 世纪90年代中期,现已开始在各种不同的环境中发挥其关键作用,如已有的开源系 统Snort、AAFID等。其中,模式匹配技术是其代表性的检测方法,它将采集到的用 户行为信息和已知的网络异常行为误用模式数据库进行比较、匹配,从而发现违背 安全策略的行为。它的优点是原理简单,准确率高;缺点是只能检测已知攻击,模 式库需要不断更新。另外,如果将单一的模式匹配技术应用在高速大规模网络中, 由于要分析处理大量的数据包,且对任何协议类型的数据包都要针对所有的异常行 为模式数据库进行匹配,其实时检测速度和性能将成为问题。 1.3 本文研究内容及组织结构 一个网络行为监测系统一般包括信息采集和信息分析两个模块,本文将分别就 网络数据采集和网络行为分析相关技术的原理和方法进行介绍和分析。在此基础上 提出并设计了一个应用在高校校园网的网络行为实时监测系统。 其中,在网络数据采集方面,一个高速且规模较大的校园网网络行为实时监测 系统,单一的采集方式无法满足其所需的功能要求。因此,针对校园网实际特点, 本文把基于sFlow的采集技术与基于“包捕获”的采集技术相结合,利用sFlow技术 所具备的全线速采集、采集信息详细等优点,将其部署在校园网的核心层,对校园 网内部网络流量进行监测,以期对校园网用户的行为特征、实时发生的异常流量等 进行监测。利用“包捕获”技术的数据采集特点,将其部署在校园网内部的汇聚层, 记录并分析汇聚层网络的全部用户行为信息,以备对其中是否含有异常行为进行检 测。这种sFlow与“包捕获”相结合的分层式采集方案,可以弥补单一采集方法的 不足,即高速又全面的对网络用户的行为信息进行实时监测和记录分析。 在网络数据分析方面,将网络协议分析技术应用在校园网流量监测中,对采集 到的数据包进行数据分析以得到各种不同的流量信息;在异常行为检测上,将协议 分析技术与模式匹配技术相结合,通过网络协议的高度规则性对高速网络中的数据 包进行实时解析分类,根据不同协议下的异常行为模式规则库,运用模式匹配算法 对数据包信息进行异常行为匹配,快速探测出异常行为的存在,这样可以有效地避 免单一模式匹配方法计算量大、效率低等缺点,提高了检测速度,且通过协议分类 可以大幅降低误报率。 本文的结构如下: 4 论文共分五章,第一章为绪论部分。 第二章,首先介绍了目前常见的基于网络的数据采集技术,着重介绍了基于以 太网网络数据包捕获和基于数据流采样(sFlow)的两种网络测量技术。然后讨论 了异常行为模式匹配和网络协议分析的相关技术与方法,其中包括异常行为模式匹 配技术的原理和常见算法、TCPIP协议簇的体系结构等。 第三章,首先分析了高校校园网网络行为实时监测系统所需具备的功能和要 求;然后针对这些功能要求,结合网络数据包捕获技术和sFlow技术的优点设计了 一个针对校园网具体环境的网络数据采集方案,结合协议分析技术和模式匹配技术 设计了一个网络流量和异常行为分析的网络数据分析方案;最后给出了一个基于校 园网实时数据采集的改进型分层式网络行为实时监测系统的体系结构。 第四章,针对第三章提出的网络行为监测系统的数据采集模块和数据分析模块 给出了详细的设计方案,并举例描述了各项功能的实现方法,如HTTP协议的解析、 IP协议数据包的规则匹配流程等。 第五章,对本论文的工作进行了总结,并列出了下一步研究工作的内容。 5 第二章 网络行为实时监测的相关技术 2.1 网络行为实时监测系统概述 网络行为是指与现实社会中人们的社会行为相对应的网络社会中的行为,是行 为主体采用计算机网络作为行为对象和行为载体而进行的有意识的活动,它不是虚 拟的,而是具有社会行为的一般特征和基本要素,是实实在在的行为。网络行为测 量和分析是研究网络行为学的基础,通过测量分析可以掌握网络行为的基本特征, 有助于寻找网络行为变化的规律 9。 网络行为实时监测系统主要通过研究数据采集技术、数据分析技术和应用恢复 技术,来完成对网络上的特定服务和用户行为实现实时监测的功能。系统首先获取 到网络上正在传输的数据流中特定服务包的完整信息,再对所获取的数据报信息进 行分析, 而后通过代码来恢复其在应用层的实现。 实时监测系统的实现步骤如图2-1 所示: 图 2-1 实时监测的实现步骤示意图 网络行为监测系统的分类,根据数据源来源可分为: 1. 基于主机的网络行为监测系统。通常是安装在被保护的主机上,主要是对 该主机的网络实时连接以及对系统审计日志进行分析和检查。 2. 基于网络的网络行为监测系统。一般安装在所需监测的网段中或路由器、 交换机等网络设备上,实时监视网络中传输的各种数据包,并对这些数据包进行分 析和检测,它的运行不会给客户主机的系统和网络增加负担。本文主要研究的就是 此类网络监测系统。 3. 混合式的网络行为监测系统。基于主机的网络行为监测系统和基于网络的网 络行为监测系统都有不足之处, 单纯使用其中一种系统进行监测都不够强大。 但是, 他们的缺憾是互补的,如果这两种系统能够结合起来部署在网络中,则会构架成一 套强大的立体的网络行为监测系统。 根据网络行为监测系统的体系结构的不同,可以分为: 1. 集中式网络行为监测系统。其仅有一个网络监测服务器,对网络上采集到 数据采集 数据分析 应用恢复 6 的所有数据进行分析处理。集中式监测系统在可伸缩性、可配置性方面存在致命缺 陷。随着网络规模的增大,服务器所需分析处理的网络数据会增多,工作效率也会 大幅降低,而且一旦此服务器出现故障,整个系统就会失灵。 2. 等级式网络行为监测系统。也叫分层式监测系统,它定义了若干等级的监 测区域,每个监测系统负责一个区域,每一级的系统只负责所监测区域的分析,然 后将当地的分析结果传送给上一级的监测系统。等级式监测系统也存在一些问题。 比如,这种结构的监测系统最后要将各地收集的结果传送到最高级的监测服务器进 行全局分析,所以在系统的安全性上并没有实质性的改进。 3. 分布式网络行为监测系统 10。将中央监测服务器的任务分配给多个基于主 机的监测系统,这些监测系统不分等级,各司其职,负责当地主机的某些活动。所 以其可伸缩性、安全性都得到了显著的提高,并且与集中式监测系统相比,分布式 监测系统对基于网络的共享数据量的要求较低。但维护成本却提高了很多,并且增 加了所监测主机的工作负荷。 2.2 网络数据采集技术 2.2.1 网络数据采集技术概述 从狭义概念上理解,网络数据采集是指从网络传输线路上将网络通信数据捕获 到网络监测设备的过程;从广义概念上理解,网络数据采集是指网络数据被监控设 备的接口获取,直至被传输给处理器之前的全部过程。我们所讨论的概念为后者。 网络数据的采集按照采集设备的接入方式可以分为并接工作模式(如图2-2) 和串接工作模式(如图2-3)两种。 图2-2 并接数据采集工作模式 图2-3 串接数据采集工作模式 7 并接工作模式是指将数据采集设备并接到网络中,网络数据同时可以到达用 户,并且可被数据采集设备捕获。一般来说,网络监测以不影响用户对网络的正常 使用为原则。因此,大多数监测都是采用并接到网络上的方式进行,使监测系统不 成为网络的性能瓶颈,同时即使监测系统失效也不会中断正常的网络通信。这种方 式的缺点也是比较明显的:部署对网络环境如交换设备的依赖性较强,发现问题后 自动响应的生效时间较长,不利于安全保障。在使用交换机的环境中,可以通过端 口镜像技术,利用交换机的镜像监听口(mirror port)得到其它端口的网络数据包, 如3com的交换机可以配置一个端口监听另一个端口,而Cisco交换机则支持一个任 意端口监听其它所有指定端口的网络数据包 11。这种工作的优点是不需要额外设 备,缺点是需要交换机支持,而且当一个监听口监听多个端口时,被监测的带宽理 论上大于监测系统的硬件接受能力,峰值情况下必然出现丢包现象。 串接工作模式就是把监测引擎串接到网络中,到达各主机的数据必须经过数据 采集设备,提取并分析其中流经的信息,根据预定义的规则判断是否通过。采用这 种方式,数据采集设备一定可以捕获到网络中的所有数据。但是这种方法受到了多 方面因素的制约,如网络设备的带宽、处理性能等。这种方法的缺点十分明显,一 旦网络设备的带宽小于网络设备的带宽或是网络设备的处理性能较低,就有可能造 成网络的瓶颈,从而影响正常的网络使用,造成网络的延迟甚至瘫痪。 目前常见的网络数据采集技术有基于“包捕获”的采集技术、基于 SNMP 的采 集技术、基于 RMON 的采集技术、基于 NetFlow 的采集技术和基于 sFlow 的采集技 术等,下面我就不同技术做如下介绍,其中基于包捕获的网络数据采集技术将在 2.2.2 小节重点介绍,基于 sFlow 的网络数据采集技术将在 2.2.3 小节重点介绍。 基于 SNMP(Simple network management protocol)的网络数据采集技术 1213, 其数据采集方式有两种:主动访问被采集对象和被动接收传送信息。主动访问被采 集对象是指管理进程(采集设备中)通过 SNMP 协议发起对被采集对象的请求,被采 集对象设备中的代理进程则响应该请求。被动接收传送信息是指管理进程监听陷阱 端口(通常为 UDP162 端口),接收来自被采集对象的传送信息。代理进程会在预定 义事件发生时向管理进程发出 Trap 报文。 基于 RMON(Remote Monitoring)的网络数据采集技术 1415,其数据采集方式 有两种:一种是通过专用的 RMON 探测器(probe),监测服务器直接从探测器获取数 据信息并控制网络资源,这种方式可以获取 RMON MIB(管理信息库)的全部信息; 另一种方法是将 RMON agent 直接植入网络设备(路由器、交换机、HUB 等)使它们 成为带 RMON probe 功能的网络设施,监测服务器用 SNMP 的基本命令与其交换数据 信息,收集网络数据信息,但这种方式受设备资源限制,一般不能获取 RMON MIB 8 的所有数据。当前 RMON 有两种版本:RMON v1 和 RMON v2。RMON v1 在目前使用较 为广泛的网络硬件中都能发现,它定义了 9 个 MIB 组服务于基本网络监测;RMON v2 是 RMON 的扩展,专注于 MAC 层以上更高的流量层,它主要强调 IP 流量和应用程序 层流量。RMON v2 允许网络管理应用程序监控所有网络层的信息包,这与 RMON v1 不同,后者只允许监控 MAC 及其以下层的信息包。 基于 NetFlow 的网络数据采集技术 1617, NetFlow 本身是一套网络流量统计协 议,其数据采集方式是根据网络数据包传输时,连续相邻的数据包通常是具有相同 目的地 IP 地址的特性,配合 cache 快取机制,当网络管理者开启路由器或交换机 接口的 NetFlow 功能时,设备会在接收数据包时分析其数据包的标头部分来取得流 量资料,并将所接到的数据包流量信息汇总成一笔一笔的 Flow,在 NetFlow 协议中 Flow 是被定义为两端点间单一方向连续的数据流, 这意味着每一个网络的连接都会 被分别记录成两笔 Flow 数据,其中一笔记录从客户端连到服务器端的信息,另外 一笔记录从服务器端连回到客户端的信息。 Flow 的版本差异通常直观的表现在其输 出报文格式上。目前业内常见的主流 Flow 格式有以下几种(表 2-1) 18: 表 2-1 常见的主流 Flow 格式 Flow 格式 代表厂商 主要版本 备注 Flow 格式 代表厂商 主要版本 备注 NetFlow Cisco V1、 V5、 V7、 V8、V9 应用最广 Cflowd Juniper V5、V8 厂商跟进力度不高 sFlow Foundry、 HP、 Alcatel、 NEC、Extreme 等 V4、V5 实时性较强,具备突出的 第二-七层信息描述能力 NetStream 华为 V5、V8、V9与 NetFlow 较为类似 IPFIX IETF 标准规范 RFC 3917 以 NetFlow V9 为蓝本 2.2.2 基于“包捕获”的网络数据采集技术 在以太网中,信息是以明文的形式在网络上传输的,当网络适配器设置为监听 模式(混杂模式)时,由于采用以太网广播信道争用的通信方式,因此,只要捕获 程序与正常通信的网络能够并联连接,就可以捕获任何一个在同一冲突域上传输的 数据包。IEEE 802.3 标准的以太网采用的是带冲突检测的载波侦听多路访问 (CSMA/CD)的通信方式,这是一种广播信道争用的通信方式,使得各个站点可以获 9 得其它站点发送的包。运用这一原理,捕获程序能够拦截到所需要的包。这就是包 捕获的物理基础。 “包捕获”数据采集技术的捕获机制主要有三种,分别为数据链路提供者接口 (DLPI) 、Linux 的 SOCK_PACKET 类型套接口、伯克利数据包过滤器(BPF)。目前多 数捕获器都是基于 BPF 开发的。这主要是因为侦听程序以用户级别进程工作,数据 包的复制必须跨越内核、用户保护界限,这就需要使用名为数据包过滤器(Packet Filter)的内核代理程序。BPF 过滤使用了新的基于寄存器的预过滤机制,它的缓存 机制对整体效率提高有很大作用。BPF 主要有两部分组成:网络转发(Network tap) 部分和数据包过滤(Packet filter)部分。网络转发部分是从链路层中捕获数据包 并把他们转发给数据包过滤部分,数据包过滤部分是从接收到的数据包中接收过滤 规则决定的网络数据包,其它数据包就被抛弃。在实际应用中,实现网络数据包捕 获技术的代表是 Libpcap。Libpcap 是一个专业的跨平台的网络数据包捕获开发包。 使用 Libpcap 可以轻松地实现网络数据包的捕获功能, 它的捕获机制就是 BPF 机制。 Winpcap 1920是 BPF 模型和 Libpcap 函数库在 Windows 平台下网络数据包捕获 和网络状态分析的一种体系结构,其为用户级的数据包捕获提供了一个 Windows 下 的平台。这个体系结构由一个核心的包过滤驱动程序、一个底层的动态链接库 Packet.dll 和一个高层的独立于系统的函数库 Winpacp 组成。Winpcap 的结构如图 2-4 所示。 图 2-4 Winpcap 结构图 10 Winpcap 包括三个部分:第一个模块 NPF(Netgroup Packet Filter),是一个 虚拟设备驱动程序文件。他的功能是过滤数据包,并把这些数据包原封不动地传给 用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块 Packet.dll 为 Win32 平台提供了一个公共的接口,不同版本的 Windows 系统都有自己的内核模 块和用户模块,Packet.dll 用于解决这些不同;调用 Packet.dll 的程序可以运行 在不同版本的 Windows 平台上,而无需重新编译。第三个模块 wpcap.dll 是不依赖 于操作系统的,它提供了更加高层、抽象的函数。 Windows 下捕获数据包的结构如图 2-5 所示,其中 NDIS 是 Microsoft 和 3com 公司联合制定的网络驱动规范,并提供了大量的操作函数。它为上层的协议驱动提 供服务,屏蔽了下层各种网卡的差别。NDIS 向上支持多种网络协议,如 TCP/IP、 NWLink IPX/SPX、NetBEUI 等,向下支持不同厂家生产的多种网卡。NDIS 还支持多 种工作模式,支持多处理器,提供了一个完备的 NDIS 库(Library)。 图 2-5 捕获数据包的结构图 Winpcap 几个主要函数的介绍 21: 1. 网络接口函数: (1) int pcap_findalldevs(pcap_if_t*alldevsp, char*errbuff) 功能:查找机器的所有可用的网络接口,用一个网络接口链表返回。 (2) char *pcap_lookupdev(char*errbuf) 功能:查询本机的网络接口名字。 (3) int pcap_lookupnet(register const char *device,register bpf_u_int32 *netp, register bpf_u_int32 *maskp.register char *errbuf) 11 功能:获取网络地址和网络掩码。 (4) int pcap_setmode(pcap_t*p,int mode) 功能:设置网络接口的工作模式,mode 为 MODE_CAPT 时,为捕获模式,网络接 口就只捕获网络数据包;mode 为 MODE_STAT 时,网络接口可以进行网络信息统计。 2. 规则函数 (1)int pcap_setfilter(pcap_t *p, struct bpf_program *fp) 功能:设置 BPF 过滤规则,由参数 fp 确定。 (2)int pcap_compile(pcap_t *p, struct bpf_program *program *program,char *buf,int optimize,bpf_u_int32 mask) 功能:编译 BPF 过滤规则。 3. 数据包捕获函数 (1)int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user) 功能:循环捕获网络数据包,直至遇到错误或满足退出条件。 (2)int pcap_dispatch(pcap_t *p, int cnt, pcap_handler, u_char *user) 功能:捕获网络数据包。 (3)void pcap_breakloop(pcap_t*p) 功能:退出循环捕获数据包状态。 (4)void pcapclosep(pcap_t*p) 功能:关闭 winpcap 操作,并销毁响应资源。 2.2.3 基于sFlow的网络数据采集技术 sFlow 数据采集的工作原理 虽然通过基于“包捕获”的数据包监听工具可以获得详细的网络信息,但监听 工具通常专注于单一网络数据包的内容,网络管理者很难通过这些信息掌握整体网 络的状态。而且,分析数据包非常耗费时间,数据包监听所储存并需要分析的数据 12 量也非常庞大,对于资源和人员的消耗是巨大的,这种方式显然不适合校园网这样 的环境。 sFlow 技术 422-26,2001 年被 IETF 批准成为一项网络标准,是一种基于标准的 最新网络导出协议,它利用对整个网络上传送的局域网和广域网数据包流的随机采 样,让用户详细、实时地掌握网络传输流的性能、趋势和问题。通常,网络设备厂 商将 sFlow 技术嵌入到网络路由器和交换机的 ASIC 芯片中。与使用镜像端口、探 针和旁路监测技术的传统网络监测解决方案相比,sFlow 可以更全面地展示网络性 能,监测发生在每台具有 sFlow 功能的交换机的每一个端口上,而不是只出现连接 探测器的端口或网段上,而且,sFlow 能够明显地降低实施费用,同时可以使实现 面向每一个端口的全内部网络监测解决方案成为可能。sFlow 网络数据采集系统的 基本工作原理如图 2-6 所示。 图 2-6 sFlow 数据采集工作原理图 sFlow被部署在运行于网络中实际的交换机和路由器上的各个网络管理信息库 中(MIB)中。sFlow MIB对流经端口的数据包随机采样,而不是捕获和记录交换机或 路由器端口上的每一个数据包。 这些叫做sFlow数据包的样本被转发给sFlow Agent, sFlow Agent将接收到的样本数据包按照RFC 3176规定的统一格式编码,并以UDP数 据包的形式发送到数据分析器进行分析并存储。由于sFlow可以对来自网络中每一 个端口的数据流进行采样,sFlow数据分析器可以通过比较交换机和NAT设备间的子 网数据,识别网络中作为NAT设备的节点 13 sFlow 相比其它采集技术的优点 由于 sFlow 技术被内嵌到网络路由器或交换机的 ASIC 中,同以往的网络监测 技术如 RMON、RMON、NetFlow 等相比有很大的不同,具有以下优点 2728: sFlow 技术被内嵌到网络路由器或交换机的 ASIC 中,因此它变为一个线速 性能的“永远在线”的技术。 通过 sFlow 对网络进行监测将不需要镜像监控端口,这样就大大节约了网 络资源的消耗,降低了网络监测成本。 只要具备内嵌 sFlow 代理的网络设备覆盖全网,那么网络管理员就可以对 整个网络进行监测。 sFlow 数据包可以包括完整的从第二层到第七层的详细信息, 从而能够更清 晰的、全面的了解你的网络,管理你的网络。 sFlow Agent 仅仅被用于选择、封装和转发数据包,而且所有的分析流量被 发送到采集服务器,数据流样本也是随机或定时地采样,使得对 CPU 和带宽需求都 不高。 除了在网络测量方面具有很多优点之外,sFlow 也具有异常行为的监测能力 29-31,在发现采集数据出现以下情况时,就会怀疑有可能出现的安全问题。 判断出拥有可疑流量的超级带宽占用者; 一个主机试图使用大量服务端口连接大范围的地址; 到某个主机的流量,在很短的时间内异常增大; 某个主机发出异常数量的登录流量; 通过对外部主机的监视,发现异常传输流量或使用的服务类型端口异常。 sFlow 的采样误差问题 基于sFlow的数据采集技术,其弱点便是一般无法采集到所有的网络数据包, 因为它是基于采样机制来进行的,其网络流量统计的准确性与其数据包采样率成正 比关系,即采样率越高,准确性越高;采样率越低,准确率则越低。这就要求我们 根据校园网的带宽与实际流量来找到一个采样率与流量准确度的平衡点,即要保证 网络流量能够及时迅速的分析处理,又要保证其能正确代表网络的整体实际流量情 况。 我们来分析下在数据流量采样机制下,采样率与准确度的关系 32: 假设一共有N个数据包在网络上传输,我们从中采集到n个数据包,即设置采集 14 率为n/N, 其中每个数据包被采到的概率是相同的。 如果在n个被采集到得数据包中, 有c个特定网络应用类型的数据包,则特定数据包的平均采样概率为c/n,在所有N 个数据包中含有 c N = n cN * 个特定的数据包。通常情况下,我们假定误差在5之内 的采样结果才具有代表性,这样 c N的估计方差为: 2 = 2 N ()1* 1 nn n c c 则 c N的置信区间是: c N-1.96, c N+1.96,而其采样误差率的百分比 %error; /*扩展信息*/ 4.1.3 数据接收、解析并分类整理 位于主干网络上的sFlow数据接收器,接收到由sFlow Agent传送过来的用UDP 格式封装好的sFlow数据包后,对其进行UDP协议解析,然后提取出采样数据包的相 关信息,并得到原始网络数据包,流程如图4-4所示。 27 图4-4 UDP格式sFlow数据包解析流程图 在得到采样原始数据包后,接收器再对原始数据包的头部进行协议解析,分析 出诸如源/目的IP、源/目的端口等信息,最后接收器对各种数据包参数信息分类整 理,并把其存入数据库,为进行各种数据分析提供便利。下面列出数据库中sFlow 的采样数据信息表、流量信息表的主要字段结构,如表4-1: 表4-1 sFlow采样数据信息表 字段 描述 类型 字段 描述 类型 agent sFlow Agent的IP地址 string inputIfIndex 交换机采样接口的序号 integer inputInterface 交换机采样包输入接口 integer 是 否 是 否 接收 UDP 数据包 检查是否合法? 解析出数据包,提取出采样个数 n n=0? 处理采样包信息, 并得到原始数据包 n=n-1 28 clientInterface 客户端连接接口 integer serverInterface 服务端连接接口 integer ouputInterface 采样包输出接口 integer macSource 源MAC地址 string macDestination 目的MAC地址 string ieee803SAP IEEE 802 服务访问点 integer ipSource 源IP地址 string ipDestination 目的IP地址 string sourceAddress 网络层协议的源地址(如没 有IP,则记录MAC地址) string destinationAddress 网络层协议的目的地址(如 没有IP,则记录MAC地址) string udpSourcePort UDP协议的源端口,如不是 UDP则置0 integer udpDestinationPort UDP协议的目的端口,如不是 UDP则置0 integer tcpSourcePort TCP协议的源端口,如不是 TCP则置0 integer tcpDestinationPort TCP协议的目的端口,如不是 TCP则置0 integer sourcePort 应用层协议的源端口,或协 议类型 string destinationPort 应用层协议的目的端口,或 协议类型 string vlanSource 源VLAN号 integer vlanDestination 目的VLAN号 integer time 采样时间 date framesTotal 数据包帧度 integer 29 bytesTotal 数据包长度 integer 4.2 基于“包捕获”的数据包采集模块 4.2.1 数据包捕获过程 基于“包捕获”的数据包采集的一般过程如下: 1. 将网卡打开,并设为混杂模式。 2. 回调函数在得到监听命令后,从网络设备驱动程序处收集数据包,把监听 到得数据包传送给过滤程序。 3. 当包过滤程序监听到有数据包到达时,NDIS中间驱动程序首先调用分组驱 动程序,该程序将数据传送给每一个参与进程的分组过滤程序。 4. 然后由包过滤程序决定哪些数据包应该丢弃,哪些数据包应该接受,是否 需要将接收到的数据复制到相应的应用程序。 5. 通过分组过滤器后,将数据为过滤掉的数据包提交给核心缓冲区。然后等 待系统缓冲区满后,再将数据包复制到用户缓冲区,监听程序可以直接从用户缓冲 区中读取捕获到的数据包。 6,关闭网卡。 根据Windows下包捕获工具Winpcap提供的功能,首先要初始化两个结构体,一 个是适配器的结构体lpAdpter,一个是存放接收到的包的结构体lpPacket。使用 Packet.dll动态链接库编写源代码如下: #define MAX_LINK_NAME_LENGTH 64 适配器结构: Typedef struct_IpADAPTER HANDLE hFile; TCHAR SymbolicLinkMAX_LINK_NAME_LENGTH; Int NumWrites; ADAPTER,*LPADAPTER; 说明:hFile是一个指向该网卡HANDLE的指针,通过它可以对网络适配器进行 30 操作。SymbolicLink包含当前打开的网卡的名字。 数据包结构: Typedef struct_recvPACKET HANDLE hEvent; OVERLAPPEND OverLapped; PVOID Buffer; UINT Length; PVOID Next; UINT ulBytesReceived; BOOLEAN bloComplete; /*布尔型变量用来控制接收包的开 始和结束*/ PACKET, *LPPACKET 实现包捕获的主要步骤如下: 1. 建立适配器列表。 #define Max_Num_Adapter 10 /*获得适配器列表*/ char AdapterlistMax_Num_Adapter512 int i=0 char AdapterNames512,*tempa,*templa; ULONG AdapterLength=1024; 2. 获得系统中网络适配器的名字。 PacketGetAdapterNames(AdapterNamea, tempa = AdapterNamea; templa = Adapternamea; while (*tempa! = 0) |(*tempa - 1 != 0) If ( *tempa =0) 31 memcpy(AdapterListi, temla, tempa templa); /*复制内存数 据*/ templa= tempa + 1; i+ Tempa + 3. 从适配器列表中选择一个默认的0号适配器。 LPADAPTER lpAdapter lpAdapter = PacketOpenAdapter(AdapterList0); if (! lpAdapter | (lpAdapter-hFile =INVALID_HANDLE_VALUE) dwErrorCode = GetLastError(); return False; 4. 将所选择的适配器lpAdapter设置为混杂模式。 PacketSetHwFilter(lpAdapter, NDIS_PACKET_TYPE_PROMISCUOUS); 5. 设置BPF内核中数据包过滤的参数。 利用下面这个函数完成对于原始包的初 始过滤,如根据其端口号、IP地址等。 PacketSetBpf(lpAdapter AdapterObject,stuctbpf_program * fp); 6. 缓冲区设置为512KB. PacketSetBuff(lpAdapter,512); 7. 分配一个数据包对象,并连接已分配的缓冲。 PacketInitPacket(lpPack

温馨提示

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

评论

0/150

提交评论