计算机科学学院入侵检测技术期末课程设计题目snort入侵检测系统学号xxx班级xxx姓名xxx指导教师xxx成绩完成时间2012年6月1snort入侵检测系统一、课程设计目的(1)通过实验深入理解入侵检测系统的原理和工作方式。(2)熟悉入侵检测工具snort在Windows操作系统中的安装和配置方法二、课程设计的原理1引言snort是一个免费的基于libpcap的轻量级网络入侵检测系统。它能够跨系统平台操作,自带轻量级的入侵检测工具可以用于监视小型的TCP/IP网络,在进行网络监视时snort能够把网络数据和规则进行模式匹配,从而检测出可能的入侵企图,同时它也可以使用SPADE插件,使用统计学方法对网络数据进行异常检测,这些强大的检测功能为网络管理员对于入侵行为做出适当的反击提供了足够的信息。snort使用一种易于扩展的模块化体系结构,开发人员可以加入自己编写的模块来扩展snort的功能。这些模块包括:HTTP解码插件、TCP数据流重组插件、端口扫描检测插件、FLEXRESP插件以及各种日志输入插件等。同时snort还是一个自由、简洁、快速、易于扩展的入侵检测系统,已经被移植到了各种UNIX平台和Win98,Win2000上。它也是目前安全领域中,最活跃的开放源码工程之一。在Snort.org上几乎每天都提供了最新的规则库以供下载,由于snort本身是自由的源码开放工程所以在使用snort时除了必要的硬件外软件上基本上不需要有任何额外的开销。这相对于少则上千多则上万的商业入侵检测系统来说,无疑是最好的替代产品之一。本文主要论述了snort的背景知识以及它的基于规则的入侵检测机制,同时对于如何使用也作了概括说明。2入侵检测技术简介入侵检测就是一个监视计算机系统或者网络上发生的事件,然后对其进行安全分析的过程。它可以用来发现外部攻击与合法用户滥用特权,根据用户的历史行为,基于用户的当前操作,完成对入侵的检测,记录入侵证据,为数据恢复和事故处理提供依据。入侵检测系统的原理如图A所示:入侵检测监测作出响应攻击?用户的历史操作数据用户当前操作的数据否是图A入侵检测的原理图大多数的入侵检测系统都可以被归入到基于主机、基于网络以及分布式三类。基于主机的入侵检测系统是一种早期的IDS设计模型,它主要设计用来监视2单一的服务器,因为DNS、Email和web服务器是多数网络攻击的目标,这些攻击大约占据全部网络攻击事件的1/3以上,基于主机的入侵检测系统就是为了解决这些问题而设计的,它能够监视针对主机的活动(用户的命令、登录/退出过程,使用数据等等),它的特点就是针对性好而且,效果明显,误报率低。基于网络的入侵检测系统是后于基于主机入侵检测系统而出现的,它主要用于集中用于监控通过网络互连的多个服务器和客户机,能够监视网络数据发现入侵或者攻击的蛛丝马迹。分布式IDS通过分布于各个节点的传感器或者代理对整个网络和主机环境进行监视,中心监视平台收集来自各个节点的信息监视这个网络流动的数据和入侵企图。在入侵检测系统中,系统将用户的当前操作所产生的数据同用户的历史操作数据根据一定的算法进行检测,从而判断用户的当前操作是否是入侵行为,然后系统根据检测结果采取相应的行动。入侵检测的过程是一个机器(检测工具)与人(黑客)对抗的决策分析过程,其技术基础是基于知识的智能推理,需要用到人工智能的相关技术。各种入侵检测系统使用的检测方法可以分为两类:基于特征码的检测方法和异常检测。使用基于特征码检测方法的系统从网络获得数据,然后从中发现以知的攻击特征。例如:在某些URL中包含一些奇怪的Unicode编码字符就是针对IISUnicode缺陷的攻击特征。此外各种模式匹配技术的应用,提高了这种检测方法的精确性。使用异常检测的系统能够把获得的数据与一个基准进行比较,检测这些数据是否异常。例如:如果一个雇员的工作时间是上9点到下午5点,但是在某个晚上他的计算机记录了他曾经在半夜登录了公司的邮件服务器,这就是一个异常事件,需要深入调查。现在,大量的统计学方法用于这个领域。3Snort简介snort是一个基于libpcap的轻量级网络入侵检测系统。根据snort.org,轻量级入侵检测系统是这样定义的:首先它能够方便地安装和配置在网络的任何一个节点上,而且不会对网络运行产生太大的影响,同时轻量级入侵检测系统还应该具有跨系统平台操作,最小的系统要求以及易于部署和配置等特征,并且管理员能够利用它在短时间内通过修改配置进行实时的安全响应。Snort是一个典型的轻量级入侵检测系统,首先可以运行在多种操作系统平台,例如UNIX系列和Win9X,Win2000(需要libpcapforWin32的支持),与很多商业产品相比,它对操作系统的依赖性比较低。它的分发源码文件压缩包大约只有100KB,在一台一般性能的计算机上编译安装时大约只需几分钟的时间,另外配置激活也大约只需要十几分钟的时间,安装以后即便不对它进行维护也能长时间稳定运行。其次用户可以根据自己的需要及时在短时间内调整检测策略。就检测攻击的种类来说,据最新的规则包文件snortrules-stable.tar.gz(Sep402:15:182002)snort共有33类,1867条检测规则,其中包括对缓冲区溢出,端口扫描和CGI攻击等等。3.1Snort规则Snort是基于规则的模式匹配的,这种体系结构非常灵活,用户可以到下载最新的规则,在snort.org上几乎每几天就会有新的规则被更新,同时用户也可以自己书写新的规则,Snort规则文件是一个ASCII文本文件,可以用常用的文本编辑器对其进行编辑。规则文件的内容由以下几部分组成:变量定义:在这里定义的变量可以在创建Snort规则时使用。3Snort规则:在入侵检测时起作用的规则,这些规则应包括了总体的入侵检测策略。预处理器:即插件,用来扩展Snort的功能。如用portscan来检测端口扫描。包含文件IncludeFiles:可以包括其它Snort规则文件。输出模块:Snort管理员通过它来指定记录日志和警告的输出。当Snort调用告警及日志子系统时会执行输出模块。规则具体的书写不再做说明,如果想想进行更进一步了解可以到snort.org的文档中心去下载snort的官方文档《SnortUsersManual》中的WritingSnortRules章节(其链接是)。3.2Snort与tcpdump的比较如果用尽量简单的话来定义tcpdump,就是:Dumpthetrafficonanetwork.,即根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联网上经典的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的工具之一。顾名思义,tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。从表面上看来,Snort与tcpdump是非常相似的,Snort与它的最大的共同之处在于都是基于libpcap的并且支持BPF过滤机制,所以本质上都是调用的捕获数据包的库函数,但是snort的目的不仅仅是在于记录这个数据包而是从安全的角度考虑出发来解析它,并且tcpdump主要是分析第二层或者第三层的报文来进行网络故障诊断,而snort则主要针对于应用层的数据进行分析从而实现检测入侵行为。除此之外,由于tcpdump旨在快速完整地记录流量,所以它制定了特殊的输出格式,速度快,但是不易看懂,而snort就提供了更为友好的输出格式,有利于系统管理员的直接分析。4snort的体系结构数据包解码器检测引擎日志报警图Bsnort的体系结构4.1数据包捕获和解码子系统(Decoder)该子系统的功能为捕获网络得传输数据并按照TCP/IP协议的不同层次将数据包进行解析。Snort利用libpcap库函数进行采集数据,该库函数可以为应用程序提供直接从链路层捕获数据包的接口函数并可以设置数据包的过滤器以来捕获指定的数据。网络数据采集和解析机制是整个NIDS实现的基础,其中关键的是要保证高速和低的丢包率,这不仅仅取决于软件的效率还同硬件的处理能力相关。对于解析机制来说,能够处理数据包的类型的多样性也同样非常重要,目前,snort可以处理以太网,令牌环以及SLIP等多种类型的包。4.2检测引擎(thedetectengine)4检测引擎是snort的核心,准确和快速是衡量其性能的重要指标,前者主要取决于对入侵行为特征码的提取的精确性和规则撰写的简洁实用性,由于网络入侵检测系统是被动防御的——只能被动的检测流经本网络的数据,而不能主动发送数据包去探测,所以只有将入侵行为的特征码归结为协议的不同字段的特征值,通过检测该特征值来决定入侵行为是否发生。后者主要取决于引擎的组织结构,是否能够快速地进行规则匹配。为了能够快速准确地进行检测,snort将检测规则利用链表的形式进行组织,分为两部分:规则头和规则选项。前者是所有规则共有的包括IP地址、端口号等,后者根据不同规则包括相应的字段关键字。下图C是Snort的创始人MartinRoesch所作的检测规则的示意图。规则链表头源端口号目的IP地址源IP地址目的端口号规则链表头源端口号目的IP地址源IP地址目的端口号规则链表头源端口号目的IP地址源IP地址目的端口号规则链表选项ICMP类型码TCP标志位规则内容有效大小....规则链表选项ICMP类型码TCP标志位规则内容有效大小....规则链表选项ICMP类型码TCP标志位规则内容有效大小............................图C检测规则的结构示意图当进行规则的匹配时,在链表的两个方向同时进行,检测引擎只检测那些在一开始在规则解析器中设置好了的规则选项。当检测引擎检测到第一个与被解码的包相匹配的规则时,检测引擎触发相应的动作并返回。4.3日志/报警子系统snort对每个被检测的数据包都定义了如下的三种处理方式:alert(发送报警信息),log(记录该数据包)和pass(忽略该数据包)。这其实是具体定义在检测规则中的。其具体的完成是在日志/报警子系统中完成的,日志子系统允许你将包解码收集到的信息以可读的格式或以tcpdump格式记录下来。报警子系统使其将报警信息发送到syslog、flat文件、Unix套接字或数据库中。三、课程设计任务51、Windows环境下安装和配置snort(1)、安装Snort和Wincap包2.AppServ(1)安装AppServ启动AppServ安装文件后,出现如图所示的设置服务器信息界面:在ServerName中输入服务器IP地址:localhost:Administrator'sEmailAddress中输入邮箱地址:1051466395@qq.com监听端口设为80806点击next,进入下一界面:在出现的界面中输入密码(123):CharacterSetsandCollations选择GB2312SimplifiedChinese,如下图所示:然后单击Install,进入安装过程,出现下图:7安装完成后将C:\Appserv\php5目录下的php.ini-dist文件改名为php.Ini,并启动Apache和MySql。(控制面板—管理—服务确保Apache和MySql已启动)安装完成后可以查看(MySQL启动如下图)8在浏览器中输入出现:表示安装成功!(2)测试AppServ首先查看控制面板/管理/服务,确保Apache和MySQL已经启动,然后,在浏览器中输入(下