Snort是怎么如何应对ddos攻击新的攻击的,未知的攻击的

作者:{Doris}@ArkTeam原文作者:Alan Saied, Richard E. Overill, Tomasz Radzik原文标题:Detection of known and unknown DDoS attacks using Artificial Neural Networks分布式拒绝服务(DDoS)攻击的关键目标是通过互联网利用受感染的僵尸/代理编译多个系统并形成网络僵尸网络。这种僵尸旨在攻击具有不同类型数据包的特定目标或网络。受感染的系统可以通过攻击者或自行安装的木马程序(如roj/Flood-IM)进行远程控制,程序可以启动数据包泛滥。在此背景下,此文的目的是在实时环境中检测和减轻已知和未知的DDoS攻击。原文中应用人工神经网络(ANN)算法来检测基于特定特征(模式)的DDoS攻击,这些特征将DDoS攻击流量与真正的流量分开。作者使用了人工神经网络算法来检测TCP、UDP和ICMP DDoS攻击,将真正流量与DDoS攻击进行区分。通过使用现有流行的DDoS工具生成的真实案例和DDoS攻击场景(模式)对算法进行了深入的训练。ANN的学习过程是通过再现一个网络环境来开始的,该网络环境是现实生活环境的镜像。然后在普通流量通过网络时发起不同的DDoS攻击。作者收集数据集,进行预处理后使用JNNS训练算法。然后将检测机制与Snort-AI集成在一起,在这里针对已知和未知的DDoS攻击进行测试。原文实验显示将ANN反向传播学习与Sigmoid激活函数以及图1和图2中选择的拓扑结构相结合。使得图 1-3可以产生98%的检测精度。与其他相关学习算法和激活函数相比,这是迄今为止最高的检测精度。
图1 ANN TCP拓扑结构
图2 ANN ICMP拓扑结构
图3 ANN UDP拓扑结构原文解决方案旨在通过从网络中检索数据包并使用经过训练的人工神经网络分析他们的头部信息,持续监控网络的异常行为。但是,在繁忙网络中检索大量数据包需要很高的处理速度并且很昂贵。因此,原文为每个协议引入了单独的数据包阈值。一旦数据包被分离并准备好进行检查,解决方案将模式(变量)管理为ANN代码,以确定检索到的流量(数据包)的合法性。其设计如图4所示,其中每个网络都安装有一个DDoS检测器,该检测器通过加密消息与他人进行通信。
图4 检测、防御和合作机制设计示意图参考文献:[1]S.Englehardt, C.Eubank, P.Zimmerman, D.Reisman, and A.Narayanan. OpenWPM: An Automated Platform for Web Privacy Measurement. Manuscript, 2015.特别声明:本文为网易自媒体平台“网易号”作者上传并发布,仅代表该作者观点。网易仅提供信息发布平台。
一键安装官方客户端
重大事件及时推送 阅读更流畅
http://crawl.nosdn.127.net/img/e07b77a6fa8.jpgSnort-入侵检测系统规则集的优化_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Snort-入侵检测系统规则集的优化
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩2页未读,
定制HR最喜欢的简历
你可能喜欢您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
Snort入侵检测系统规则匹配方法的研究.pdf 50页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
重庆大学硕士学位论文
网络安全形势伴随信息网络应用的快速发展日益严峻,以往单一、静态的防
火墙策略已经不能很好的应对日益严重的网络安全问题。入侵检测系统正是在这
种背景下产生和发展起来的。入侵检测系统是一套软硬件相结合的系统,运用入
侵检测技术对恶意使用或攻击行为进行检测识别、报警响应处理等,检测的内容
既可以是网络数据流也可以是终端主机设备的相关数据,它对受保护网络内、外
部的恶意或攻击行为都具有监视和检测作用。同防火墙配套使用,对加强网络安
全特别有意义。
Snon是一种典型的轻量级网络入侵检测系统,具有免费开源、动态防御等特
性。Snort结构原理和实践应用等方面的研究,对研究与开发其他商用入侵检测系
统,具有学术和商业双重价值。
法的性能和减少时间复杂度等方面,而对占Snort系统总运行时间15.2%的规则头
匹配部分则研究较少。如果能减少规则匹配时间,包括规则头匹配及规则选项匹
配的相应操作时间,同样能提高系统效率,提升系统性能。结合先进的匹配算法
后改进系统整体性能的效果将更为显著。本文的主要工作包括:
研究了Snort的各功能模块,深度剖析了Snon规则格式和规则组织形式,然后围
理速度的相关技术的研究。
②在规则动态调整方面,在深入分析了静态调整法及包括一步调整法和两步
调整法的动态调整法的基础上,本文提出了性能更加优越的改进两步动态调整法。
③在分析了Snort规则特点及匹配、调整方法的基础上,结合改进的两步动
态规则调整法,本文提出了一种能够提高Snort检测处理速度的新方法一基于高
频活动规则集的Snort规则头匹配方法。经过对来自DAPRA1999的数据集进行分
组对比测试分析,结果表明,本文提出的方法能够有效提高Snort检测处理速率,
在效率上比原方法平均提高了约17.25%。
关键词:入侵检测,Snon,规则匹配,动态调整,高频活动规则集
重庆大学硕士学位论文
networkand
application,networksecurity
rapiddevelopment
situationbecomesmoreandmore
andstaticfirewall
serious,previoussingle
todeal、加廿1the
seriousnetwork
increasingly
detection isinthiscontextofthe
detectionisacombinationofsoftwareand
intrusiondetection
hardware,apply
onthemaliciousorattackfordetectionandalarm
technology
thecontentbea
Can network
terminalhost
stream,call
hasthesurv
正在加载中,请稍后...没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!当前位置: >>
Snort入侵检测系统的研究及其性能改进
西安理工大学 硕士学位论文 Snort入侵检测系统的研究及其性能改进 姓名:谢少春 申请学位级别:硕士 专业:计算机软件与理论 指导教师:张亚玲
摘要论文题目:Snort入侵检测系统的研究及其性能改进1 学科专业:计算机软件与理论研究生:谢少春 指导教师:张亚玲副教授 签名: 签名:篮趟 毖摘要计算机和网络技术的快速发展给人类生产和生活带来了革命性的变化,这也使得人类 面临着网络安全这种新的威胁。传统的加密和防火墙技术已经不能完全满足信息安全的需 求,入侵检测技术作为一种必要的安全手段,在网络安全领域发挥着其独到的作用。 Snort作为典型的轻量级网络入侵检测系统(NIDS),是一个免费的开源项目。对Snort 设计原理和实现特点的研究,可以作为其他商用入侵检测系统的研发基石,有较强的学术 意义和较高的商业价值。 本文以Snort系统为研究对象,通过剖析其源代码,系统地研究了Snort整体体系架构, 以及详细分析了其中的多模式快速匹配模式集、快速检测引擎、字符匹配算法等,然后, 本文围绕模式匹配部分展开对提高Snort性能的关键技术研究。 以Snort新特性的分析和现存多种规则匹配方法研究为基础,考虑到大量Snort规则在 一定时间内只有一小部分规则是活跃的,提出了基于活跃规则集的Snort规则匹配方法, 通过把每个端口下的规则分成活跃规则集与不活跃规则集,结合反馈规则匹配频度的思 想,实时更新规则匹配顺序和控制活跃规则集大小,从而提高规则匹配速度。根据本文提 出的改进方法,针对Snort 2.4进行了规则匹配算法的改进。经过采用来自林肯实验室的国 际标准化入侵检测样本数据对改进系统进行对比测试分析,实验结果表明,改进后的算法 规则匹配效率提高了6%---21%。最后,本文说明了Snort匹配性能改进的进一步工作,并对Snort和IDS技术的发展作了展望。关键词:基于网络的入侵检测系统(N1DS);规则树;活跃规则集;规则匹配;匹配频度1本研究得到陕西省教育厅2006年计划资助项目(项目编号:06JK231)的资助 AbstractTitle:Research and Performance Improvement Detecti on SystemonSnort IntrusionMajor:Computer Software and TheoryName:Shao.Chun Xie Supervisor:Associate prof.Ya?Ling Zhang Signature:AbstractWithFirewallthe rapid development in the technology of computer and the networktechnology,anditsthe security problem in network iS increasingly outstanding.But the traditional Encryptiontechniquescan’t fullymeet the expectations.Asrole inoneof new methods,the Intrusion securityDetectionSystem(IDS)plays an importantanetworktoday.Withcharacteristic,IDS should contribute more to the information security. Snort iSfree.open―source,'lightweight”Network―based Intrusion Detection System(NIDS)thathasmanycapabilities.By studying Snort's characteristicstechniques,thevalue.peoplecanlearnabout IDS’S knowledge and Snort’S advantageand implementation SO that they Cando something for IDS andSnort.StudyingSnort is of academic significance and commercialIn this thesis,the author looks into the Snort’Scode,analyzes engine,andthe global architecture, the algorithms of Snort Snortmulti―rule inspection engine of Snort,the fast detection stringmatching.In the following we can obtain the key technology of improvingstudying pattern matching. After the analysis of new characteristicsperformance byand several improvement methods of snort rule matching,and by considering of which only a small part of rules in massive snort rules are active in certain time period,a new snort rule matching method based on active rule sets isproposed in this paper.By dividingrulesets under the each port intothe active rulesets and theinactive rule sets,combining with feedback of the rule matching frequency,rule matching order is renewed in real time and the size of active rule setsarelimited,SO the rule matching speedtheCanbe improved.According the method proposed,we have improved the improvedrule matchingalgorithm for snort 2.4,and testdetection sample data from work of Snort match technology.systemusing International standardized intrusionMITLincon Lab.The contrast result of the test show efficiency ofthe new system is enhanced for 6%'-"2 1%._At the end,this article has pointed out the furtherperformance improvement,andexplained the prospect of Snort and IDSKey words:NIDS;active rule sets;rule tree;rule matching;matching frequency 独创性声,明秉承祖国优良道德传统和学校的严谨学风郑重申明;j本人所呈交的学位论文是我,。‘一一 ‘r个人在导师指导下进行的研究工作及取得的成果t尽我所知,除特别加以标注和致谢。j的地方外,论文中不包含其他人的研究成果。,’与我一同工作的同志对本文所研究的工 作和成果的任何贡献均已在论文中作了明确的说明并已致谢。』。本论文及其相关资料若有不实之处j由本人承担一切相关责任论文作者签名:遁主.芝羞汐多年多月多,舀学位论文使用授权声明本人.:逸£兰羞在导师的指导下创作完成毕业论文。.本人已通过论文的答辩,并已经在西安理工大学申请博士/.硕士学位。+本人作为学位论文著作权拥有者,同意 授权西安理工大学拥有学位论文的部分使用权j即:.1一)已获学位的研究生按学校规定 提交印刷版和电子版学位论文,学校可以采用影印、’.缩印或其他复制手段保存研究生 上交的学位论文,可以将学位论文的全部或部分内容编入有关数据库进行检索;2)为 教学和科研目的,学校可以将公开的学位论文或解密后的学位论文作为资料在图书馆、 资料室等场所或在校园网上供校内师生阅读、、浏览。 本人学位论文全部或部分内容的公布(包括刊登)授权西安理工大学研究生部办 理。 (保密的学位论文在解密后^适用本授权说明)’论文作者签名:翅立.2蓥导师签名:霎差亚皂≤.D扩年≥月引白 1前言1前言1.1研究背景计算机和互联网技术正在飞速地发展,网络应用日益普及且更加复杂,网络安全问题 也成为互联网和网络应用发展中面临的重要问题。中国国家计算机网络应急技术处理协调 中心(CNCERT/CO)公布的“2004年网络安全工作报告”fl】显示,CNCERT/CC在2004年共 收到报告的网络安全事件64000多件,同2003年相比,网络安全事件报告数量大大增加。 从调查报告公布的数据和状况可以看出,各种网络安全漏洞大量存在和不断地被发 现,网络攻击行为日趋复杂,各种方法相互融合,网络安全问题变得错综复杂,使网络安 全防御更加困难。然而由于现代计算机和网络自身设计的一些问题,当前还不具有一种能 保证计算机和网络绝对安全的技术【2】。 为了尽量保障计算机和网络系统特别是关键部门的信息安全,市场上涌现出了各种安 全技术和产品,包括防火墙、安全路由器、身份认证系统、VPN设备等,这些技术和产 品对系统有一定的保护作用,但都属于静态安全技术范畴,不能主动跟踪入侵者【3l,也不 能积极有效地防止来自网络内部的非法行为。为了确保网络的安全,网络系统中拥有的网 络安全性分析系统应该能对系统进行漏洞扫描,同时还要能对网络安全进行实时监控、攻 击与反攻击。入侵检测系统(Intrusion DetectionSystemIDS)应用而生。入侵检测系统是一种通过收集和分析计算机系统或网络中关键点的信息,以检查计算 机或网络中是否存在违反安全策略的行为和被攻击的迹象,并对此做出反应,从而保护网 络和主机安全的系统。入侵检测系统能识别外部对计算机或者网络资源的恶意企图和行 为,以及内部合法用户超越使用权限的非法行为【41。 近年来,IDS在理论研究、实际应用上都有很大发展,如各种检测模型、检测方法的提出,信息安全公司提供的各种IDS产品。Snort是一个用C语言编写的开放源代码、免费的轻量级入侵检测工具,它在共享的网 络上捕获网络传输数据包,分析捕获到的数据包,匹配入侵行为的特征或者从网络活动的 角度检测异常行为,完成对入侵的预警或记录。根据GPL(GNUPublicLicense)协议,只要遵循GPL,任何组织和个人都可以自由使用或者修改Snort。本文采用Snort2.4版本,作为论文的分析、实验的基础。Snort是免费开源的,相对于其他IDS昂贵的费用,这是最大的优势。众多爱好者对Snort 的支持,方便的插件机制可以保证Snort及时地对新入侵和病毒做出迅速地反应。Snort设 计结构简洁,具有一般入侵检测系统的特征,开发者通过Snortfl卧g较容易地掌握IDS技术, 以便对更专业化的IDS做出贡献,在Snort中实现、通过检验的方法也可以移植到其他的IDS中。 西安JE_r-大学硕士学位论文IDS发展迅速,同时也面临着一些问题,如检测速度问题、误报、漏报、系统自身安 全问题等。Snon从1998年开始作为一种免费软件发布以来,根据网络安全的需要,及时 地融入了各种先进检测技术,如P分片重组,多模式匹配算法,加强了Snoa的检测功能。 然而Snon仍面临着IDS普遍的问题,检测速度、误报、漏报,也是Snort迫切要求解决的问 题。 基于以上原因,对Snon系统的研究存在着较强的学术意义和较高的商业价值。 检测引擎是IDS的关键部分,在Snort中,检测引擎采用字符匹配的方法来判断入侵, 检测引擎的速度决定Snon的整体性能,Snort社区一直在探索着高性能有效的匹配方法, 也提出了一些解决方法如快速匹配引擎。本文将首先介绍Snoa最新的研究进展,研究和 分析影响Snon检测效率的关键因素,在此基础上提出和实现了基于活跃规则集的Snon高 效规则匹配方法,并进行了性能对比测试。1.2国内外研究现状及进展入侵检测系统根据检测引擎采用检测技术的不同,可以将入侵检测系统分为异常入侵 检测系统和误用入侵检测系统。虽然异常检测技术能够发现一些未知的攻击类型,但是其 误报率较高的问题还没得到很好解决,所以目前实际应用的入侵检测系统的检测引擎都是 基于误用检测技术的。一般来讲,常用的误用检测技术有:模式匹配技术、专家系统和状 态迁移技术等。其中模式匹配技术由于其有分析速度快,准确率高等优点,在实际中最为 常用。在实际研究和应用中,人们也开发出很多的基于规则的误用入侵检测系统。著名的 开源入侵检测系统Snort[51,Bro[61,Firestorm[71和Prelude IDS|8】等都采用了模式匹配技术。 其中Snort是目前最著名、最活跃的开放源码网络入侵检测系统项目。Snort定位于轻量 级的入侵检测系统,已经实现了网络探测器和许多第三方的管理及日志分析工具,是目前 世界上使用最广泛的开源入侵检测系统之一。Snort可以完成实时流量分析和记录网络口 数据包的能力,能够进行协议分析、内容查找/匹配,能够检测到缓冲区溢出,端口扫描、CGI(commongatewayinterface)攻击、SMB(servermessageblock)探测、操作系统指纹探测企图等。Snort可以运行于Linux/Unix系列,Windows等操作系统,具有良好的跨平 台性,并提供丰富的报警机制。Snort遵循GPL(generalpubliclicense),所以任何企业、个人、组织都可以免费使用它作为自己的网络入侵检测系统。Snort具有简洁明了的规则描 述设计及已经成一定规模的攻击检测规则集,它的规则集已经被很多其他开放源码IDS 项目所兼容。历经数年的发展,Snort已经发展到了2.x版本。Snon基本架构在Snortl.6 版本时确立,2.0版本开始采用了新型的入侵检测引擎,功能更加完善和强大。Snort已经 成为学习和研究入侵检测系统的经典实例。目前,许多商业入侵检测系统都是在Snon入侵检测系统的基础上发展来的,有些甚 至是Snort的翻版。国内也开发了不少商用入侵检测系统,例如启明星辰公司的“天阒入2 1前言侵检测系统”,中科网威的“天眼入侵检测系统”,绿盟科技的“冰之眼”入侵检测系统,联想也开发了“联想网御入侵检测系统”。虽然目前市面上的商用入侵检测系统种类繁多, 但是分析其本质,这些入侵检测系统都借鉴了Snort的设计思想。Snort的检测原理并不 复杂,采用的是简单的模式匹配策略。准确性和快速性是衡量其性能的重要指标。前者主 要取决于对入侵行为特征码的提炼的精确性和规则撰写的简洁实用性,由于网络入侵检测系统自身角色的被动性――只能被动的检测流经本网络的数据,而不能主动发送数据包去探测,所以只有将入侵行为的特征码归结为协议的不同字段的特征值,通过检测该特征值 来决定入侵行为是否发生。后者主要取决于引擎的组织结构和采用的模式匹配算法。当数 据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中 的内容和某条规则相匹配,就通知报警模块。但随着网络带宽不断提高,以及网络攻击种 类的急剧增加,致使Snort的检测任务越来越重。当Snort检测引擎过载时,就有可能漏 掉一些造成严重后果的网络攻击行为。因此,模式匹配算法已经成为Snort系统瓶颈所在, 所以设计高效的模式匹配算法对于提高Snort性能有很大意义。模式匹配算法,按照每次 匹配模式的个数,可以分为单模式匹配算法和多模式匹配算法。在单模式匹配算法方面, 目前广泛使用的主要有KMP算法【91,BM算法【loJ和KR算法…】等。BM算法是由R.S.Booyer 和J.S.Moore两个人在1977年设计实现的一个字符串匹配算法,是目前实际应用中最为 常用、效率较高的单模式匹配算法之一。它采用从后向前的比较方式,并利用当前尝试中 的以匹配的信息和匹配失败的字符,查找预处理好的良好后缀跳转表(Good.Suffix Shii{’ Table)和不良字符跳转表(Bad。CharacterShiftTable),依靠这些启发信息进行跳跃式的并行处理,忽略不必要的比较,提高了模式匹配的速度。实际上现有的单模算法都是在 BM算法的基础上改进而来,或者受到了BM算法思想启发。在多模匹配算法方面,比较 著名的算法有AC算法【121、Wu.Manber算法【13】,AC.BM算法【1 41、Comments―Walter算法 1151,SBMH算’法【16】和E2XB算法【17J等。其中AC算法是多模匹配算法中的典型算法,是由A.V.Aho和M.J.Corasick联合提出的多模式匹配算法,最初用在贝尔实验室的图书检索系统里面,后来在其它领域得到了广泛应用。AC算法在预处理阶段通过模式集合构建一 个有限状态模式匹配自动机(Deterministic finite automaton,DFA)。其实质就是将多模式匹 配问题转化成单模式匹配问题,然后将文本串作为自动机的参数输入进行匹配,对文本只 需扫描一次。有限自动机由一系列的状态组成,每个状态可以用一个数字来表示。自动机 处理文本的过程实质就是按序读入文本中的每个字符,并根据当前的状态进行跳转,假如 跳转后的状态是终止状态,则输出匹配结果。自从AC算法采用有限状态自动机方法来解 决多模匹配问题以来,AC算法也成为其它多模式匹配算法的思想基础,比如AC.BM就 采用了AC算法和BM算法结合思想。Comments―Walter算法,类似于AC.BM算法,其 思想是首先用模式集构建一棵搜索树,然后再采用类似BM算法的方法,在文本中用搜 索树对模式进行跳跃搜索。Wu.Manber算法继承了BM算法中不良字符跳转的思想,但 与BM算法不同的是,该算法依据长度为B(2或3)的字符块进行跳转。由于采用字符3 西安理工大学硕士学位论文块技术,降低了部分匹配的可能,增加了直接跳跃的机会,并且采用哈希技术和前缀表, 进一步减少了匹配次数,提高了性能。国内对模式匹配算法的研究基本基于上述几种经典 算法,做不同程度的改进工作。其中基于BM算法方面做的改进工作最多。除了这些改 进算法,贺龙涛2005年在软件学报上提出一种全新的匹配算法Linear DAWG Matching 算法(简称LDM算法)118]。该算法将正文分为[n/m]个相互重叠、大小为2m.1的扫描窗 口。在每个扫描窗口内,算法批量地尝试m个可能位置,首先使用反向后缀自动机从窗 口中间位置向前扫描模式前缀;若成功,则再使用正向有限状态自动机从中间位置向后扫 描剩余的模式后缀。上海交通大学的王永成等人于2002年在上海交大学报上提出一种新 的模式匹配算法【19】【20l。其思想是在有限自动机的多模式匹配算法(DFSA算法)的基础上, 结合QS算法的优点,提出一个快速的多模式字符串匹配算法,并基于算法的连续跳跃的 思想,给出另一个更加有效的改进。在一般情况下,这两个算法不需要匹配目标文本串中 的每个字符,并充分利用了匹配过程中本次匹配不成功的信息,跳过尽可能多的字符。在 模式串较长和较短的情况下,算法都有很好的性能。电子科技大学的万国根、秦志光也在 电子科技大学学报提出改进的AC-BM算法,将待匹配的字符串集合转换为一个类似于 Aho.Corasick算法的有限状态自动机。匹配时,采取自后向前的方法,并借用BM算法的 坏字符跳转和好前缀跳转技术。改进的AC.BM算法借助BMH算法思想,取消了原AC.BM 算法的好前缀跳转,并对坏字符跳转部分的计算进行优化。新算法修改了skip的计算方 法,不再保留每个节点的好前缀跳转参数及坏字符跳转参数,因此匹配只与当前匹配字符 有关,而与当前节点无关,可以实现大小写正文的识别【211。在用先进模匹配算法改进入 侵检测引擎方面,北京大学文字信息处理技术国家重点实验室的张邈、徐辉等以Snort为 蓝本,从规则库结构、串匹配算法及应用层协议分析等方面入手进行优化,设计并实现高 效率的串匹配型入侵检测系统SpeedIDS[22】;上海交通大学的陈一航、薛质基于E2XB的 改进算法做检测引擎算法,并在Snort中实现【231。最后中科院高能物理研究所计算中心的 李雪莹等基于几种常见的多模匹配模式算法改进了Snort检测引擎,并做了性能比较分析[241。1.3论文内容、方法和意义基于网络的入侵检测技术在网络安全领域得到了广泛的应用。Snort作为一种免费开 源的入侵检测工具,提供给了网络安全从业者一个研究平台。本论文以Snort为研究对象, 来了解、研究一般的IDS。 本文的研究内容与成果包括以下几个方面: (1)本文概述了入侵检测系统与Snort,总结了IDS及Snort面临的问题和发展趋势,指出 了Snort在入侵检测系统研究中的学术意义和研究价值。(2)分析了较新的Snort2.40版本的系统结构,重点剖析了Snort十fl对2.0以的版本的两个4 1前言重大改进部分:规则索引和多模式匹配,对Snort2.4从源代码的角度有了一个透彻的理解。 (3)总结了改进Snort性能的一系列方法,然后围绕规则匹配部分,提出了基于活跃规则集的Snort规则匹配方法来改进Snort的性能。(4)根据本文提出的改进方法,我们针对Snort2.4进行了规则匹配算法改进,经过采 用林肯实验室的样本数据对改进系统的测试,结果表明,改进后的算法规则匹配效率提高了6%~21%。本论文的意义在于详细分析了Snort2.4的体系结构及Snort2.0后采用的全新的规则索 引和多模式匹配引擎的实现,在windows下通过实验来测试Snort处理数据包的性能,并提 出了基于活跃规则集来改进Snort的性能的方法,最后完成了Snort代码的修改。性能测试 实验证明,本改进方法能显著提高Snort的规则匹配性能。 对作者来说,通过论文工作,深入了解了网络入侵检测系统的工作原理和具体实现。为作者以后从事计算机及网络安全方面的工作奠定了深厚的理论基础,积累了丰富的工作 经验。1.4论文组织结构论文全文的章节安排如下: 第一章介绍了入侵检测与网络安全的研究背景、课题意义及论文的组织结构。 第二章对入侵检测和Snort作了简要的概述,分析了IDS及Snort面临的问题和发展趋势。 第三章对著名的入侵检测系统Snort进行了详细分析,重点阐述了最新版本Snort的改进:包分类机制和快速匹配引擎。 第四章重点阐述了基于活跃规则集的Snort高效规则匹配方法。 第五章给出了基于活跃规则集的Snort高效规则匹配方法思想的实现方法,以及改进 前后Snort的性能对比测试结果。 第六章对全文进行了总结,并对本课题相关的未来发展进行了展望。5 西安J里.y-大学硕士学位论文2入侵检测系统与Snort2.1入侵检测系统入侵检i9lq(Intrusion Detection,ID),顾名思义,是对入侵行为的检测。它通过收集和分析计算机系统或网络中若干关键点的信息,以检查计算机系统或网络中是否存在违反安 全策略的行为和被攻击的迹象,识别外部对计算机或者网络资源的恶意企图和行为,以及 内部合法用户超越使用权限的非法行为,并对此做出反应,从而保护网络和主机的安全125】o入侵检测技术是一种主动保护自己免受攻击的网络安全技术。被认为是防火墙之后的 第二道安全闸门,它在不影响网络性能的情况下能对网络进行监测,是一种积极主动的安 全防护技术。入侵检测系统(IntrusionDetection SystemDS)是完成上面功能的独立系统。IDS提供了对内部攻击、外部攻击和误操作的检测,在被保护系统的安全性受到侵害时发出报警并 采取适当的行动来阻止入侵行为,从而起到保护系统安全的作用【261。2.2IDS的标准与结构美国国防高级研究计划署(DARPA)I作组(IDWG)发起制订了一系列IDS和互联网工程任务组(IETF)的入侵检测建议草案,从体系结构、API、通信机制、语言格式等方面规 范IDS的标准。DARPA提出了公共入侵检测框架(CIDF)t271,如图2.1,CIDF主要包括四部 分:DS体系结构、通信机制、描述语言和应用编程接HAPI。 CIDF将一个入侵检测系统分为四个组件:事件产生器(Event generators);事件分析器(Event analyzers);响应单元(Response units);事件数据库(Event databases)。四个组件间或各个IDS间采用GIDO(General 交换。Intrusion DetectionObject统一入侵检测对象)格式进行数据在CIDF模型中,事件产生器、事件分析器和响应单元通常以应用程序的形式出现, 而事件数据库则采用文件数据流的形式。CIDF将IDS需要分析的数据统称为事件(Event)。 事件产生器,从整个计算环境中获得事件,转化成一定格式,以向系统的其他部分提供此事件。 事件分析器,分析得到的数据,并产生分析结果。分析器是IDS的核心部分,可以以不同的方法来分析数据,以判断入侵。 响应单元,则是对分析结果做出反应的功能单元,它可以做出切断连接、改变文件属 性等反应,也可以只做简单的报警。6 2入侵检测系统与Snort图2.1 CIDF基本模型Fig.2?1 Fundamental model of CIDF事件数据库,存放各种中间和最终数据的地方,可以是复杂的数据库,也可以是简单 的文本文件。 IDS通信机制,为了保证各个组件之间安全、高效的通信能力,CIDF将通信机制构成 一个三层模型:GIDO层、消息层、协议传输层。 IDS描述语言,CIDF使用一种被称为S表达式的入侵说明语言(CISL)对事件分析结 果、响应指示等过程进行表示说明,以达至IJIDS之间语法互操作。该语言类似于Lisp语言。 IDSAPI接口,负责GIDO的编码、解码和传递,使得程序员可以以一种很简单的方式构建和传递GIDO。2.3IDS的发展与分类1980年,Anderson J P在报告“ComputerSecurity ThreadMonitoringand Surveillance”t2Sl第一次详细阐述了入侵检测的概念。提出了利用审计跟踪数据监视入侵活动的思想。 这份报告被公认为是有关入侵探测的最早论述。1984年-1987年,Dorothy Denning与Peter Neumann联合开发了一个实时入侵检测系统IDES,并提出了一种通用的入侵检测模型1291。该模型根据主机系统审计记录数据,生成 有关系统的若干轮廓,并监测轮廓的变化差异发现系统的入侵行为,如图2.2所示。 随着入侵行为的种类不断增多,涉及的范围不断扩大。入侵检测系统的不同功能组件 之间、不同IDS之间共享这类攻击信息是十分重要的。为此,Chen等提出一种通用的入侵检测框架模型,简称CIDF。7 西安理工大学硕士学位论文更新规则 图2-2 IDES入侵检测模型Fig.2?2 IDES Intrusion Detection Model1988年的莫罩斯蠕虫事件发生之后,美国军方、学术界和企业开始了对分布式入侵检 测系统(DIDS)的研究,将基于主机和基于网络的检测方法集成到一起。它的检测模型采用 了分层结构,包括数据、事件、主体、上下文、威胁、安全状态等6层。 直至1]20世纪90年代商业化的IDS才真正出现,如:国:g]-ISS公司的RealSecure,Cisco公司的Secure IDS,IBM公司的IERS(Intemet EmergencyResponseService)等【30】。从20世纪90年代到现在,入侵检测系统的研发呈现出百家争鸣的繁荣局面,并在智能 化和分布式两个方向取得了一些进展。 计算机和网络技术的继续发展,使得入侵检测技术仍然面临着巨大的挑战,IDS技术 也必须通过和其他计算机技术的结合,探索新的方法,才能在网络安全方面发挥更大的功效。IDS可以按照不同的方法来分类:2.3.1按检测方法分类按照检测方法的不同,可以把IDS分为特征检钡lJ(Misuse Detection)的IDS和异常检测(Anomaly detection)l拘IDS/3¨。特征检测又称为误用检测,是基于知识(或规则)的检测【321。它通过对已知的入侵方式 特征做出确定性的描述,形成事件模式,当用户行为或系统状态同已知的事件模式相匹配 时,则就认为发生了入侵。通常采用专家系统法、模型推理法、状态转移法、模式匹配法、 Petri网、信息反演法等方法。其优点是准确率较高。但是不能发现未知的入侵行为,比较 难以检测到入侵变种。 异常检测又称为行为检测。首先它对系统对象的一些测量属性(比如访问次数、CPU 使用频率、操作失败次数等)进行统计,找出一个阀门值作为基准,如果用户的行为或资 源使用的状况超出了这个基准值,则就认为发生了入侵。通常采用基于概率统计的、基于8 2入侵检测系统与Snort免疫学的、基于数据挖掘的、基于专家系统的、基于神经网络的方法等。这种方法的优点 是通用性强,对具体系统的依赖性较少,并且能够发现未知的入侵行为。缺点是如何描述 正常的行为模式,确定异常的基准值比较困难,导致误报率较高。2.3.2按检测所用数据来源分类按检测所用数据来源通常分为基于主机的HIDS、基于网络的NIDS和分布式的DIDS 三大类。 HIDS一般安装在重点保护的主机上,通过对系统日志、审计数据的分析和端口活动 的监听发现入侵行为。其检测目标主要是主机系统和系统本地用户,通过监视操作系统和 各种服务生成的日志文件,检测是否有入侵。NIDS通常置于重要的网段内,监听网络数 据包,发现攻击事件,一旦入侵特征匹配或者超过正常的阀门值就做出反应。 DIDS将信息采集、分析、响应等构件分布在网络的各个监控点上,他们之间通过通 信传输构件联系,由管理中心提供统一管理。网络上的多个检测器共同收集信息,协同工 作,并行的进行检测分析工作。2.3.3按实现方法分类按实现方法可分为基于概率统计模型的检测、基于神经网络的检测、基于专家系统的 检测、基于模型推理的检测和基于免疫的检测等技术。2.4Snort系统概述Snort的功能2.4.1从检测模式而言,Snort属于网络入侵检NODS)的误用检测。它通过Libpcap库函数从 网络中抓取数据包,对数据包进行解析,接着启动检测引擎,将解释好的数据包和规则模 式集进行比较。如果匹配规则,则认为该入侵行为成立,使用规定的方式进行响应,然后 结束一个数据包的处理过程,再抓取下一个数据包。如果没有匹配的规则,则是正常行为, 直接返回,抓取下一个包进行处理。 Snort是基于规则检测的入侵检测工具,即针对每一种入侵行为,都提炼出它的特征 值,并按照规范写成检测规则,形成一个规则数据库。利用此规则库和捕获的数据包进行 比较,来判断是否为入侵。目前,Snort的检测规则库主要针对缓冲区溢出、端口扫描和 CGI攻击等。最新数据表明Snort共有5l类4300条检测规则。 Snort集成了多种告警机制来提供实时告警功能,包括:syslog、用户指定文件、9 西安理工大学硕士学位论文 UNIXSocket、通过SMBClient使用WinPopup对Windows客户端告警。 Snort的插件机制使得它具有很好的扩展性和可移植性,用户可以根据自己的需要及 时在短时间内调整检测策略,对于新的攻击威胁做出迅速反应。Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。 Snort作为丌源软件填补了只有商业入侵检测系统的空白,可以帮助中小网络的系统 管理员有效地监视网络流量和检测入侵行为。Snort一开始就作为一种免费开源软件发布, 只要遵循GPL协议,任何人可以得到它的版本,安装使用。在Sourcefire上也可以获得Snort的商业解决方案。2.4.2Snort的发展Snort作为一种开源免费的入侵检测工具,它的发展得到了全世界很多爱好者的支持,在www.snort.org和WWW,sourcefire.com,有最新的发布版本和有关资料,也可以通过论坛,新闻组等交换最新信息。 1998年12月,Marry Roesch发布了开源软件Snort的第一版本,它开始是作为嗅探器, 随后在Snort中加入基于特征分析(signature-based rules-based)的功能,开始被用做简单的IDS。1999年10月,Snortl.5发布,加入了重新写过的基于Boyer-Moore算法的模式匹配引擎,插件机制,预处理机制等。规则解释采用二维链表,从此一直沿用该体系结构,直到2.0 版本。 2000年,Snon]Jl入端口扫描插件,Ip重组插件,数据库输出等功能。随着网络的发展和网络攻击的增多,Snort核心规则集也不断增加,Snoa必须通过改进方法,来提高检测速度。在2.0里,Snort采用了全新的体系结构,并重新设计了Snort的检测引擎。删除了一些多余的插件和规则。但Snort的插件和预处理机制没有改变。在2.0后的版本中,通过试用和测试,不断有人报告错误和修正错误,也根据入侵种 类的变化加入了一些相应的处理插件和预处理插件。 Snort的规则极容易修改和调整,能及时对外部入侵做出反映。用户可以迅速及时地通过M椰.snort.org下载最新规则。由于规则格式逐渐成为了标准,用户也可以自己写一些规则来加强网络的安全性。 今天,Snort的各个方面仍然经过一些协作组织及个人的努力,在不断改进。2.5Snort的安装和使用Snort的跨平台性能极佳,目前已经支持Linux系列,Solaris,BSD系列,IRⅨ,HP-UX,Windows系列,ScoOpenserver,Unixware等。10 2八侵检测系统与Snor2.5.1Snort的安装2003作为操作系统。下而简单介绍在windows在本文中选用windowsserverserver2003下snon及相关软件的安装: I)安装winpcap,winpcap是一个针对windows系统的包捕获库,它向snon提供捕获包的功能,是sn珊运行的基础。21安装mysql数据库,Snort的输出方式有很多种,本文利用mysql数据库建立存储 系统。同时安装mysql数据库的相关软件,apache,php,phpMyAdmin等,以方便操作mysql。 晟后导入s∞n安装文件下的建库脚本,生成储存Snort警告的数据库。 31安装SnoR,加入规则和配置文件,修改配置文件。 4)安装ACID,ACID是一个数据浏览和分析工具,ACID能处理Snort数据。通过 ACID,可以很方便的查看,管理各种报警数据,能根据指定的参数生成各种图表和统计 数据。如图2-3和图2-4为安装成功的界面。:謇l::=,=:c…qd…,ru吖n0。篇篇j善盛■黜;盎品;:=删勰嚣:、兰}黼∞慧二.娑黜:麓;““嚣黜寰。嚣:0避。盖兰茹搿岂薯:嚣嚣篙‰0譬慧警:僦:黜鬈篇撼j二翟=:箸”‘羔一]口㈣””0:::矗二….…。“。。Tu'-'Hu●nh-●口f^●●●t11|三.¨no.o鬣一一凹2.3 ACID界面Fi92-3ACID iaterface 西安理工走学硕士学位论文譬普鼍恝曙警啜荸墨霉黑盛:,赢而熹÷意笔熹熹÷,J 剑.【暮 u] a”F《图24 ACID界面FiD2MACIDinterface2.5.2snort的使用snon有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅 仅从网络上读取数据包并显示在终端上。数据包记录器模式把数据包记录到硬盘上。网络 入侵检测模式是最复杂的,可配置的,在此模式下snon分析网络数据流吼匹配用户定义 的规则,并根据检测结果做出反应。本文主要介绍的是第三种功能。详细使用方法可见 snon官方的操作参考手册。11嗅探器嗅探器模式指snon从网络上读出数据包,并作为连续不断的流显示在终端上。如命令/snon―vde21数据包记录器 如果要把所有的包记录到硬盘上,指定一个同志目录.snon自动记录数据包:,snon―de¨1/log―h192 168 l 0n4 168这个命令使得snon把进入c类网络192 的数据畦录到目录/Iog中。1的所有包的数据链路、TcMP以及应用层使用下面的命令可以把所有的包记录到一个单一的二进制文件中: 2入侵检测系统与Snort./snort―1./log-b3)网络入侵检测系统Snort最重要的用途还是作为网络入侵检测系统(NrDS),使用下面命令行可以启动这种模式:./snort―d―h 1 92.1 68.1.0/24?1./log-C snort.confsnort.con缆配置文件。本文在snort.conf中配置了输出数据库,把报警信息直接写入数据库,.1./log也可以去掉。在NIDS模式下,Snort有6种输出报警机制:full,fast,socket,syslog,Smb(winpopup) 和none。其中有4个可以在命令行状态下使用一A选项设置。这4个是:fast,full,unsock,none。 在默认情况下,Snort以ASCII格式记录同志,使用full报警机制,并且把报警发给syslog: ./snort―c snort.conf―1./log―s―h l 92.1 68.1.0/24一s选项使Snort把报警消息发送至lJsyslog。2.6IDS及Snort面临的问题和发展趋势随着网络流量的增大,各种入侵行为的增加,然而人们越来越依赖于计算机和互联网,同时对网络安全提出了越来越高的要求。1DS也被赋予了很大的责任。 当今DS也面临以下四个方面的问题: 1.如何提高IDS的检测速度,以适应网络通讯发展的需要【33,34,35,361 网络安全设备的处理速度一直是影响网络性能的一大瓶颈,在IDS中,截获网络的每 一个数据包,并分析、匹配其中是否具有某种攻击的特征需要花费大量的时间和系统资源, 如果其检测速度跟不上网络数据的传输速度,那么检测系统就会漏掉其中的部分数据包, 从而导致漏报而影响系统的准确性和有效性。大部分现有的IDS只有几十兆的检测速度, 随着百兆、甚至千兆网络的大量应用,IDS技术发展的速度已经远远落后于网络速度的发展。2.如何减少IDS的误报和漏报,提高其安全性和准确性【3 71 误报就是把不是入侵的行为当成入侵,而漏报是没有报告真正的入侵行为。基于模式 匹配分析方法的IDS,由于每天都有新的攻击方法产生和新漏洞发布,而攻击特征库不能 及时更新,这容易造成IDS漏报。而基于异常发现的DS,必须当系统运行时的数值超过 J下常阈值,才认为受到攻击,易导致其较高的漏报率。另外,大多IDS是基于单包检查的, 如果没有充分的协议分析,则无法识别伪装或变形的网络攻击,易造成大量漏报和误报。 3.如何提高IDS的互动性,从而提高整个系统的安全性能【38l 在大型网络中,网络的不同部分可能使用了多种入侵检测系统,还有防火墙、漏洞扫 描等其他类别的安全设备,这些入侵检测系统之间以及IDS和其他安全组件之间交换信13 西安理工大学硕士学位论文 息,共同协作来发现攻击,做出响应并阻止攻击是关系整个系统安全性的重要因素。有效 的整合各种资源来达到安全目的,也是IDS研究的重要课题。 4.IDS自身的安全【39】IDS程序本身的健壮性是IDS系统好坏的重要指标。IDS的健壮性体现在两个方面:一是程序本身在各种网络环境下都能正常工作。二是程序各个模块之间的通信能够不被破坏,不可仿冒。这需要在模块间的通信过程中引入加密和认证的机制,模块间的通信也需要有良好的恢复重传机制。 由以上面临的众多问题可知,IDS最需要解决的是检测的准确性、检测引擎和检测方 法的性能问题,从而提高检测速度,解决误报和漏报问题。这都离不开新技术的支撑,IDS 体系结构的研究、安全通信机制的研究、新检测技术的研究、响应策略与恢复的研究以及协作式入侵检测技术的研究将是未来的研究重点。2.7本章小结本章首先概述了入侵检测系统的概念,IDS的标准与结构,IDS的发展与分类,然后介绍了Snort的功能、发展、安装与使用,最后指出了DS及Snort面临的问题和发展趋势。14 3Snort入侵检测系统分析3Snort入侵检测系统分析Snort是一个成熟的、被广泛使用的入侵检测系统。它是开源、免费的轻量级入侵检测软件【401。它由c语言编写,目Ij{『(2008年1月)其最高的稳定版本是2.8。本章将对Snort2.40的系统结构作详细分析,并对其性能展开讨论。3.1 Snort2.40系统结构Snort使用libpcap作为数据包捕获工具来获取网络上所有的数据包,其对应的 Windows版本称为WinPcap。今后Snort还可能使用更直接的捕获方式以提高性能。 Snort主要由两大部分组成,一是Snort可执行文件,二是Snort规则。 Snort可执行文件能工作在两种模式下,一是Sniffer(包嗅探)模式,二是IDS(入 侵检测)模式。当它工作在Sniffer模式下时,可以实时捕获网络中的所有数据,并将数 据显示在屏幕或记录在同志文件中,当Snort工作在IDS模式下时,系统可以实时检测网 络中存在的攻击,予以报警或通知防火墙。首先通过配置文件确定应该加载哪些预处理插 件和规则库。通过“规则”判断数据包中是否含有恶意内容。Snort规则是一种简单的描 述语言,每一种攻击特征都可以使用一条或多条规则描述。Snort采取了全新的方式组织 这些规则,并且同时使用了多种匹配算法,使其能在较高速的网络环境下正常工作,后面将详细阐述这些内容。Snort工作在入侵检测模式下时,如图3.1所示,由主控模块、解码模块、预处理模 块、检测模块、输出模块几部分组成。主控模块首先完成各类插件的初始化工作,设置运 行参数,然后读取并解析规则文件,最终进入抓包和检测流程。解码模块完成对网络包的 解码,并把解码后的内容保存在全局结构Packet中。预处理模块完成一些主控模块难以 完成的解码和检测,主要有分片重组、代码转换、异常检测等工作。检测模块是Snort的 核心,它包含了对数据包内容的各项检测。输出模块负责将检测结果报告给用户,它支持 多种输出方式,如屏幕、文件、数据库和SMB信息。 当一个数据包被Snort接收时,首先进入预处理过程,完成基本的IP包格式校验、P 分片重组和解码工作后,数据包进入核心检测流程,Snort依次对包头和负载内容与预定 义的入侵特征进行匹配。匹配成功意味着发现入侵,这时,输出模块将执行与之相关的记录和报警工作。15 西安理工大学硕士学位论文l读入配置l数据包一多模式匹配。 ●上1◆上事件验证规则测试Il加载插件一解码和预处理I上读入规则上规则优化和选上事件队列l..,事件队列l,JL上I规则分类择j内容匹配土―厂/…,,,’‘。。。‘‘。。、上‘/77尺报警)L。一―/I规则编译非内容匹配F’-l-l件事件分析器=数据-I~数据库一图3-1 Snort在IDS模式下的工作流程Fig.3-1Working How of Snortunder IDS mode3.1.1Snort规则Snort规则是Snort入侵检测系统的重要组成部分。规则集是Snort的攻击特征库,每 条规则都对应一条攻击特征,Snort通过它来识别攻击行为。每一条规则包括两个部分:规则头部和规则选项。规则头部可以看作是一个七元组,由动作、协议、源m地址和源端口号、方向操作符、目的P地址和目的端口号构成。动作是指当Snort发现从网络中获取的数据包与事先定义好的规则相匹配时,下一步所要进行的处理方式。Snort支持alert、log、pass、activate、dynamic、drop、reject等动作,最常见的动作是alert(报警)。 规则选项由选项关键字和选项内容组成,关键字和选项间由冒号隔开,各关键字之间 由分号隔开。规则选项包含了入侵特征串(content)、URI请求特征串(URIContent)、告 警内容(msg)、负载长度(dsize)、类型(classtype)、严重程度(priority)、版本(rev) 及与模式匹配相关的重要信息(nocase、offset、depth等),各选项间以分号分隔。每个选 项由冒号分隔为选项关键字和选项值两部分。规则选项构成了Snort检测引擎的核心,它 们非常容易使用,同时又很强大和容易扩展。 content和uricontent是两个最重要的规则选项,分别表示在数据包负载和URI请求中 搜索某个特征字符串。该字符串可以是一段普通的文本,也可以是一串16迸制字符,前 后用管道符“I”分隔,如content:¨pAC91588167El”。这两个关键字都可以在规则中出现一次或多次。16 ―――――――――――――――――――――――――――――――――――――――――――――_―――――――――――――――――一一一 一..!!翌竺!!全堡丝型墨丝坌堑.――cmd?exeaccess”;作为开源的基于网络的入侵检测系统,Snort规则得到了人们广泛的认同,典型的 Snort规则示例如下:alert tcp anyany_>¥HTTP SERVER80(msg:”WEB_IISflow:to server.established;uricontent:”cmd.exe”;nocase;classtype:web―application‘attack; sid:1 002;rev:7;)示例中的规则对所有发往HTTP服务器80端口的TCP数据包进行检查,当发现URL 请求中包含大小写无关的字符串“cmd.exe’’时,给出“WEB―IIS信息。 目前Snort的默认规则约有4300条,按照攻击方式不同,分为backdoor、bad_traffic、cmd.exe access”的告警cgi-bin、DDoS、dns、exploit、卸、icmp、mysql、netbios、rpc、sql、web?attacks、web?iis等近60类。 当Snort运行在IDS状态下时,通过配置文件决定使用哪些规则。Snort运行机制如 图3―2所示。用户还可以在配置文件中定义变量(如IP地址)、指定使用哪些插件、采取 怎样的输出方式和报警方式等。典型的配置文件如下:图3-2 Snort运行结构图Fig.3―2 Architecture of Snort Main Program17 西安理工大学硕士学位论文3.1.2Snort的规则解析规则是Snort系统重要的组成部分。一个入侵检测系统的检测性能,除了与检测方法 密切相关外,还与检测规则的设置和数量密切相关。检测规则的数量越多,一方面意味着 IDS能够检测出更多的入侵,另一方面意味着同一个检测对象,可能需要经过更多的处理 步骤,才能确定是否与入侵特征相关。面对数千条入侵规则,Snort首先要做的是把文本 形式的规则文件读入内存中并以特定的结构存储。如图3.3所示。厘雯霎冈雯雯亘贺重雯王砸雪RlSHOME/匹碎臣卦,―Ale―rt―Pa―ss I__--{回 溉一protoe.ol:TCP lSource Any I SOUrP...e Poct:^nv I Dl,stlnatoon:d州。RuleListSDestma而nNET Port:80o,2、1iil谶羔 蒸翌,~¨丝只/\、妻瓣一|~Il 二豢一图3.3 Snort规则树Fig.3―3 Rule Trees of Snort规则树以如下方式产生:按照反应类型的不同,规则被分为activation、dynamic、alert、 pass、log等几大类。每类中包含了TCP、UDP、ICMP等协议类型。 规则树中有两类结点:规则头结点(RuleTreeNode,简称RTN)和规则选项结点 (RuleOptionNode,简称OTN)。RTN中除了保存规则头的信息外,还分别保存了下一个 RTN(横向)和下一个OTN结点(纵向)的地址。OTN中主要保存规则选项信息,一个 OTN与一条规则是对应的,此外它还保存了一组用于处理和该OTN有关的函数列表,以 及下一个OTN结点。 Snort的parser.c负责规则解析。它根据配置文件打开相应的规则库文件,每次读取一 条规则。首先提取规则头,并与已存在的RTN比较,如果未找到与当前规则头完全相符 的RTN,则在RTN链尾追加一个新的RTN结点,随后解析规则选项,形成OTN结点,并将该结点挂接到刚刚新建的RTN结点上。如果找到与当前规则头相符的RTN,则将规18 3Snort入侵检测系统分析则选项解析后形成的OTN结点添加到当前RTN结点所对应OTN链的术尾。 当所有规则解析完毕后,各条规则便按照规则头分类,形成规则头节点(RTN)。所 有规则头相同的规则,其规则选项被链接到相应的规则头结点下,形成规则选项链(OTN)。存放规则头结点(R1N)的数据结构如下:typedef struct―RuleTreeN0de{RuleFpList木rule―func; int head―.node―.number; int type: IpAddrSet木sip; IpAddrSet宰dip; int not_sp_flag; u_short hsp; u_short lsp; int not_dp_flag;U/宰用于匹配的函数奉, ,木规则头结点ID*/ /奉协议类型宰, /木源地址木, ,木目的地址宰, /宰是否为“非”端口宰, ,木源端u结束值木, /木源端口起始值木, /木足否为“非”端口拳, ,掌目的端口结束值宰, /木目的端u起始值搴/ /宰控制标识木/ ,幸指向下一个RTN木/ /宰指向OTN链事/ ,掌指向规则树的根结点窜,short hdp;U..short Idp; U..int32_t flags;struct―RuleTreeNode搴right; OptTreeNode木down; struct―ListHead掌listhead; ,RuIeTreeNode:早期版本的Snort是这样进行数据包匹配工作的:当数据包到达时,首先寻找与之匹 配的规则头结点(沿图中矩形结点横向搜索),找到对应于数据包的结点后,与每一个规则选项结点匹配(沿图中圆角矩形结点纵向搜索)。采用这样的方式进行数据匹配工作,效率是较为低下的。首先,每个数据包到达时, 都必须找到相应的规则头结点。由于规则头结点在内存中以链表形式保存,查询的代价相 对较大。Snort中最多约有280个规则头结点,若采用该算法,每个数据包需要查询大约 140次才能找到所属的规则头。其次,每个规则头结点下链接的规则选项结点数量差异较 大。一些常用根结点(如80,135,445等端口)下的规则选项结点大约有200个。数据 包与这么多OTN选项结点一一匹配,耗费了相当长的时间。存放规则选项结点(OTN)的数据结构如下:19 西安理工大学硕士学位论文3.1.3Snort的新特性:规则索引Snort自2.0版后引入了快速检测引擎(FPDE),重写了部分插件,使系统性能显著 提升。FPDE提出了一种新的创建规则索引的思路,大大提高了系统性能。 FPDE事实上是对动态最优决策树的静态实现14¨。入侵检测系统中,常有很多属性需 要匹配,如地址、协议、端口、URI、选项、大小、负载内容等等。匹配这些属性所需要 的时间是不同的,所以不同的匹配顺序可能带来性能的明显差异。例如检测端口仅仅需要 一次运算,而检测负载的内容则需要复杂的比较。我们希望通过每一次检测都能减少需要 继续比较的规则的数量,即尽量减少费时的操作。对Snort规则进行的统计分析表明,首 先应该对端口进行分类,因为它可以迅速把规则集从数千个降到数十个甚至是几个。 某些入侵检测系统还可以根据接收到数据包中各属性的比例不同,动态地调整各属性 的检测顺序,实现动态决策。但由于某些属性之间是有关联的,这会增加系统的复杂性, 却无法带来性能的明显提升,还需要考虑某些攻击。Snort采用固定的优化顺序对包检测。 a.三层规则索引结构 Snort初始化时,会根据配置文件的要求加载相应的规则并生成规则树。随后,Snon 对规则进行三层分类,分类层次从上至下依次为:协议映射类(P饼ⅡRULE MAP)、源 /目标端口集合类(PORT―GROUPs)、内容集合类(PORT―GROUP)。如图3.4所示。图3.4 Snort规则索引图Fig.3―4 Index of Snort Rules20 3Snort入侵检测系统分析b.端口集合类对不同的协议,Snort都为它们建立源/目标端口规则映射PORT―RULE―MAP,它的 数据结构如下:typedef struct.( int prmNumDstRules; int prmNumSrcRules; int int int prmNumGenericRules; prmNumDstGroups; prmNumSrcGroups;,卑目的规则数量宰, /木源规则数量宰/ /木通用规则数量掌/ /木目的规则(端口)集合数量奉, ,木源规则(端u)集合数量掌/ ,木源规则端u集合类木/ /幸目的规则端口集合类宰, ,毒通用规则集合类搴,PORT_GROUP木prmSrcPort[MAX―PORTS]; PORlLGROUP掌prmDstPort[MAX―PORTS];PORT_GROUP木prmGeneric; 'PORT RULE MAP:该映射中的prmSrcPort、prmDstPort和prmGeneric这三个数组分别用于存放源端口 规则集、目标端口规则集与通用规则集。各规则依据下述的分类方法,加入不同的规则集合中:①如果源端口值为特定值i,目的端口为ANY,则将该规则加入源端口集 prmSrcPort[i]qb;如果目的端口值为特定值f,源端口为ANY,则将该规则加入到目的端口集prmDstPort[i】中。②如果源端口值为特定值f,目的端口值为特定值,,则将该规则同时加入源端口集 prmSrcPort[i]和目的端口集prmDstPort[/l中。 ③如果目的端口和源端口均为ANY,则该规则加入通用集(prmGeneric)中。 ④如果规则中出现端口值求反或指定范围的情况,视其端口值为ANY。 将所有通用集合中的规则加入每个非空的prmDstPort[i]和prmSrcPort[i]d尸,其中f∈ 【0,65535】。通用集合(prmGeneric)将不再参与匹配工作。c.内容集合类为了能更有效地进行匹配操作,Snon根据内容类别不同进行分类。分类方法如下: ①规则中若含有content关键字,即需要对负载内容作匹配的规则,则加入内容规则集pgHead=②规则中若含有uricontent关键字,即需要对U砒请求作匹配的规则,则加入UPd规则集pgUfiHead;③规则中不含有上述关键字的,加入无内容规则集pgHeadNC。其它规则选项编译为规则选项(oTN)链表,保存在相应的PORT GROUP中,它的 数据结构如下:2l 西安理工大学硕士学位论文typedef struct.【RULE―NODE搴pgHead,曩pgTail,宰pgCur,RULE―NODE掌pgHeadNC,掌pgTailNC,木pgCurNC; RULE_NODE宰pgUriHead,木pgUriTail,车pgUriCur;/木内容规则集宰/ ,皋无内容规则集木/ /木URI规则集宰, /章内容规则集的编译结果木/ /木URI规则集的编译结果宰/,辜规则编译后将结果存放在下面两块空间中木,void车PgPatData: void掌pgPatDataU ri;}PORT_GROUP;其中,RULE NODE是OTN与RTN结构的简单封装。3。1。4Snort的新特性:多模式匹配基于误用的入侵检测系统,归根到底是搜索数据包中是否含有特定内容。因此,模式 匹配性能的优劣直接影响入侵检测系统的性能。目前最著名的快速模式匹配算法是 Boyer-Moore(BM)算法。 然而,与一般的单一模式匹配不同,IDS中的模式数量众多,内容相对固定。这要求 IDS最好能一次完成多个模式匹配操作,而不是逐一进行模式匹配。BM算法一次仅能对一个字符串进行匹配,显然这不能满足Snort对性能的要求。必须对BM算法进行改进, 使之能同时匹配一个或多个模式,是入侵检测系统检测模块的难点。 Aho.Corasick(AC)、Karp―Rabin(KR)和WuMan[421算法都是较为著名的多模式匹配算 法,由于AC和KR算法有一些弱点,WuMan成为目前Snort的首选算法。在3.1.3中构造的三层索引后,能使每个包到达时都能找到一组对应的模式与之匹配。由于在系统运行时,模式集合是固定的,因此Snort在初始化时就编译了这些模式集。Snort对每个端121下的模式进行编译,将编译的结果放在内容集合类的pgPatData和 pgPatDataUri中。Snort根据每个内容集合类中模式数量的不同选择不同的算法。Snort对模式数量小于5的集合采用BM算法,否则采用WuMan等算法。WuMan算法继承了BM算法的某些 思想,但比BM算法复杂得多,为节省空间,Snort对它进行了适当的修改。算法如下:a.模式的移动:Hash值与Sh讯表WuMan的基本思路是将多个模式同时移动尽可能大的距离。如图3―5所示,设P为 多个模式串,r为欲匹配的文本,小为最短模式的长度(图中为P4),T的最末端两个字 节为x1.K2。 首先将模式P的最短模式右端与xlx2对齐,并将其与文本r的最后两个字符进行比较。①若这两个字符未出现在P中任何一个模式中,则将P右移一段距离脚.1。②若这两个字符出现在P中,则将尸右移一段距离。设g为p中所有出现xI娩位置的最大值(即 3Snort入侵检测系统分析P●23456Il要二:二二二二l;二=二二=二]图3-5模式的移动Fig.3-5 Movement of PatcemsT最右端xlx2的位置,图中位于P5),则右移距离为朋.q。对于已确定的多模式串P,针对每个不同的xlx2,其移动距离是确定的。使用(1) 中的方法预先计算每个可能的移动距离,即可在匹配过程中通过查表的方式得到尸的移 动距离。为此,Snort将每一种可能的XlX2对应的移动距离预运算后保存在Shift数组中, 数组的下标为xtx2的哈希值。每次移动操作时,计算Hash(xl,x2)t!P可得到xlx2对应的移 动距离Shift[Hash(xl,娩)】。此处采用的Hash算法是十分简单的,不会增加额外的开销。 在原始的WuMan算法中,还可以将模式的比较长度增加至3,即比较文本r和模式 JP的最后三个字符。由于算法需要的空间太大,Snort中没有采用。另外,Snort 2.40中将 P的左端与r对齐,并与r左端的前两个字符进行比较,其结果是完全相同的。 b.前缀索引:Hash值与前缀索引(Prefix Index)表 如果Shift[Hash(xl,规)】不为O,就意味着xlx2与某个Pi匹配,但无法得知到底是哪 个只。为了避免r中的文本与P一个个地比较,需建立一张前缀索引表Prefix[Hash(xl, 娩)】,用于存放所有含有xlx2的只。只是按其前两个字符的Hash值排序的。这样,对于 特定的Xlx2,计算Hash值,就可以直接找到对应的一组模式只。见表3.1。 WuMan算法还要求维护一张后缀表,作为发生前缀冲突时的索引,它与前缀索引表 的建立方式完全相同。在Snort中,同一个端口集合下的模式数量一般不会超过数百条, 前缀冲突的可能性并不大。因此,Snort当发生前缀冲突时,Snort使用一种类似BM的算 法,从右向左的匹配算法对每个模式进行匹配。c.搜索算法①根据文本r中后两个位置(图中的Xlx2)的值,通过Shift表确定模式应该移动的 距离,直到移动到一个可能的匹配项出现。 ②检查前缀索引中是否含有与当前文本r的前缀(图中的tlt2)相同的模式,若没有 跳转至④。 ③使用从右向左的方式,比较每一个模式只是否与当前文本匹配。 ④将模式P向右移动一个字符,并继续进行搜索操作。 上述过程循环往复,直至最终完成匹配操作。 西安理工大学硕士学位论文表3.1 Hash值与P的对应关系Table 3―1 The corresponding relationships of Hash Values and PHash(xl,规)OHash值为Hash(xl,规)的PiP0 PI1B23P3PIPsP6655363.2Snort插件Snort结构的可扩展性是非常强大的,插件结构令系统具有极大的灵活性。Snort的插件分为三类:预处理插件、检测插件和输出插件。 预处理插件针对当前捕获的包进行预处理,比如初步的解码、重组工作,这些工作可 以把数据包从原始形态转换成一种易于分析的模式。编写预处理插件有相应的模板,编写者不需要对Snort系统的其它部分有额外的理解。 检测插件用于大多数关键字的检查,如ttl、pcre、content、uricontent、byte jump等, 当Snort规则中出现新的关键字时,只需在检测插件中添加相应的文件即可。 输出插件用于各类场合的输入,如输出到屏幕、日志和不同的数据库,甚至通知防火墙。3.2.1Snort最新插件介绍Portscan:端口扫描是黑客攻击的前奏,发现端口扫描应引起管理员的重视。端口扫 描预处理器一方面可以记录来自某个IP地址的端口扫描的开始和结束,另一方面可以把 扫描类型、目的地址和端口等信息全部记录下来。端口扫描有多种方式,Snort目前可以发现TCP、UDP、FIN、SYNFIN等多种扫描。使用第三方的SPADE异常检测引擎,还可以发现更多种类的隐蔽扫描。 Stream4:该预处理器提供了TCP流重组和状态分析的功能。在2.30之前的版本中,该插件的流重组能力不够强大,打开该插件后可能出现性能明显下降、丢包率剧增的情况, 3Snort入侵检测系统分析成为黑客攻击的目标。现在,它能同时处理256000个并发连接,基本满足了应用的需要。 Fra93:该预处理器用于Ⅲ包分片的重组。它使用了最新版本Linux中的部分实现。 初步测试表明,它要比Fra92快250%。它使用了操作系统对口栈的处理模型,因此能最 大程度地避免精心设计的m碎片逃避IDS的检测。Httplnspect(原HTTP Decode):对Http URL请求中经编码的字符进行解码,这可以躲过IDS的检测,也可能逃过操作系统的检查,造成漏洞。IIS和apache等著名Web服 务器都出现过此类情况,它可能直接造成服务被攻陷。现在,这部分代码经过了严格的检 查和详细分类,能完成ASCII、UTF.8、Unicode、多次编码等类型的解码工作。3.3关于Snort性能的讨论Snort入侵检测系统由几个主要部分组成:当一个数据包到达时,首先由libpcap负责 抓包。随后,包内容被解析,存放在Packet结构中。预处理插件将包作进一步处理,然 后进入核心的规则匹配工作,最后事件日志模块将结果写入数据库或显示给用户。 负责抓包的libpcap是一个用户态驱动程序,当收到包时,需要将包从内核内存复制 一份到用户内存区。这大大影响了抓包性能。目前大多数商业IDS都采用的内核级驱动 程序抓包【431,如果把使用普通libpcap的Snort系统直接与这些系统比较,是极不公平的。Snon可以使用MMAPed pcap[44】来代替libpcap,这是一个特殊版本的libpcap,其接121与普通的libpcap相同。但MMAPed pcap直接读取内核内存,减少了数据包在Snort读取之 前被复制的次数。另外,提高抓包性能的另一个方法是采用网络处理能力较高的操作系统,如FreeBSD。包内容解析采用了与Unix系统相同的算法,应该说这个模块的性能已经发挥到极致, 从最新发布的beta版中可以看出,今后Snort将改变原有的Packet结构,为支持IPv6做 准备。 每个包到达后,都必须经过数个预处理插件,因此预处理插件的性能对Snon的整体 性能至关重要。所有插件中最为复杂的是负责TCP流重组的stream4插件。在遭受某些攻 击类型的攻击时下,stream4插件成为系统瓶颈【451。目前SnoIrt的流重组能力已经比过去 强大了1000倍。 规则匹配一直是最受关注的部分。Snort 1.x受到诟病最多的是规则匹配的效率较为低 下,不能满足100M或更高速的网络环境。自Snort 2.0发布以后,引入了WM和AC算 法,模式匹配的效率有了明显提高,在最好的情况下,其匹配性能是1.x版本的18倍。 对Snoa早期版本的研究表明,出现大量小数据包或非TCP包时,规则头匹配耗时严重; 出现大量HTTP等TCP流量时,内容匹配成为系统瓶颈【461。这两个问题目前已有明显改 善。在没有更优秀的模式匹配理论出现之前,IDS在这方面的性能提高空间已经不大。 当遭受包含大量数据包(如DDoS)攻击时,事件和同志模块成为系统瓶颈。Snort 西安理工大学硕士学位论文支持Alert―fast、Alert―full等多种不同输出方式,当有过多的报警信息需要写入磁盘或数据时,同志模块将不堪重负。使用mucus、stick这类攻击包生成工具可以在短时间内塞满事件数据库,使系统疲于应付大量IO操作,直至崩溃。 作为一个软件IDS,某些方面的性能瓶颈是难以克服的。将IDS移植到嵌入式系统, 使用FPGA仆m/ASIC结合的方式设计硬件入侵检测系统前景十分广阔。3.4本章小结本章分析了著名的开源入侵检测系统Snort。在简要介绍了Snort系统的原理后,对 新版Snort中最为重要的规则解析模块和匹配算法作了详细的研究和分析。Snort现在使 用了全新的协议分类机制和规则索引,并采用了改进的Wu.Man多模式匹配算法和BM 算法。最后,还对Snort的插件进行了介绍,对插件与Snort性能的关系进行了讨论。这 些分析对今后修改和优化Snort系统奠定了基础。 4基于活跃规则集的Snort高效规则匹配方法4基于活跃规则集的Snort高效规则匹配方法根据改进Snort性能的方法,围绕规则优化的思路,本章提出了基于活跃规则集的 Snort规则匹配方法,下面将详细阐述这种方法。4.1?Snort规则匹配的机制Snort规则包含两个逻辑部分内容:规则头和规则选项。规则头对应于规则树结点RTN(Rule TreeNode),包含执行的动作、使用的协议、源(目的)IP地址和掩码、端口信Tree息及数据流向等。规则选项OTN(Optional(content)项。Node)包含一些报警信息(msg)、匹配内容在Snort 2.0版本以前,Snort初始化并解析规则时,分别生成TCP、IP、ICMP、UDP四个不同的规则树,每一个规则树包含独立的三维链表:RTN、OTN和指向匹配函数的 指针。当Snort捕获到一个数据包时,按照协议类型转入对应RTN;然后与RTN结点依次 进行串行匹配,如果规则头不完全匹配,则转向下一个RTN,否则,如果采用单模式匹配算法,则向下与OTN结点进行串行匹配;Snort 2.0以后开始采用多模式匹配算法,如果采用多模式匹配算法,则向下与OTN结点进行并行匹配。每个OTN结点包含一条规则所对 应的全部选项,同时包含一组函数指针,用来实现对这些选项的匹配操作。当数据包头和 OTN也完全匹配时,就触发一个规则,产生报警,然后进行下一个数据包的检查f47】。4.2提高Snort规则匹配速度的方法提高Snort检测性能可以从下面三个角度来进行考虑: (1)减少需要检测的网络流量,即通过对流量数据进行分析,只选择那些可能具有攻 击特征网络流量进行匹配;主要进行协议流分析,协议流是指在应用层协议中的客户端和 服务器端的通讯。客户到服务器的数据流称之为客户流;服务器到客户的数据流称之为服 务器流。协议流分析是指根据应用层协议的特征,将网络上的数据流分成客户流和服务器流。(2)规则优化,即通过一定的方式来对规则文件进行优化,减少数据所要匹配的规则 条数;规则优化的主要思想是通过将Snort规则集进行一定的优化,使得可以在数据包 进行检测的时候,迅速定位到一个较小的规则集合中进行检测。 (3)采用效率更高的模式匹配算法,减少模式匹配所花费的时间。模式匹配算法比较 成熟,且相对于前面介绍的协议流分析和规则优化而言,对提高Snort检测性能的效果不十分明显。文献[48]基于构造出更小的规则集【48】来提高Snort性能的思想,提出了一种根据网络流27 西安理工大学硕士学位论文量和规则特点来优化组织Snort规则的方法,取得了良好的效果,但实现起来比较复杂; 文献[49]用决策树来组织规则,提出了一种新的检测引擎Snort―ng【491,缺点是仍然是一种 静态的改进方法;文献[50]则是根据实验指出随着规则数量的增加,Snon 2.0在处理时间和内存消耗方面都明显优于snort―n950】。文献[511和【52】充分考虑了网络攻击的阶段集中性,提出根据动态选项索引排序规则的方法,从而尽快匹配当前活跃的攻击【5l,52】,缺点是 这种实现方法没有考虑多模式匹配算法的情形。4.3基于活跃规则集的规则匹配方法根据Snort的新特性,考虑到这样一个事实,即尽管Snort的规则数越来越多,但在一 定时间内只有一小部分规则是活跃的,大部分规则都不会触发。基于这样的思想,我们提 出一种新的规则分类组织排序方法。我们的方法通过一个反映规则被触发次数的入侵匹配 频度变量把每个端口下的规则集分成活跃规则集与不活跃规则集,活跃规则集是匹配频度 不为零的规则集合,不活跃规则集是匹配频度为零的规则集合。并充分考虑了网络攻击的 阶段集中性。由于我们的方法构造出了更小更优的规则集,所以无论对单模式匹配还是多 模式匹配,基于活跃规则集的规则匹配方法都是适应的,都会带来性能的提升。4.3.1OptGroupNode选项分组结构的建立为了划分活跃规则集与不活跃规则集,我们首先在原来Snort的每个RULE―NODE下增 加一个OptGroupNode选项结点链(见图4.1),选项链由2个结点组成,OptGroupNode选项 结点包括三个内容:flags的值(可赋值为O或1),一个向右的指针(指向下一个 OptGroupNode选项结点)以及一个向下的指针(指向选项链)。 OptGroupNode选项结点数据结构描述如下:typedef struct OptGroupNode{Int flags;struct OptGroupNode奉fight;|鼻ptr to the next OptGroupNode in the list^| OptTreeNode奉down; 净list of rule options to associate with this rule node鼻|)OptGroupNode;28 4基于活跃规则集的Snort高效规则匹配方法图4―1增力IlOptGroupNode选项链后的规则树示意图Fig.4―1 Regular tree schematic drawing after introducing OptGroupNode4.3.2OptlndexNode选项索引结构的建立我们为每一条规则选项建立一个索弓llndex,在Snort的规则解析函数ParseRulesFile() 中为每一个OTN生成一个指向该选项结点的指针OptlndexNode,并将它与规则头相连,形成“选项索引链表",如图4.2所示。 选项索引结构为:typedef struct OptlndexNode{int sum;/?match’S frequentness木/structOptTreeNode木otn_addr;/幸poimto the OTN node?/street OptIndexNode幸next;/?point to the next OIN node?/structOptlndexNode+former;/+poimto theformer OIN node?/)OptlndexNode;图4-2增士Jl:lOptlndexNode索引后的规则树示意图Fig.4-2 Regular tree schematic drawing after introducing OptlndexNode 西安理工大学硕士学位论文 因为增加了lndex选项链,OptTreeNode.>next就成为冗余的指针,考虑到初始化的方便,我们仍然保留此指针,它也仅在初始化时提供链接,同时为了能够记录某规则的匹配频度(即修改OptIndexNode.sum),需在OptTreeNode中增加OptTreeNode->oin_addr指针。4.3.3规则树的建立及规则匹配我们把每个端口下的规则分成2组,一组为活跃规则集(fags值为O),另一组为不活跃 规则集(flags值为1)。在Snort中,函数ParseRuleOptions(

我要回帖

更多关于 如何应对arp攻击 的文章

 

随机推荐