Snort研究与应用.doc_第1页
Snort研究与应用.doc_第2页
Snort研究与应用.doc_第3页
Snort研究与应用.doc_第4页
Snort研究与应用.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

2013年11月 13 日摘要计算机和网络技术的快速发展给人类生产和生活带来了革命性的变化,这也使得人类面临着网络安全这种新的威胁。传统的加密和防火墙技术已经不能完全满足信息安全的需求,入侵检测技术作为一种必要的安全手段,在网络安全领域发挥着其独到的作用。当前入侵监测系统主要分为两类:基于主机的入侵监测系统和基于网络的入侵监测系统。其中基于网络的入侵监测系统有明显的优势,它设置在一台主机上就可以监控保护整个网段,降低了成本,提高了效率。本文研究的snort系统是基于网络的入侵监测系统的一种。入侵监测系统主要有三种不同的检测方法:完整性监测、异常检测、特征检测。完整性监测是将系统的文件生成一个校验和,然后定期将文件进行校验,如果发生裂变话就发出警报。异常敬爱南侧是监测一个行为与标准是否相同,如果不同就发出警报。特征检测是对入侵行为的特点进行检测的一种方法,使检测一直攻击的最准确的方法,snort系统使用的是特征检测方法。Snort系统与现存有一些规则集,当一个入侵于一个特征匹配的时候就会产生警报。特征检测的核心技术是模式匹配算法的应用。随着高速网络的迅猛发展,网络流量不断增大,入侵监测系统的实时性要求面临重大考验,高校的模式匹配算法的作用就显得尤为重要。关键词:snort,入侵检测,网络安全目录第一章 绪论 41.1 网络安全现状41.2 本文的研究目的及意义4第二章snort介绍42.1 snort的简介42.2 snort的原理52.3 snort的运行52.4 snort的不足5第三章 snort入侵检测系统53.1 snort入侵检测系统概述53.2 snort入侵检测系统IDS构成与工作流程6 3.2.1 snort入侵检测系统的组成 6 3.2.2 snort入侵检测系统的工作流程 63.3 snort入侵检测系统分类73.3.1入侵检测系统分类 73.3.2基于主机的入侵检测 73.3.3基于网络的入侵检测 93.3.4一种混合的方法103.3.5误用入侵检测103.4 snort入侵检测面临的挑战和发展趋势 11 3.4.1 snort入侵检测面临的挑战 11 3.4.2 snort入侵检测面临的发展趋势 113.5 本章小结 13第四章Snort 规则134.1 规则的结构134.2 规则的选项174.3 第一个不可用规则18第五章 snort的应用 19第一章 绪论1.1网络安全现状计算机和互联网技术正在飞速地发展,网络应用日益普及且更加复杂,网络安全问题也成为互联网和网络应用发展中面临的重要问题。中国国家计算机网络应急技术处理协调中心(CNCERT/CC)公布的“2004年网络安全工作报告”显示,CNCERT/CC在2004年共收到报告的网络安全事件64000多件,同2003年相比,网络安全事件报告数量大大增加。从调查报告公布的数据和状况可以看出,各种网络安全漏洞大量存在和不断地被发现,网络攻击行为日趋复杂,各种方法相互融合,网络安全问题变得错综复杂,使网络安全防御更加困难,然而出于现代计算机和网络自身设计的一些问题,当前还不具有一种能保证计算机和网络绝对安全的技术。1.2 本文的研究目的及意义入侵,是指任何试图危及计算机资源的完整性、机密性或可用性的行为。入侵检测就是通过从计算机网络或者系统中的关键点收集信息,并对这些信息进行分析进而发现网络或系统中时否有违反安全策略的行为和遭到攻击的迹象。而进行入侵检测的软件和硬件合起来便构成了入侵检测系统。入侵检测系统是网络纵深防御体系中的重要组成部分,被看作是防火墙之后的第二道防线,能够收集计算机系统进行监控,识别攻击并进行实时反映。目前国内外的入侵检测系统都是商用软件,价格昂贵,使大多中小企业望而却步。Snort是一款跨平台,开放源代码的免费软件,支持多种操作系统和硬件平台。它不仅能够进行协议分析、内容检索、内容匹配,而且能够用于检测缓冲区溢出、隐蔽端口扫描、CGI攻击、OS指纹识别等大量攻击和探测。Snort使用基于规则的匹配模式来检测这些攻击,并提供了模块化得检测引擎。第二章Snort介绍2.1 snort的简介在1998年,Martin Roesch先生用C语言开发了开放源代码(Open Source)的入侵检测系统Snort.直至今天,Snort已发展成为一个多平台(Multi-Platform),实时(Real-Time)流量分析,网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS.Snort符合通用公共许可(GPLGUN General Pubic License),在网上可以通过免费下载获得Snort,并且只需要几分钟就可以安装并开始使用它。snort基于libpcap。2.2 snort的原理Snort能够对网络上的数据包进行抓包分析,但区别于其它嗅探器的是,它能根据所定义的规则进行响应及处理。Snort 通过对获取的数据包,进行各规则的分析后,根据规则链,可采取Activation(报警并启动另外一个动态规则链)、Dynamic(由其它的规则包调用)、Alert(报警),Pass(忽略),Log(不报警但记录网络流量)五种响应的机制。Snort有数据包嗅探,数据包分析,数据包检测,响应处理等多种功能,每个模块实现不同的功能,各模块都是用插件的方式和Snort相结合,功能扩展方便。例如,预处理插件的功能就是在规则匹配误用检测之前运行,完成TIP碎片重组,http解码,telnet解码等功能,处理插件完成检查协议各字段,关闭连接,攻击响应等功能,输出插件将得理后的各种情况以日志或警告的方式输出。2.3 snort的运行Snort的有三种模式的运行方式:嗅探器模式,包记录器模式,和网络入侵检测系统模式。嗅探器模式仅仅是从捕获网络数据包显示在终端上,包记录器模式则是把捕获的数据包存储到磁盘,入侵检测模式则是最复杂的能对数据包进行分析、按规则进行检测、做出响应。2.4 snort的不足Snort入侵检测系统适应多种平台,源代码开放,使用免费,受众多用户喜爱,但也有不少缺点。Snort之所以说他是轻量型就是说他的功能还不够完善,比如与其它产品产生联动等方面还有待改进;Snort由各功能插件协同工作,安装复杂,各软件插件有时会因版本等问题影响程序运行;Snort对所有流量的数据根据规则进行匹配,有时会产生很多合法程序的误报。第三章Snort入侵检测系统3.1 snort入侵检测系统概述入侵检测系统已经发展成为安全网络体系中的一个关键性组件。本章主要对入侵检测的定义、分类、模型进行简单的介绍,并对入侵检测系统存在的一些问题进行探讨。3.2 snort入侵检测系统IDS构成与工作流程 入侵检测系统是一种主动的安全防护工具,它从计算机系统或网络环境中采集数据,分析数据,发现可疑攻击行为或者异常事件,并采取一定的响应措施拦截攻击行为,降低可能的损失。提供了对内部攻击、外部攻击、和误操作的实时防护,在计算机网络和系统受到危害之前进行报警、拦截和响应。它具有以下主要作用:1、 监视、分析用户及系统活动;2、 系统构造和弱点的审计;3、 识别已知进攻的活动模式,并产生告警;4、 异常行为的统计分析;5、 评估重要系统和数据文件的完整性;6、 操作系统的审计跟踪管理,并识别用户违反安全策略的行为。3.2.1 snort入侵检测系统的组成 DARPA(美国国防部高级计划局)提出的CIDF(公共入侵检测框架)是一个入侵检测系统的通用模型。该入侵监测系统由实践产生器、时间分析器、事件数据库、响应单元和目录服务器组成。(1) 事件发生器:负责收集原始数据,它对数据流、日志文件等进行追踪然后搜集到的原始数据转换成事件,并向系统的其它部分提供此事件。(2) 时间分析器:对接受到的实时信息进行分析:以判断它们是否属于入侵行为或异常现象,然后将判断结果转换成报警信息。(3) 事件数据库:负责存放中间数据和最终数据。(4) 响应单元:根据事件分析器传来的报警信息作出反应。(5) 目录服务器:负责控制各组件传递的数据并认证其它组件的使用,以防止IDS本身受到攻击。3.2.2 snort入侵检测系统的工作流程入侵检测的工作流程主要分为以下四步:(1)信息收集。信息收集的内容包括系统、网络、数据及用户活动的状态和行为。(2)信息分析。它是指对收集到的数据信息,进行处理分析。一般通过协议规则分析、模式匹配、逻辑分析和完整性分析几种手段来分析。(3)信息存储。当入侵监测系统捕获到有攻击发生时,为了便于系统管理员对攻击信息进行查勘和对攻击行为进行分析,还需要将入侵监测系统收集到的信息进行保存,这些数据通常存储到用户指定的日志文件或特定的数据库中。(4)攻击响应:对攻击信息进行分析并确定攻击类型后,入侵检测系统会根据用户的设置,对攻击行为进行相应的处理,如发出警报、给系统管理员发邮件等方式提醒用户。或者利用自动装置进行处理,如切断连接,过滤攻击者的IP地址等,从而使系统能够较早的避开或阻断攻击。3.3 snort入侵检测系统分类3.3.1入侵检测系统分类入侵检测系统的分类方法不是唯一的,有两个比较常用标准;按照信息源和分析方法的标准来分类。入侵检测系统根据数据来源分为基于主机的入侵检测(HIDS)和基于网络的入侵检测系统(NIDS)以及混合型入侵检测系统;根据分析方法分为异常检测(AD)和误用检测(MD);根据响应方式分为被动响应系统和主动响应系统。入侵监测系统的分析结构如下图图2-1分析结构图3.3.2基于主机的入侵检测基于主机的入侵检测系统为早期的入侵检测系统结构,其检测的目标主要是主机系统和系统本地用户。检测原理是根据主机的审计数据和系统日志发现 可疑事件。检测系统可以运行被检测的主机或单独的主机。系统结构图如下图 : 图2-2基于主机的入侵检测系统从技术发展的历程米看,入侵检测是在丰机审计的基础上发展起米的,因而早期的入侵检测系统都是基于主机的入侵检测系统。主机型入侵检测系统保护的 一般足所在的主机系统。通常,基于主机的IDS是以监测系统、事件齐fiWindowNT下的安全记录以及UNIX环境下的系统记录,从而发现可疑行为。当有文件发生变化时,IDS将新的记录 条目与攻击标记相比较,看它们是否匹配。如果匹配,系统就会向管理员报警并 向别的目标报告,以采取措施。对关键系统文件和可执行文件的入侵检测的一个 常用方法,是通过定期检查校验和来进行的,以便发现意外变化。反应的快慢与 轮询间隔的频率有直接的关系。此外,许多IDS还监听端口的活动,并在特定端 口被访问时向管理员报警。尽管基于主机的入侵检测系统不如基于网络的入侵检测系统快捷,但它却具 有基于网络的入侵检测系统无法比拟的优点。这些优点包括: 1、能够确定攻击是否成功。主机是攻击的最终目标所在,所以基于主机的 IDS使用含有已发生的事件信息,可以比基于网络的IDS更加准确地判断攻击是否成功。2、监控力度更细。基于主机的IDS监控目标明确、视野集中,可以检测一些 基于网络的IDS不能检测的攻击。它可以很容易地检测一些活动,包括对敏感文 件、目录、程序或端口的存取。例如,基于主机的IDS是以监督所有用户登录及 退出登录的情况,以及每位用户在联接到网络以后的行为。它还可以监视通常只 有管理员才能实施的非正常行为。针对系统的一些活动,有时并不通过网络传输 数据,有时虽然通过网络传输数据,但所传输的数据并不能提供足够多的信息, 从而使基于网络的IDS检测不到这些行为,或者很难检测到这个程度。 3、配置灵活。每一台主机都有其自身基于主机的IDS,用户可根据自己的实 际情况对其进行配置。4、对网络流量不敏感。基于主机的IDS一般不会因为网络流量的增加而放弃 对网络行为的监视。 5、适用于加密的以及交换的环境。加密和交换设备加大了基于网络的IDS 收集信息的难度,但由于基于主机的IDS安装存放在监控的主机上,根本不会受这 些因素的影响。6、一般由软件实现,不需要额外的硬件。基于主机的IDS存在的主要问题: 一是占用主机资源,在服务器上产生额外的负载:二是缺乏平台支持,可移植性 差,使用范围受限。 3.3.3基于网络的入侵检测基于网络的入侵检测系统是,通过在共享网段上对通信数据的监听、采集,分析可疑现象。其数据源是网络上的数据包,监听本例段内的数据包并进 行判断,分辨出攻击者。当前的大部分入侵检测系统产品是基于网络的入侵检测 系统。它们应用模式匹配技术,将采集到的网络数据包同规则库中的规则进行模 式匹配,根据分析结果采取相应的行动。系统结构图如下: 图2-3基于网络的入侵检测系统 基于网络的IDS具有许多基于主机无法提供的功能。基于网络的IDS有以下优点:1、检测速度快。基于网络的传感器通常能在微秒或秒发现问题。而人多数基于主机的产品则耍依靠对最近几分钟内审计记录的分析。2、隐蔽性好。一个网络的传感器不像一个主机那样显眼和易被存取,因而也不那么容易遭受攻击。基于网络的传感器不运行其他的应用程序,不提供网络服务,可以不响应其他计算机。因此可以做得比较安全。3、视野更宽。基于网络的IDS可以检测一些主机检测不到的攻击,如基于网 络的SYN攻击、泪滴攻击等,还可以检测不成功的攻击和恶意企图。4、较少的传感器。难于使用一个传感器就可以保护一个共享的网段,所以 不需要很多的传感器。相反,如果基于主机,则要在每台主机上配置一个代理,这样的话,不但花费昂贵,而且难于管理。5、攻击者不易转移证据。基于网络的IDS使用正在发生的网络通信进行实时 攻击的检测。所以攻击者无法转移证据。被捕获的数据不仪包括攻击的方法向 且还包括可以识别黑客身份和对其进行起诉的信息。许多黑客都熟知审记记录,他们知道如何操纵这些文件掩盖他们的作案痕迹,如何阻止需要这些信息的基于主机的系统去检测入侵。6、操作系统无关性。基丁网络的IDS作为安全监测资源,与主机的操作系统 无关。与之相比,基于主机的系统必须在特定的、没有遭到破坏的操作系统中才能正常工作,生成有用的结果。7、占资源少。在被保护的设备上不用占用任何资源。基于网络的IDS存在的问题:一是只能进行本网段的活动,精确度不高;二是 在交换环境下难以配置;三是防入侵欺骗能力较差:四是难以定位入侵者。3.3.4一种混合的方法混合入侵检测是将基于网络的入侵检测系统和基于主机的入侵检测系统结合在一起的入侵检测系统。由于基于网络的入侵检测系统和基于主机的入侵检测系统各有利弊,将二者的技术结合在一起,将会优势互补,极大地提高系统防范入侵和防范误用的能力。这也是入侵检测系统发展的方向之一。 3.3.5误用入侵检测 误用检测被人们又称为基于特征的检测,其基本思想是:根据已经发现的入侵 行为,定义相应的入侵模式,然后在实际的审计数据中检测是否出现这些入侵模 式来完成检测功能。误用检测的原理如图: 图2-4 误用检测原理3.4 snort入侵检测面临的挑战和发展趋势3.4.1 snort入侵检测面临的挑战(1)、误报、漏报率较高当前的入侵监测系统通常采用冷模式匹配、统计分析和协议分析等检测技术,而这些检测技术都存在各种各样的缺陷。例如,模式匹配的可扩展性和适应性较差,且不能检测未知攻击;统计分析方法中的阐值很难准确设定,太小会产生大量的虚警,而太大则产生大量的漏报,并且入侵者还可以通过逐步“训练”,使入侵事件符合正常操作的统计规律,从而透过入侵检测系统;协议分析检测方法中,一般的入侵检测系统只简单地处理了常用的协议,如HTTP、FTP、SMTP等,而其余大量的协议报文中存在的异常行为有可能被漏报,如果分析所有支持的协议类型,则计算成本将无法承受,这就需要探索新的入侵检测技术解决计算其成本问题。(2)缺乏有效的协同现有的入侵检测系统大多只针对特定网断、特定主机的数据进行分析,还不能将来自不同源的信息进行协同分析,影响对某些攻击的检测。另外,对于以下方面的协同,现有的入侵检测系统还没有完全做到。例如:同一系统中不同入侵监测部件之间的协作,特别是基于主机的IDS 和基于网络的IDS之间的协作,以及异构平台部件之间的协作;不同安全工具之间的协作,如IDS 和防火墙、IPS的协作;不同厂家的安全产品之间的协作,等等。(3)有限的响应能力传统的入侵检测系统将注意力集中在被攻击的检测上,虽然检测出了网络入侵,但由于被动的IDS本身并不试图降低所造成的破坏,也不主动地对攻击者采取反击行动,而管理员常常无法立即分析入侵检测系统的报告,并采取相同的行动,这就是攻击者在系统管理员采取行动前有机可乘。因此,传统的被动的响应方式,已不能适应入侵检测系统发展的需要。(4)性能有待提高 目前的入侵检测系统已不能适应交换技术和高速网络的发展,在大流量情况下会造成入侵检测系统的丢包甚至瘫痪,因此需要探索新的入侵检测方法、技术和模型。3.4.2 snort入侵检测面临的发展趋势在入侵检测技术发展的同时,入侵技术也在更新,一些黑客组织已经将如何绕过ID或攻击IDS系统作为研究重点。高速网络,尤其是交换技术的发展以及通过加密新到的数据通信,使得通过共享网断侦听的网络数据采集方法显得不足,而大量的通信量对数据分析也提出了新的要求。随着信息系统对一个国家的社会生产与国民经济的影响越来越重要,信息战已逐步被各个国家重视,信息战中的主要攻击“武器”之一就是网络的入侵技术,信息战的防御主要包括“保护”、“检测”与“响应”,入侵检测则是其“检测”与“响应”环节不可缺少的部分。 今年对入侵检测技术有几个主要发展方向:(1) 应用层入侵检测:许多入侵的语义只有在应用层才能理解,而目前的IDS仅能检测如WEB之类的通用协议,而不能处理如Lotus Notes、数据库系统等其他的应用系统。许多基于客户、服务器结构与中间技术及对象技术的大型应用,需要应用层的入侵检测保护。(2) 只能的入侵检测:入侵方法越来越多样化与综合化,随着机器学习技术研究领域的发展,很多新的方法也被应用到入侵检测领域中,包括关联规则、神经网络、决策树、遗传算法、贝叶斯网络等,但是这只是一些常识的研究工作,需要对智能化的IDS加以进一步的研究以解决其自学习与自适应能力。(3) 入侵检测的评测方法:用户需对众多的IDS系统进行评价,评价指标包括IDS检测范围、系统资源占用、IDS系统自身的可靠性。从而设计通用的入侵检测测试与评估方法与平台,实现对多种IDS系统的检测已成为当前IDS的重要研究与发展领域。(4) 体系结构由集中式向分布式发展:分布式入侵检测具有使用分布式的方法来监测分布式的攻击的能力,其中的关键技术为检测信息的协同处理与入侵攻击的全局信息的提取。分布式的体系结构具有可扩充性、搞适应性和康攻击性等优点,成为当前入侵检测系统发展的方向。(5) 响应方式由被动式向主动式发展:入侵检测响应分为主动响应和被动响应。多数IDS目前只能做到被动报警。当检测出网络攻击后,IDS只会发出告警,将发生的不争产情况报告给管理者本身并不试图降低所造成的破坏,更不会主动地对攻击者采取反击行动。只有被动报警的IDS,需要专人对其进行维护、管理和事件分析,这是目前IDS不能被广泛使用及其功用被怀疑的主要原因。为了得到进一步发展,实现IDS主动响应是 当务之急。主动响应,就是要在集相关信息的基础上,通过调整被攻击系统的状态,阻止或减轻攻击影响,如断开网络连接、增加安全同志、杀死可疑进程等。 总之,入侵检测作为+一种积极主动的安全防护技术,提供了对内部攻击、外部攻击和误操作的实时保护,在网络系统受到危害之前拦截和响应入侵。3.5 本章小结本章主要介绍了入侵检测系统的组成和工作流程,并分析了入侵检测系统 的分类以及各类型的特点,最后对入侵检测技术而临的挑战和发展趋势做了分析与概括。第四章Snort 规则如同病毒,大多数入侵行为都具有某种特征,Snort的规则就是用这些特征的有关信息构建的。 你可以用蜜罐来取得入侵者所用的工具和技术的信息,以及他们都做了什么。此外,还有入侵者会利用的已知的系统弱点数据库,如果入侵者试图利用这些弱点来实施攻击,也可以作为一些特征。这些特征可能出现在包的头部,也可能在数据载荷中。Snort的检测系统是基于规则的,而规则是基于入侵特征的。Snort规则可以用来检测数据包的不同部分。Snort 1.x可以分析第3层和第4层的信息,但是不能分析应用层协议。Snort 2.x增加了对应用层头部分析的支持。所有的数据包根据类型的不同按顺序与规则比对。规则可以用来产生告警信息、记录日志,或使包通过(pass):对Snort来说,也就是悄悄丢弃(drop),通过在这里的意义与防火墙或路由器上的意义是不同的,在防火墙和路由器中,通过和丢弃是两个相反的概念。Snort规则用简明易懂的语法书写,大多数规则写在一个单行中。当然你也可以行末用反斜线将一条规则划分为多个行。规则文件通常放在配置文件snort.conf 文件中,你也可以用其他规则文件,然后用主配置文件引用它们。 4.1 规则的结构 所有的Snort规则都可以分为两个逻辑组成部分:规则头部和规则选项。参见图3-1规则头部规则选项图3-1 Snort 规则的基本结构。规则的头部包含规则所做的动作的信息,也包含与包所比对的一些条件。选项部分通常包含一个告警消息以及包的那个部分被用来产生这个消息。一条规则可以用来探测一个或多个类型的入侵活动,一个好的规则可以来探测多种入侵特征。Snort规则头部的主要结构如图3-2所示:动作协议地址端口方向地址端口图3-2 Snort规则头部结构4.1.1规则头部如前面提到的,规则的头部包括括号前面的一些部分,现在让我们从动作开始来详细的看一下规则头部的每个部分。 规则动作动作是Snort规则中的第一个部分,它表示规则的条件符合的时候,将会有什么样的动作产生。Snort有5个预定义的动作,你也可以定义自己的动作,需要注意的是,Snort 1.x和2.x对规则的应用是不同的,在1.x中,只要包符合第一个条件,它就会做出动作,然后就不再管它,尽管它可能符合多个条件;在2.x中,只有包和所有相应规则比对后,才根据最严重的情况发出告警。(1)pass这个动作告诉Snort不理会这个包,这个动作在你不想检查特定的包的时候可以加快Snort的操作速度。例如,如果你在网络中有一台包含一些弱点的主机,用来检测网络安全漏洞,可能会希望不理会对这台机器的攻击,pass规则这时就可以用到了。(2)LogLog动作用来记录包,记录包有不同的方式,例如,可以记录到文件或者数据库,这将在以后讨论。根据命令行参数和配置文件,包可以被记录为不同的详细程度。你可以用“snort - ?”命令来查看你所用版本Snort的命令行可用参数。(3)AlertAlert动作用来在一个包符合规则条件时发送告警消息。告警的发送有多种方式,例如可以发送到文件或者控制台。Log动作与Alert动作的不同在于:Alert动作是发送告警然后记录包,Log动作仅仅记录包。(4)ActivateActivate动作用来产生告警然后激活其它规则来进行进一步的检验。如下面所说的,动态规则就是用于这个目的。当你需要对捕获的包进行进一步检验的时候,就可以用activate动作。(5)DynamicDynamic规则动作由其它用activate动作的规则调用,在正常情况下,他们不会被用来检测包。一个动态规则仅能被一个“activate”动作激活。(6)自定义动作除了以上动作外,你也可以定义自己的动作,以用于不同的目的,例如:l 向Syslog发送消息。Syslog是系统日志守护进程,它在/var/log中创建日志文件,这些文件的位置可以通过修改/etc/syslog.conf来改变。你可以在UNIX系统中用命令“man syslog”或者“man syslog.conf”来获得更多信息。Syslog相当于Windows中的事件查看器。l 向如HP OpenView或Open NMS()等网管系统发送SNMP trap。l 在一个包上应用多个动作。如你前面所看到的,一个规则仅仅规定了一个动作,自定义动作可以用来产生多个动作。例如,你可以在发送SNMP trap的同时记录Syslog。l 将数据记录到XML文件中。 4.1.2协议协议是Snort规则中的第二部分,这一部分将显示那种类型的包将与该规则比对。到目前为止,Snort可以支持以下协议:l IPl ICMPl TCPl UDP 4.1.3 地址snort提供一种机制,可以是你用否定符号“!”,也就是感叹号,来排除某些地址,这个符号用来限制snort不对某些源或目的地址的包做检测。4.1.4 端口 你也可以在规则中的端口段设置一系列的端口,而不只是一个。用冒号分隔起始和结束。例如下面的规则将对来自1024-2048的所有UDP包告警:alert udp any 1024:2048 - any any (msg: “UDP ports”;)4.1.5 上限与下限你可以仅用一个起始端口号或结束端口号来表示端口列表,例如:1024表示比1024小,包含1024的所有端口,1000:表示比1000大,包括1000的所有端口。4.1.6 否定符与地址段相同,你也可以在Snort规则中的端口段用否定符号来排除一个或多个端口。下面的规则将记录除了53段口外的其它所有UDP通信。log udp any !53 - any any log udp但是你不能用逗号来分隔多个端口,如53,54这样的表示是不允许的,但是你可以用53:54来表示一个端口范围。4.1.7 共用端口号。共用端口号是提供给一些公用应用的,表3-1列举了其中一些及应用。端口号描述20FTP数据21FTP22SSH或安全Shell23Telnet25SMTP或类似于Sendmail的e-mail服务器37NTP(网络时钟协议,用来同步网络主机时间)53DNS 服务器67BootP/DHCP客户端68BootP/DHCP服务器69TFTP80HTTP,web服务器110POP3,供类似于OE的邮件客户端使用161SNMP162SNMP trap443HTTPS或安全HTTP514Syslog在UNIX平台上, 可以查看/etc/services文件,可以看到更多的端口的定义。RFC 1700中包含详细列表。4.1.8 方向段在Snort规则中,方向段确定源和目的。下面是方向段的相关规定:-表示左边的地址和端口是源而右边的是目的。-表示右边的地址和端口是源而左边的是目的。表示规则将被应用在两个方向上,在你想同时监视服务器和客户端的时候,可以用到这个标示。例如,你可以监视往来POP或者Telnet服务器的数据流。4.2 规则的选项 Snort规则的选项在头部的后面,在一对圆括号里面,其中可能包含一个选项,也可能包含用分号分隔的多个选项,这些选项的关系是逻辑与的关系,只有当选项中的条件都满足的时候,规则动作才会被执行。在前面的例子中,你已经来规则中应用了msg和ttl的选项。所有的选项都是由关键字来定义的,一些选项中还会包含变量值。一个选项包含两个主要部分:一个关键字和变量值。关键字和变量值由冒号分隔。如你前面看到的:msg: Detected confidential;在这个选项中,关键字是msg, 而Detected confidential是变量值。本部分的后面将叙述在Snort规则的选项部分的各种关键字发送的下一个Tcp包的序列号。仅当TCP头部的ACK标志位被设为1的时候,这个字段才起作用。关于TCP头部的详细资料,参考附录C或者RFC 793。 类似于nmap的工具用TCP头部的这个特征来扫描计算机,例如,在这些工具所用的技术中,它们向目标主机发送至80端口,ACK标志为1,序列号为0的TCP包,这样目标主机就不会接受这个包,并发回一个RST标志为1的包,当nmap受到这个包的时候,就知道那台主机是存在的。当目标主机不对ICMP做出回应的时候,这个方法可以起到作用。为了探测到这种TCP ping,你可以用类似于下面的规则来产生告警信息:alert tcp any any - /24 any (flags: A; ack: 0; msg: TCP ping detected;)这条规则的作用是在当你收到标志位A为1而acknowledgement段的值为0的TCP包的时候,发送一个告警信息。表3-2列举了其他的TCP标志位。在本规则中,定义包的目的是/24,你可以用其它的值。关键字ack基本上用来探测这种类型的攻击,一般情况下,如果A位为1,Ack的值是不等于0的。Snort规则可以分配类别和优先级以便区分,为全面了解关键字classtype,首先我们来看被snort.conf用include关键字所引用的classifacation.config文件,该文件的每一行都遵循下面的语法:config classification: name,description,priority其中name用来表示类别名称,在Snort规则中用classtype关键字来指定,description是对类别的简单描述。Priority是这个类别的默认优先级,用数字表示,并可以在Snort选项中用关键字priority改变。你也可以把这些语句放在snort.conf中。下面是一个例子:config classification: DoS,Denial of Service Attack,2上面的一行中,定义了一个类别DoS,其优先级为2。在第6章中,你将看到在基于web的Snort分析工具ACID中用到这个类别。现在让我们在规则中应用这个类别,如下例,优先级为默认值:alert udp any any - /24 6838 (msg:DoS; content: server; classtype:DoS;)我们改变这个规则,可以覆盖默认优先级:alert udp any any - /24 6838 (msg:DoS; content: server; classtype:DoS; priority:1)分类和优先级的意义在于,我们可以了解告警是否紧急,这在我们要对威胁性高的告警提高警惕的时候非常有用。 4.3 第一个不可用的规则这里有个非常不好用的规则,事实上,也许是最差的规则,但是它可以很好的检测Snort是否正常工作,并可以产生告警:alert ip any any -any any (msq:”IP Packet detected”;).在 第一次安装Snort的时候在snort.conf的末尾加上这条规则,这个规则可以使每当捕获一个IP包都产生告警信息,如果你就这样离开的话,你的硬盘空间很快就会被填满。这个规则之所以不可用,是因为它不信任何信息。难道你用一个永久规则的目的就是为了检测Snort是否在工作吗?它应该是用来在你安装完Snort后做测试,以确定其工作正常,然后就去掉这条规则。下面的部分你可以了解Snort规则的不同部分,但为完整性起见,下面将简要解释一下刚才的那条规则所用的语句:l “alert”表示如果包与条件匹配,就产生一个告警信息。条件由下面的语句定义。l “ip”表示规则将被用在所有的IP包上。l 第一个“any”是对IP包源地址部分的条件定义,表示来自任何一个IP地址的IP包都符合条件,任何IP包都符合本条件。l 第二个“any”用来定义端口号,因为端口号与IP层无关,任何IP包都符合条件。l “-”符号表示数据包传送的方向。l 第3个“any”用来定义目的地址的条件,any表示这条规则并不关心所有包的目的地址。l 第4个“any”用来定义目的端口条件,再说明一次,因为IP层与端口无关。l 最后一部分是规则的选项,并包含一条将被纪录的告警消息。第五章 基于snort的混合入侵检测系统的实现5.1 系统实现的环境平台系统开发环境是基于windows操作系统的,Wed服务器选择Apache,数据库选择Mys q l ,编程工具选择VC+6.0,编程语言选择C语言、PHP脚本语言。由于snort 检测系统是开源的,并且支持使用插件模式,因此,在snort源码基础上,开发新的插件,扩展其功能是非常方便的。构建一个较完备的开发实现环境需要的软件及相应版本如下:snort2.9.3、Win P c a p 4.0.2、j p g r a p h、MySQL5.1.47、Apache HTTP Server V2.2.4、php5.2.10、ADODB、ACID等软件。5.2正常行为模式库的构建本节主要利用数据挖掘技术中的序列模式挖掘算法完成用户正常行为模式库的构建。Re f i x S p a n算法仅仅检测成为prefix 的前部序列片段,将该数据库在这个prefix上投影,挖掘其中的频繁项,然后扩充到prefix中,继续此操作,直到挖掘序列数据库中挖掘出相关记录间的关联关系,然后分别构建出正常行为规则模式库和入侵行为规则模式库。本模式采用了按序列模式长度增加2的投影(bi-level pro-jection)方式的PrefixSpan算法,算法描述如下:步骤一:输入序列数据库S,最小值尺度阀值min_sup和时间约束。步骤二:预设第一次序列长度La=1,从映射数据库中发现长度为La的频繁序列集S,频繁序列是数据库中发生次数不小于阀值的序列。步骤三:以S划分搜索空间,分别挖掘含有这些频繁序列为Prefix的长度为K+1的频繁序列,如果挖掘结果为空,则停止。步骤四:将序列长度La增加2,找到频繁2-序列,将步骤三所找到的L赋予S,再转到步骤三。步骤五:对每一个找到的频繁2-序列,将其连接到S形成一个频繁序列S,记录并输出所有挖掘到的频繁序列。函数Prefixspan min 函数部分代码如下:void prifixspan (int minsup,vector vmatchstr ,vectorvcur) for (int i=0;ivlen;i+) int j; for (j=vcurtmpi;j(dataini).size();j+)size_t pos;pos=(datainij).find(stmp);if(pos!=string:npos)vcurtmpi=j+1; break;if(j=(dataini.size()vcutmpi=j;成功添加正常行为模式处理模块后的正常数据分析页面如图5.3异常检测引擎的实现5.3.1异常检测的原理异常检测的原理是依据正常行为模式库中建立的正常行为模式,对行为活动数据进行对比匹配,依据观察情况状态的匹配与否来判断此行为是正常行

温馨提示

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

评论

0/150

提交评论