基于Snort的入侵检测系统的研究和实现.doc_第1页
基于Snort的入侵检测系统的研究和实现.doc_第2页
基于Snort的入侵检测系统的研究和实现.doc_第3页
基于Snort的入侵检测系统的研究和实现.doc_第4页
基于Snort的入侵检测系统的研究和实现.doc_第5页
免费预览已结束,剩余38页可下载查看

下载本文档

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

文档简介

本科生毕业论文(设计)题目学生姓名指导老师学院专业班级完成时间目录第一章 绪论11.1 课题研究的背景及意义11.2 Snort与入侵检测的发展和研究现状21.3 本文的结构2第二章 入侵检测与Snort概述42.1入侵检测系统42.2 Snort42.2.1 Snort的特点52.2.2 Snort的体系结构62.2.3 Snort的工作模式92.3 Snort规则集102.3.1 规则的结构112.3.2 规则头部112.3.3 规则选项13第三章 SIDS的详细设计与实现143.1 SIDS实现方案143.2 准备工作163.2.1 环境的准备163.2.2 各软件的准备173.3 SIDS的实现173.3.1 构建Snort探测器183.3.2 用SQL Server 2000存储数据193.3.3 配置Snort输出模块接口203.3.4 为系统添加WEB服务器223.3.5 使用ACID查看数据库的内容24第四章 系统测试与检测结果分析264.1 搜集入侵数据264.2 测试与分析26第五章 总结与展望315.1 总结315.2 未来研究展望31结束语33附录:创建SQL Server数据库信息的sql脚本34参考文献38IV摘要入侵检测系统是网络防御体系中的重要组成部分,能够捕获并记录网络上的所有数据并对其进行分析,从而发现异常行为,它能够帮助网络系统快速发现黑客攻击,并且扩展了系统管理员的安全管理能力,提高了信息安全基础结构的完整性。本文介绍了入侵检测系统(Intrusion Detection System,IDS)的概念,从体系结构、总体流程方面对开源网络入侵检测工具Snort进行深入分析,构建了SIDS。Windows平台下的Snort入侵检测系统包括Winpcap(抓包库)、Snort(入侵探测器)、SQL Server(基于SQL数据库服务器)、Apache、ACID(基于Web入侵事件数据库分析控制台)。Snort对数据包进行规则匹配并检测入侵行为和探测活动,Apache为ACID提供网络服务,ACID查看分析SQL Server数据库数据,生成网络入侵事件报告图表。结果表明,该系统能够有效地发现攻击。关键字:Snort,入侵检测,网络安全,IDSABSTRACTIntrusion Detection system(IDS) is a important element of Defense in Depth, which is able to capture all data in the LAN and analyse them for finding intrusional behaviorIt can help quickly identify network hacker attacks, extend the safety management capability of system administrators, and improve information security infrastructure integrity. This paper presents conception of intrusion detection system. Snort that is a network-based intrusion detection tool is analyzed, from the aspect of system structure and collectivity flow. Finally, snort base intrusion detection system is constructed and validated by our experiment. Intrusion detection system based on Snort and Windows includes Winpcap(A packet filter), Snort(A light weight network intrusion detection system), SQL Server, Apache, ACID(Analysis Console for Intrusion Databases using a web browser). The data packet was matched by Snort through rules and intrusion and detection action was detected by Snort. The network server was supplied by Apache for ACID, and the data of SQL Server database were viewed and analyzed by ACID to create the report diagrams for detection events of network. The result proves that the instructional behavior is detected effectively by using the system.KEY WORDS: snort, intrusion detection, network security, ids基于Snort的入侵检测系统的研究和实现 第一章 绪论4第一章 绪论随着Internet的迅速扩张和电子商务的兴起,人们发现保护资源和数据的安全,让它免受来自恶意入侵者的威胁是件相当困难的事。提到网络安全,很多人首先想到的是防火墙,防火墙作为一种静态的访问控制类安全产品通常使用包过滤的技术来实现网络的隔离。适当配置的防火墙虽然可以将非预期的访问请求屏蔽在外,但不能检查出经过他的合法流量中是否包含着恶意的入侵代码。这就需要一种更安全、更有效的防御技术,入侵检测系统1 (Intrusion Detection System, IDS)应运而生。1.1 课题研究的背景及意义在当今的企业应用环境中,安全是所有网络面临的大问题。黑客和入侵者已成功的入侵了一些大公司的网络及网站。目前已经存在一些保护网络架构及通信安全的方法,例如防火墙、虚拟专用网(VPN)、数据加密等。入侵检测是最近几年出现的相对较新的网络安全技术。利用入侵检测技术,可以从已知的攻击类型中发现是否有人正在试图攻击你的网络或者主机。利用入侵监测系统收集的信息,可以加固自己的系统,及用作其他合法用途。目前市场中也有很多弱点检测工具,包括商品化的和开放源码形式的,可以用来评估网络中存在的不同类型的安全漏洞。入侵检测技术已经发展为许多种。常见的入侵检测技术有:IP碎片重组(IP Defragmentation)、TCP会话跟踪(TCP Session Track)、TCP流汇聚(TCP Stream Reassembly)、协议分析(Protocol Analysis)、特征检测(模式匹配)(Signature Detection)、关联分析(Correlative)、日志归并(Merger)、网络流量异常等等。这些技术已经被应用于许多大型的IDS。在市面上有很多的IDS。比如有ISS公司的Real Secure入侵检测系统、NFR公司的NID人侵检测系统、NAI公司的Cyber Cop Monitor入侵检测系统、Cisco公司的Cisco Secure IDS入侵检测系统等。但是这些商业软件许多都是昂贵而庞大的系统,而SIDS(Snort based Intrusion Detection System, SIDS)具有便于配置、功能强大、使用灵活等诸多优点这使得SIDS使用得非常广泛2。研究SIDS是十分必要的。在网络安全体系结构中,入侵检测系统是唯一一个通过数据和行为模式判断其是否有效的系统3。在安全领域,防火墙就想一道门,可以组织一类人的进入,但无法阻止同一类人群中的破坏分子,也不能阻止内部的破坏分子;访问控制系统可以不让低级权限的人做越权工作,但无法保证高级权限的人不做破坏工作,也无法阻止低级权限的人通过非法行为获得高级权限;漏洞扫描系统可以发现系统和网络存在的漏洞,但无法对系统进行实时扫描。如前所述,入侵检测系统有很多,但很多都是特别重量级的配置和构建都十分困难,无论从精力还是从费用来说,都是让人望而却步的4。Snort的出现,彻底改变了这一状况。它跨平台、自由、简洁、快速和易于扩充的特点使入侵检测系统的搭建极其简单。1.2 Snort与入侵检测的发展和研究现状20世纪70年代,美国安全局为保证军用系统的安全,首先提出了入侵检测这个概念,后来经过多年的发展,入侵检测系统已经发展为以下3个分支:基于主机的入侵检测系统、基于网络的入侵检测系统以及这两种系统的结合。1998年,Martin Roesch撰写了一个名为Snort的软件,将其定位成简单轻巧的入侵检测软件。经过了若干年的发展,Snort从当初的1600行的代码发展成了75000行代码的软件。当今,SIDS已经在世界各个需要保证安全的机构被采用。该系统可以和其他更多的工具协调工作,使其具有更为强大的入侵检测功能5。Snort也面临一些问题,如检测的速度还不够快,规则集的组织还不够缜密。所以现在全球开源界的精英们正在努力地改进Snort,改进内容包括:提高检测速度、异常检测、人工智能的应用、标准化、蜜罐技术6等。因为Snort是基于规则的IDS,所以规则的编写,规则库的组织等也是如今研究的重要问题。在规则比较少的情况下,规则库的组织方式可能不会影响IDS的速度,但是在规则越来越多的情况下,就不得不注意规则库的组织结构。1.3 本文的结构第一章,绪论。概述IDS和SIDS发展的历史、现状,分析其未来发展的趋势,最后介绍本文的主要内容及章节的安排。第二章,入侵检测与Snort概述。概括介绍入侵检测和Snort的概念及相关技术。主要介绍了有关Snort的特点、体系结构、工作模式和规则集。本章从概念层面对SIDS进行了分析。第三章,SIDS的详细设计和实现。详细设计和实现了Windows环境下的SIDS。SIDS的功能是非常强大的,但是要实现尽量多的功能,就必须设计一个合理、方便的系统。本章选择的方案是一个带有数据库和WEB界面的单探测器,能实现SIDS的基本功能。第四章,系统测试与入侵结果分析。主要对系统进行测试和检测结果分析。在实现阶段已经对各个系统单元进行了单元测试,这仅能保证系统式可以成功运行。在第四章中,对整合后的系统进行测试,可以作为对系统检测入侵的分析和测试,保证了成功运行的系统对入侵的检测是正确的。第五章,总结与展望。总结了毕业设计期间做的工作,并对以后的研究和发展进行分析。38基于Snort的入侵检测系统的研究和实现 第二章 入侵检测和Snort概述第二章 入侵检测与Snort概述入侵检测(Intrusion Detection)是对入侵行为的检测7。它通过收集和分析网络行为、安全日志、审计数据、其它网络上可以获得的信息以及计算机系统中若干关键点的信息,检查网络或系统中是否存在违反安全策略的行为和被攻击的迹象。入侵检测作为一种积极主动地安全防护技术,提供了对内部攻击、外部攻击和误操作的实时保护,在网络系统受到危害之前拦截和响应入侵。因此被认为是防火墙之后的第二道安全闸门,在不影响网络性能的情况下能对网络进行监测。入侵检测通过执行以下任务来实现:监视、分析用户及系统活动;系统构造和弱点的审计;识别反映已知进攻的活动模式并向相关人士报警;异常行为模式的统计分析;评估重要系统和数据文件的完整性;操作系统的审计跟踪管理,并识别用户违反安全策略的行为。所有的入侵检测产品中,Snort的应用和发展最为迅速。2.1入侵检测系统入侵检测是防火墙的合理补充,帮助系统对付网络攻击,扩展了系统管理员的安全管理能力(包括安全审计、监视、进攻识别和响应),提高了信息安全基础结构的完整性。它从计算机网络系统中的若干关键点收集信息,并分析这些信息,确定网络中是否有违反安全策略的行为和遭到袭击的迹象2。入侵检测系统的一个重要概念是用什么检测方法去分析。根据检测方法,入侵检测可以分为两种:误用检测和异常检测。根据数据来源的不同,入侵检测系统常被分为基于主机的入侵检测系统(HIDS)和基于网络的入侵检测系统(NIDS)。HIDS的数据源来自主机,如日志文件、审计记录等;NIDS的数据源是网络流量。HIDS的检测范围小,只限于一台主机内。而NIDS的检测范围是整个网段。HIDS有检测效率和检测准确性较高的优点,但也有移植性差和实时性较差的不足。NIDS具有比HIDS有更好的可靠性和实时特性,同时可以降低检测系统本身遭受攻击的可能性,NIDS也有其局限性:无法检测物理地侵入被监视主机系统的活动,不能检测只能通过主机状态的异常变化才能反映出来的攻击,不能检查加密的数据包等。一个真正有效的入侵检测系统应该是基于主机和基于网络的混合。2.2 SnortSnort是一个用C语言编写的开放源代码软件,符合GPL(GNU General Public License)的要求,当前的最新版本是2.8。器作者是开源软件界的著名人士Martin Rosh。Snort官方网站称Snort是一个跨平台、轻量级的网络入侵软件。Snort是一个基于Libpcap(Windows下是WinPCAP)的轻量级网络入侵检测系统。它运行在一个一个“监听器(Sensor)”主机上,监听网络数据。Snort对主机的要求不高,但是至少要有一个网卡。Snort能够把网路数据和规则集进行模式匹配,从而检测可能的入侵企图5。Snort使用一种易于扩充的模块化体系结构,感兴趣的开发人员可以加入自己编写的模块来扩展Snort的功能。这些模块包括:包解码器、预处理器、探测引擎、日志和告警系统、输出模块等。Snort还是一个自由、简洁、快速、易于扩展的入侵检测系统,已经被移植到了各种UNIX/Linux平台和Windows平台上。同事,它也是目前安全领域中,最活跃的开放源码工程之一。Snort还是昂贵的商业入侵系统最好的替代产品2。Snort的典型运行环境如图2.1所示。图2.1 Snort的典型运行环境2.2.1 Snort的特点Snort是一个强大的轻量级的网络入侵检测系统,它具有实时数据流量分析和日志IP网络数据包的能力,能够进行协议分析,对内容进行搜索/匹配;它能够检测各种不同的攻击方式,对攻击进行实时报警;此外,Snort具有很好的扩展性和可移植性。还有,这个软件遵循通用公共许可证GPL,所以只要遵守GPL任何组织和个人都可以自由的使用。综合来说,Snort主要有如下特点:(1)从检测机制上,它不仅具有基于规则的误用检测方法,还有基于异常的检测方法(由第三方提供);(2)从体系结构上,充分考虑了可扩展性要求,大量使用了插件机制;(3)从功能模块上,各个模块功能清晰,相对独立;(4)具有良好的编码风格,方便开发人员对其进行修改9。正式Snort具有其他IDS无法比拟的优势,现在Snort的发展极其迅速,各国的安全爱好者都在关注Snort,在全球开发者的不断努力下,Snort的功能将会更加强大。2.2.2 Snort的体系结构Snort的体系结构可以分3个方面来描述,分别为关键技术、部件、工作流程。关键技术在不同的部件中实现,而各个部件的协同工作,形成一个流畅、安全、快速的Snort工作流程。1. 关键技术随着Snort的发展,越来越多的新功能加入到Snort中,但Snort不可或缺的有可信任防御模型、智能关联、数据包捕获等技术7。防御模型可以理解为Snort建立的一套针对特定攻击的机制,有了防御模型,Snort就像是对可以预见的攻击做好了防御准备。在防御模型中,针对不同的情况采用了信任指数、拒绝服务攻击、应用级攻击等机制,可以避免IDS的误报导致合法数据被阻塞、丢弃和IDS自身原因造成的拒绝服务攻击泛滥等。智能关联是将企业相关系统的信息(如主机特征信息)与网络IDS检测结构相融合,从而减少误警。如系统的脆弱性信息需要包括特定的操作系统(OS)以及主机上运行的服务。当IDS使用智能关联时,它可以参考目标主机上存在的、与脆弱性相关的所有告警信息。如果目标主机不存在某个攻击可以利用的漏洞,IDS将抑制告警的产生。智能关联包括主动关联和被动关联。主动关联是通过扫描确定主机漏洞;被动关联是借助操作系统的指纹识别技术,即通过分析IP、TCP报头信息识别主机上的操作系统。数据包捕获技术包含在解码器这一子系统。该子系统的功能是捕获网络的传输数据并按照TCP/IP协议的不同层次将数据包解析。Snort利用Libpcap(该版本是For Unix/Linux,Windows版本为WinPCAP)库函数采集数据,该库函数可以为应用程序提供直接从链路层捕获数据包的接口函数,并可以设置数据包的过滤器来捕获指定的数据。网络数据采集和解析机制是整个NIDS实现的基础,这不仅仅取决于软件的效率,还同硬件的处理能力相关。对于解析机制来说,能够处理数据包类型的多样性同样也非常重要。目前Snort可以处理以太网、令牌环以及SLIP(串行线路接口协议)等多种链路类型的包。Snort中的这些技术,由Snort的各个模块来实现。2. 部件Snort在逻辑上可以分成多个部件,这些部件共同工作,来检测特定的攻击,并产生符合特定要求的输出格式。一个SIDS包含下面的主要部件:包解码器、预处理器、探测引擎、日志和告警系统、输出模块9。包解码器从不同的网络接口中获取包并准备预处理或者送到探测引擎。网络接口可能是以太网、SLIP、PPP等等。预处理器是Snort在探测引擎做出一些操作来发现数据包是否用来入侵之前排列或者修改数据包的组件或者插件。一些预处理器也可以通过发现数据包头部异常来执行一些探测工作,并产生告警。预处理器的工作对于任何IDS的探测引擎依据规则分析数据都是非常重要的。黑客有很多愚弄IDS的技术。如果IDS严格匹配某一字符串,就可能不会探测到这种类型的攻击。预处理器可以将字符重新排列,以使IDS能够探测得到。预处理器负责包分片的组装。当一个大的数据流传向主机的时候,通常数据包会被分割。例如,以太网中默认的最大数据包大小是1500字节,这个数值由网络接口的MTU(Maximums Transfer Unit)值来确定。这就意味着如果你发送的数据如果大于1500字节,它将会被分割成多个数据包,以使每个数据包的大小都小于或等于1500字节。接收方系统能够将这些小的分片重新组装,还原成原始的数据包。在IDS上,在可以对数据包进行特征分析之前,也需要重新组装数据包。例如,可能入侵的包一半在一个数据包分片上,而另外一半在别的分片上面。为了使探测引擎能够准确的分析特征,就需要组装所有的分片。黑客也用数据分片来对抗入侵检测系统。Snort的预处理器能够组装数据分片,解码HTTP URI,重新组装TCP流等等。这些功能是IDS中非常重要的部分。探测引擎是Snort中最重要的部分,它的作用是探测数据包中是否包含着入侵行为。探测引擎通过Snort规则来达到目的,这一点将在下一小节中讲述。规则被读入到内部的数据结构或者链表中,并与所有的数据包比对。如果一个数据包与某一规则匹配,就会有相应的动作(记录日志或告警等)产生,否则数据包就会被丢弃。探测引擎是Snort中时间相关的组件,根据机器的处理能力和所定义的规则的多少,探测引擎会消耗不同的时间来对不同的数据包做出响应。在Snort工作在NIDS模式的时候,如果网络中数据流量过大,有时可能会因为来不及响应而丢弃一些包。探测引擎的负载取决于以下因素:规则的数量、运行Snort的机器的处理能力、运行Snort的机器的内部总线速度、网络的负载。当在设计NIDS的时候,应该考虑所有的相关因素。依据在包中所找到的东西,一个包可以用来记录行为或者产生告警。日志可以存为简单的文本文件、tcpdump格式文件或者其他的形式。可以在命令行中用-l选项来修改日志和告警存放的位置。输出模块或插件可以根据指定的保存日志和告警系统产生的输出信息的方式来执行不同的动作。基本上这些模块用来控制日志和告警系统产生的输出信息的格式。表2.1是Snort各种部件的汇总。Snort的这些模块能够很好的协同工作,达到一个IDS要求的一切功能。而在Snort整个体系结构中,探测器是很重要的部分。探测器是通过规则集或者叫做特征库匹配来确认一个数据包是不是入侵的数据包,因此Snort是一个基于规则的IDS。Snort的规则存储在文本文件中,并可以用文本编辑器修改。规则以类别分组,不同类别的规则存储在不同的文件中。最后,这些文件被一个叫做snort.conf的主配置文件10引用。Snort在启动时读取这些规则,并建立内部数据结构或链表以用这些规则来捕获数据。Snort已经预先定义了许多入侵检测规则,并且可以自由添加自定义的规则。也可以移除一些内建规则以防止错误告警。表2.1 Snort的部件名称描述包解码器为处理过程准备包预处理器或输入插件分析协议头部,规格化头部,探测头部异常,包分片组装,TCP流组装探测引擎将包与规则比对日志和告警系统产生告警和日志输出模块将告警和日志输出到最终目标3. 工作流程开始初始化生成规则链抓包处理包规则匹配输出各函数各插件规则库WinPCAP预处理器图2.2 Snort的工作流程探测器输出模块日志与告警系统Snort各个模块的协同工作,决定了它的工作流程11。Snort的工作流程如图2.2。Snort首先要对系统进行初始化,通过读取规则文件(有关规则文件,下文会更详细的介绍),从规则文件中读取每一条规则并对其进行解析用对应的语法表示出来然后在内存中建立规则链。WinPCAP将抓取的数据包交给预处理器,预处理器通过前述方法对其进行处理后,交给探测器,进行规则匹配超过,此时所有的规则集都已经在内存中,处理速度方面可以达到理想的要求。如果匹配结果是肯定的,那么告警系统将会启动,并通过输出模块将结果输出到指定的地方。2.2.3 Snort的工作模式Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统12。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,而且是可配置的。可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。1嗅探器所谓的嗅探器模式就是Snort从网络上读出数据包然后显示在控制台上,如图2.3。被检测的网络 Snort嗅探器读取数据包显示控制台输出图2.3 Snort嗅探器模式以下命令可以启动该模式:snort v在打印数据的同时,嗅探器模式能够捕获的数据进行统计,一般包括TCP、UDP、IP的数据流信息。在结束嗅探器模式的时候,Snort在屏幕上打印出统计结果。2数据包记录器如果要把所有的包记录到硬盘上,那么其图示的表示只需将图2.1中的显示器换为硬盘即可。只要指定一个日志目录,snort就会自动记录数据包:snort -dev -l /log该命令使Snort将捕获的数据存入到日志文件“log”中。该命令相当于:snort d e v /log3网络入侵检测模式目标网络 Snort嗅探器读取数据包包是否与规则匹配记录日志产生警告匹配不匹配丢弃包特征库图2.4 Snort网络入侵检测模式如图2.4,在入侵检测模式下,Snort并不记录所有捕获的包,而是将包与规则比对,仅当包与某个规则匹配的时候,才会记录日志或产生告警。如果包并不于任何一个规则匹配,那么它将被悄悄的丢弃,并不做任何纪录。Snort最重要的用途还是作为网络入侵检测系统,使用下面命令行可以启动这种模式:snort -dev -l ./log -h /24 -c snort.confsnort.conf是配置文件。snort会对每个包和规则集进行匹配,发现这样的包就采取相应的行动。2.3 Snort规则集如同病毒,大多数入侵行为都具有某种特征,Snort的规则13就是用这些特征的有关信息构建的。Snort的规则集5是这样一些组织,它们的内容是一个一个的规则,这些规则分别应用于不同的入侵攻击类型。Snort的检测系统是基于规则的,而规则是基于入侵特征的。Snort规则可以用来检测数据包的不同部分。Snort 1.x可以分析第3层和第4层的信息,但是不能分析应用层协议。Snort v 2.x增加了对应用层头部分析的支持。所有的数据包根据类型的不同按顺序与规则比对。规则可以用来产生告警信息、记录日志,或使包通过(pass):对Snort来说,也就是悄悄丢弃(drop),通过在这里的意义与防火墙或路由器上的意义是不同的,在防火墙和路由其中,通过和丢弃是两个相反的概念。Snort规则用简明易懂的语法书写,大多数规则写在一个单行中。当然也可以行末用反斜线将一条规则划分为多个行。规则文件通常放在配置文件snort.conf文件中,也可以用其他规则文件,然后用主配置文件引用它们。2.3.1 规则的结构所有的Snort规则都可以分为两个逻辑组成部分:规则头部和规则选项。如图2.5所示。规则头部规则选项图2.5 Snort 规则的基本结构。规则的头部包含规则所做的动作的信息,也包含与包所比对的一些条件。选项部分通常包含一个告警消息以及包的哪个部分被用来产生这个消息。一条规则可以用来探测一个或多个类型的入侵活动,一个好的规则可以来探测多种入侵特征。Snort规则头部的主要结构如图2.6所示:动作协议地址端口方向地址端口图2.6 Snort规则头部结构2.3.2 规则头部规则的头部包括括号前面的一些部分,现在从动作开始详细的看一下规则头部的每个部分。1规则动作动作是Snort规则中的第一个部分,它表示规则的条件符合的时候,将会有什么样的动作产生。Snort有5个预定义的动作,也可以定义自己的动作。预定义动作包括Pass(通过)、Log(日志记录)、Alert(告警)、Activate(激活进一步检验)、Dynamic(动态动作,由Activate激活)。除了预定义动作外,也可以定义自己的动作,以用于不同的目的,例如向Syslog发送消息,Syslog相当于Windows中的事件查看器。也可以向如HP OpenView或Open NMS()等网管系统发送SNMP trap包。2协议协议是Snort规则中的第二部分,这一部分将显示那种类型的包将与该规则比对。到目前为止,Snort可以支持IP、ICMP、TCP、UDP 4中协议如果协议是IP,Snort检测包中的数据链路层头部来确定包的类型,如果协议类型是其他任何一种,Snort检测IP头部来确定协议类型。3地址在Snort规则中,有两个地址部分,用来检测包的来源和目的地。地址可以是一个主机地址或者网络地址。你可以用关键字any来指定所有的地址。地址后面用斜线来附加一个数字,表示掩码的位数。比如/24代表一个C类网络,其子网掩码是。前面提到,Snort规则中有两个地址段,其中一个是源地址,另外一个是目的地址。方向段指明那个是源地址,哪个是目的地址。参考方向段部分的叙述来了解更多信息。下面是一个在Snort规则中地址部分的例子:/32定义一个地址为的主机。/24定义从到55的C类网络地址,子网掩码是24位,相当于。/24定义从到55的B类网络地址,子网掩码是16位,相当于。/8定义从到55的A类网络地址,子网掩码是8位,相当于。6/28定义从6到1的网络地址,子网掩码是28位,相当于40。在这16个地址中有14个可以用作主机地址,因为还有一个网络地址和一个广播地址,在任何网络中的第一个地址总是网络地址,最后一个是广播地址。在这个例子中6是网络地址,1是广播地址。例如,可以用下面的规则,使到web服务器0/32的80端口的TTL为100的数据包触发告警:alert tcp any any - 0/32 80 (msg: TTL=100; ttl: 100;)4端口号端口号用来在进出特定的某个或一系列端口的包上运用规则,例如,可以用源端口23来对来自Telnet服务器的包应用规则。可以用关键字any来对包应用规则,而不管它的端口号。段口号仅仅对TCP和UDP协议有意义,如果协议是IP或者ICMP,端口号就不起作用。下面的规则用来检测来自C类网络/24中的Telnet服务器,并包含“confidential”(机密)的包:alert tcp /24 23 - any any (content: confidential; msg: Detected confidential;)5方向段在Snort规则中,方向段确定源和目的。下面是方向段的相关规定:-表示左边的地址和端口是源而右边的是目的。-表示右边的地址和端口是源而左边的是目的。表示规则将被应用在两个方向上,在你想同时监视服务器和客户端的时候,可以用到这个标示。2.3.3 规则选项Snort规则的选项在头部的后面,在一对圆括号里面,其中可能包含一个选项,也可能包含用分号分隔的多个选项,这些选项的关系是逻辑与的关系,只有当选项中的条件都满足的时候,规则动作才会被执行。所有的选项都是由关键字来定义的,一些选项中还会包含变量值。一个选项包含两个主要部分:一个关键字和变量值。关键字和变量值由冒号分隔,关键字包括ack、classtype、msg等。具体内容可以参考参考文献13。基于Snort的入侵检测系统的研究和实现 第三章 SIDS的详细设计和实现第三章 SIDS的详细设计与实现Snort的功能是非常强大的,可以和很多辅助软件协同工作,从而使功能更加强大。但是这也为Snort的构建增加了一定的复杂性。本章从几个常用搭建法案中选取了一个比较能够体现Snort功能的方案进行详细实现。3.1 SIDS实现方案SIDS的实现方式取决于运行环境,Snort可以仅仅安装为守护进程或者一个包括很多其他工具的完整系统。如果仅仅安装Snort,可以得到入侵数据的文本文件或二进制文件,然后可以用文本编辑器或其它类似于Barnyard的工具察看。在简单安装的情况下,也可以让告警信息以SNMP trap的形式发送到类似于HP OpenView或者OpenNMS之类的网管系统上。告警信息也可以以SMB弹出窗口的形式发送到Windows机器上。如果与其它工具一起安装,可以做一些更加复杂的操作,比如将Snort数据发送到数据库并通过Web界面来分析。分析工具能够对捕获的数据有更加直观的认识,而不用对晦涩的日志文件耗费大量时间14。通常情况下,SIDS有如下几种安装方式:(1)测试安装,简单安装只包括一个Snort探测器。(2)安装单探测器的应用IDS。(3)单探测器与网管系统的整合。(4)带有数据库和web界面的单探测器。(5)用集中数据库管理多个Snort探测器15。为实现SIDS尽可能多的功能,去除硬件的选择限制,本文选用第4种实现方案。系统拓扑图如图3.1示。在该系统中,防御的对象是一个局域网中的所有主机。在该局域网中有4太计算机,分别为计算机A、计算机C、计算机D、计算机F;计算机B是外网的一台主机,这台主机能够通过网络连接和计算机A通信;计算机E是Internet上的一台主机,是可能对局域网中的任何一台计算机进行攻击的攻击源;计算机A中安装有ACID、Snort、SQL Server等软件,是一台Windows Server 2003中心数据服务器。此处为每个部分(计算机、网络范围、管理员)进行的命名,将在下文中沿用。在具体实现章节,也是完全针对此图进行分析和设计。图3.1 带有数据库和web界面的单探测器部署方式此系统可实现如下功能:检测对一个局域网中的所有主机进行的攻击;将检测结果存储在SQL Server数据库中,可供管理员随时查看;管理员在查看检测记过的时候可以选择文本方式和图标方式,而这些结果,都是经过统计分类的,能使管理员更快、更准的发现入侵;Snort可以运行在嗅探器、数据包记录器、网络入侵检测系统3种模式中的任一种,使检测更加灵活。在该系统中,用到了很多辅助软件,这些软件可以增强整个系统的功能,使检测更加快速和有效,所选择的工具及其作用如下:(1)SQL Server用来纪录告警日志。(2)Apache用作web服务器。(3)PHP用作web服务器和SQL Server数据库之间的接口。(4)ACID是用Web界面来分析Snort数据的PHP软件包。(5)JPGRAPH用来在ACID的web界面将数据表现为图表形式。为了使PHPLOT工作,GD库必须要正确配置。(6)ADODB被ACID用来连接SQL Server数据库16。如图3.2,是该系统工作流程。简要的说,首先Snort通过WinPCAP将抓取的数据包送达SQL Server数据库,Apahce负责将这些数据通过WEB方式传送给管理员;入侵检测数据库分析控制台ACID可以通过Apahce访问SQL Server数据库,并将其中的数据通过图形工具JPGRAPH转换为用户容易理解的图形界面,PHP和ADODB则对该过程提过了引擎支持17。目标网络WinPCAPSnortSql ServerADODBApachePHPJPGRAPHACID网络管理员图3.2 系统工作流程3.2 准备工作要实现一个完整的SIDS,首先要确定被检测对象,分析需要实现的功能,并根据这些功能确定需要增加的辅助软件。3.2.1 环境的准备Snort是一个跨平台的开源软件,所以可以选择在Linux、Windows等平台上进行安装。本文选择的方案中,根据要为整个系统添加的其他辅助软件,选择在Windows环境下实现。如图3.1,选择的中心数据服务器(计算机A)是一台装有Windows Server 2003的X86计算机,需要说明的是该计算机需配有一块网卡,该网卡连接到被监控对象局域网中。计算机A除了装有数据服务器(SQL Server 2000)作为数据服务器外,将会安装Snort、ACID、Apache等其他辅助软件;管理员用计算机B查看入侵检测到的已经经过统计的数据;计算机C和计算机D是局域网中的两台测试计算机,计算机E是Internet上某一台可能会对该局域网进行攻击的测试计算机,Snort可以检测来自内网对内网的攻击(比如计算机C对计算机D的攻击),也可以检测外网对内网的攻击(比如计算机E对计算机D的攻击);计算机B、C、D、E可以是装有任何操作系统的计算机。3.2.2 各软件的准备为本系统添加的辅助软件,大部分都是开源免费的,可以从表3.1列出的下载网站进行下载,获得所需软件后,因其开放源代码,如果需要,可以对其进行修改,使它和其他辅助软件能够协同工作。SQL Server不是一款免费的软件,但是可以从官方网站下载速成版本(Express Edition),并不影响该系统的实现。表3.1 各辅助软件的信息软件名称官方网站作用Apache/WEB服务器PHP/PHP脚本支持SQL Server/数据库支持WinPCAPhttp:/winpcap.polito.it/网络抓包工具Snort2.3Windows下的Snort安装包ACID/kb/acid基于PHP的数据分析控制台ADODB为PHP提供数据库连接函数JPGRAPHhttp:/www.aditus.nu/jpgraphPHP所用图形库这些软件都已经有了更新,不同版本之间有很大区别,所以需要选择合适的版本进行安装,并不是越新的版本就越好。下载的时候,要查看软件的相关说明,从中可以得知软件和其他软件的什么版本能够结合使用。经过努力,在查看软件的发行说明后,选择表3.2软件版本进行SIDS的实现。表3.2 选定的软件SQL Serversqlserver2000cnExpressWinPCAPWinPcap-3.0.exeSnortsnort-2_3_0.exePHPphp-5.1.1-Win32.zipJPGRAPHjpgraph-2.3.4.tar.gzApacheapache_2055-win32.msiACIDacid-0.9.6b23.tar.gzADODBadodb465.tgz3.3 SIDS的实现本节详细介绍SIDS的实现过程,遵循“边安装,边测试”的原则,在完成安装系统一部分的时候,对其进行测试,保证已经安装的部分能够正常工作。而且在构建该系统的时候,首先是构建一个简单的Snort探测器,这也是一个小型的、功能不完善的IDS,在连续的章节中,将对此逐步进行完善。3.3.1 构建Snort探测器这部分,将简单构建一个只具有探测器功能小型Snort IDS,首选安装Snort和WinPCAP,两者的安装很简单,采用默认安装,安装后Snort的主目录为“C:snort”。在“2.2.4 Snort的工作模式”中,介绍了Snort是没有图形界面,很多命令都是通过命令行模式进行配置,为使用方便,配置了关于Snort的环境变量:“path:c:snortbin”。Snort和WinPCAP安装成功后,一个小型入侵检测系统就可以工作了,但是只能实现Snort工作模式中的嗅探器和数据包记录器,不过可以据此测试Snort是否安装成功。用嗅探器模式进行测试,在Windows命令行中输入命令“snort -v”,Snort在字符界面打印出图3.3和3.4,在图3.3中,可以看到Snort将数据包的包头信息打印出来,在图3.4中进行了统计可以清晰地看到捕获的数据包数量。从图3.4可以看到,TCP、UDP、ICMP等包的比例,这说明,Snort的探测器已经构建成功。此时的探测器,已经能够实现一个简单IDS的功能,如果要实现SIDS的功能,还需要添加其他的辅助软件和部件。图3.3 用嗅探器模式进行测试的数据包头信息图3.4 用嗅探器模式进行测试的统计结果3.3.2 用SQL Server 2000存储数据SQL Server为Snort的网络入侵检测模式提供数据库支持,安装后,还要保证Snort能够访问到该数据库。默认安装SQL Server 2000数据库,配置SQL Server随机启动。为Snort建立存储数据的数据库“db_snort”,添加Snort访问db_snort的用户acid,密码设为“123456”。指定acid在数据库db_snort中权限为db_owner。以上为Snort访问数据库做了准备,还要为db_snort添加Snort需要用到的表。在官方网站上查看Snort需要的表信息,以其提供的资料,编写sql脚本(详见附录)。将该脚本导入到SQL Server查询分析器中,执行查询选项,将表信息导入到数据库db_snort中,在db_snort的表视图中,可以查看这些已经创建的表,如图3.5,该表中省略了系统表。这些表分别存储了Snort检测到入侵的TCP、UDP、ICMP等数据信息。图3.5 db_snort中的表3.3.3 配置Snort输出模块接口Snort对于输出数据到数据块的代码,定义了6中输出方式18,分别对应不同的数据库,如下所示:output database: log, mysql, user=root password=test dbname=db host=localhostoutput database: alert, postgresql, user=snort dbname=snortoutput database: log, odbc, user=snort dbname=snortoutput database: log

温馨提示

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

评论

0/150

提交评论