ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:1.43MB ,
资源ID:7210670      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7210670.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Snort入侵检测系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Snort入侵检测系统.docx

1、Snort入侵检测系统 甘肃政法学院入侵检测课程设计题 目 Snort入侵检测系统 计算机科学学院 计算机科学与技术 专业 09 级 计算科学与技术本科 班学 号: 200981010118 姓 名:_刘利刚_指导教师: 金 涛 成 绩:_完成时间:_2011 年 _12 月 摘要:入侵检测已经日益成为网络安全中不可或缺的一部分,它为网络提供了一个防御层,在这一层中我们可以预先定义可能的入侵行为以便对网络活动进行监视,当发现在可能的入侵行为时就会报警通知系统管理员。现在计算机安全市场上有许多入侵检测系统,但它们都面临一个共同的问题,就是难于配置而且一般价格不菲,Snort相对于它们来说在这方面

2、有相当大的优势。 关键词:IDS;入侵检测系统;Snort Abstract: Intrusion Detection System (IDS) is an important part of network security architecture. They provide a layer of defense, which monitors network traffic for predefined suspicious activity, and alert system administrators when potential hostile traffic is detect

3、ed. There are many commercial Intrusion Detection Systems nowadays, but almost all of them have the commonalities that they share such as complex deployment and high monetary cost. Snort has more advantage than them. Key words: IDS;Intrusion Detection System;Snort.第1章 绪论 snort是一个免费的基于libpcap的轻量级网络入侵

4、检测系统。它能够跨系统平台操作,自带轻量级的入侵检测工具可以用于监视小型的TCP/IP网络,在进行网络监视时snort能够把网络数据和规则进行模式匹配,从而检测出可能的入侵企图,同时它也可以使用SPADE插件,使用统计学方法对网络数据进行异常检测,这些强大的检测功能为网络管理员对于入侵行为做出适当的反击提供了足够的信息。snort使用一种易于扩展的模块化体系结构,开发人员可以加入自己编写的模块来扩展snort的功能。这些模块包括:HTTP解码插件、TCP数据流重组插件、端口扫描检测插件、FLEXRESP插件以及各种日志输入插件等。同时snort还是一个自由、简洁、快速、易于扩展的入侵检测系统,

5、已经被移植到了各种UNIX平台和Win98,Win2000上。它也是目前安全领域中,最活跃的开放源码工程之一。在Snort.org上几乎每天都提供了最新的规则库以供下载,由于snort本身是自由的源码开放工程所以在使用snort时除了必要的硬件外软件上基本上不需要有任何额外的开销。这相对于少则上千多则上万的商业入侵检测系统来说,无疑是最好的替代产品之一。本文主要论述了snort的背景知识以及它的基于规则的入侵检测机制,同时对于如何使用也作了概括说明。第2章 Snort入侵检测系统概述2.1 入侵检测技术简介 入侵检测就是一个监视计算机系统或者网络上发生的事件,然后对其进行安全分析的过程。它可以

6、用来发现外部攻击与合法用户滥用特权,根据用户的历史行为,基于用户的当前操作,完成对入侵的检测,记录入侵证据,为数据恢复和事故处理提供依据。入侵检测系统的原理如图2.1所示:图2.1 入侵检测的原理图大多数的入侵检测系统都可以被归入到基于主机、基于网络以及分布式三类。基于主机的入侵检测系统是一种早期的IDS设计模型,它主要设计用来监视单一的服务器,因为DNS、Email和web服务器是多数网络攻击的目标,这些攻击大约占据全部网络攻击事件的1/3以上,基于主机的入侵检测系统就是为了解决这些问题而设计的,它能够监视针对主机的活动(用户的命令、登录/退出过程,使用数据等等),它的特点就是针对性好而且,

7、效果明显,误报率低。基于网络的入侵检测系统是后于基于主机入侵检测系统而出现的,它主要用于集中用于监控通过网络互连的多个服务器和客户机,能够监视网络数据发现入侵或者攻击的蛛丝马迹。分布式IDS通过分布于各个节点的传感器或者代理对整个网络和主机环境进行监视,中心监视平台收集来自各个节点的信息监视这个网络流动的数据和入侵企图。 在入侵检测系统中,系统将用户的当前操作所产生的数据同用户的历史操作数据根据一定的算法进行检测,从而判断用户的当前操作是否是入侵行为,然后系统根据检测结果采取相应的行动。入侵检测的过程是一个机器(检测工具)与人(黑客)对抗的决策分析过程,其技术基础是基于知识的智能推理,需要用到

8、人工智能的相关技术。各种入侵检测系统使用的检测方法可以分为两类:基于特征码的检测方法和异常检测。使用基于特征码检测方法的系统从网络获得数据,然后从中发现以知的攻击特征。例如:在某些URL中包含一些奇怪的Unicode编码字符就是针对IIS Unicode缺陷的攻击特征。此外各种模式匹配技术的应用,提高了这种检测方法的精确性。使用异常检测的系统能够把获得的数据与一个基准进行比较,检测这些数据是否异常。现在,大量的统计学方法用于这个领域。2.2 Snort简介 snort是一个基于libpcap的轻量级网络入侵检测系统。根据snort.org,轻量级入侵检测系统是这样定义的:首先它能够方便地安装和

9、配置在网络的任何一个节点上,而且不会对网络运行产生太大的影响,同时轻量级入侵检测系统还应该具有跨系统平台操作,最小的系统要求以及易于部署和配置等特征,并且管理员能够利用它在短时间内通过修改配置进行实时的安全响应。Snort是一个典型的轻量级入侵检测系统,首先可以运行在多种操作系统平台,例如UNIX系列和Win9X,Win2000(需要libpcap for Win32的支持),与很多商业产品相比,它对操作系统的依赖性比较低。它的分发源码文件压缩包大约只有100KB,在一台一般性能的计算机上编译安装时大约只需几分钟的时间,另外配置激活也大约只需要十几分钟的时间,安装以后即便不对它进行维护也能长时

10、间稳定运行。其次用户可以根据自己的需要及时在短时间内调整检测策略。就检测攻击的种类来说,据最新的规则包文件snortrules-stable.tar.gz(Sep 4 02:15:18 2002)snort共有33类,1867条检测规则,其中包括对缓冲区溢出,端口扫描和CGI攻击等等。2.3 系统组成和处理流程系统组成和处理流程 图 2.3.1 Snort程序流程图 2.3.1 数据包捕获库基于网络的入侵检测系统需要捕获并分析所有传输到监控网卡的网络数据,这就需要包捕获技术,Snort通过两种机制来实现,其一是将网卡设置为混杂模式,另一方式则是利用Libpcap/Winpcap函数库从网卡捕获

11、网络数据包。数据包捕获函数库是一个独立的软件工具,能直接从网卡获取数据包。该函数库是由 Berkeley大学Lawrence Berkeley National Laboratory研究院开发,Libpcap支持所有基于可移植操作系统接口(Portable Operating System Interface of Unix,POSIX)的操作系统,如Linux、Unix等,后来为支持跨平台特性,又开发了Windows版本(http:/ www.winpca p.org),Windows下和Linux的函数调用几乎完全相同,Snort就是通过调用该库函数从网络设备上捕获数据包。 2.3.2 数

12、据包解码器数据包解码器主要是对各种协议栈上的数据包进行解析、预处理,以便提交给检测引擎进行规则匹配。解码器运行在各种协议栈之上,从数据链路层到传输层,最后到应用层,因为当前网络中的数据流速度很快,如何保障较高的速度是解码器子系统中的一个重点。目前,Snort解码器所支持的协议包括Ethernet、SLIP和PPP等。 2.3.3 预处理器预处理模块的作用是对当前截获的数据包进行预先处理,以便后续处理模块对数据包的处理操作。由于最大数据传输单元(MTU)限制及网络延迟等问题,路由器会对数据包进行分片处理。但是恶意攻击者也会故意发送经过软件加工过的数据包,以便把一个带有攻击性数据包分散到各个小的数

13、据包中,并有可能打乱数据包传输次序,分多次传输到目标主机。因此,对异常数据包的处理也是入侵检测系统的重要内容。预处理器主要包括以下功能:1)模拟TCP/IP堆栈功能的插件,如IP碎片重组、TCP流重组插件;2)各种解码插件:HTTP解码插件、Unicode解码插件、RPC解码插件、Telnet解码插件等;3)规则匹配无法进行攻击检测时所用的插件:端口扫描插件、Spade异常入侵检测插件、Bo检测插件、ARP欺骗检测插件等。根据各预处理插件文件名可对此插件功能做出推断。 2.3.4 检测引擎检测引擎是入侵检测系统的核心内容,Snort用一个二维链表存储它的检测规则,其中一维称为规则头,另一维为规

14、则选项。规则头中放置的是一些公共属性特征,而规则选项中放置的是一些入侵特征。Snort从配置文件读取规则文件的位置,并从规则文件读取规则,存储到二维链表中。Snort的检测就是二维规则链表和网络数据匹配的过程,一旦匹配成功则把检测结果输出到输出插件。为了提高检测速度,通常把最常用的源/目的IP地址和端口信息放在规则头链表中,而把一些独特的检测标志放在规则选项链表中。规则匹配查找采用递归的方法进行,检测机制只针对当前己经建立的链表选项进行检测,当数据包满足一个规则时,就会触发相应的操作。 图 2.3.4 检测规则的结构示意图 2.3.5 日志和报警子系统输出方式采用输出插件方式,输出插件使得Sn

15、ort在向用户提供格式化输出时更加灵活。输出插件在Snort的报警和记录子系统被调用时运行。日志和报警子系统可以在运行Snort的时候以命令行交互的方式进行选择,如果在运行时指定了命令行的输出开关,在Snort规则文件中指定的输出插件会被替代。现在可供选择的日志形式有三种,报警形式有六种。Snort可以把数据包以解码后的文本形式或者TCPDump的二进制形式进行记录第三章 Windows下Snort的集成式安装3.1 安装AppServ启动AppServ安装文件后,出现的设置服务器信息界面中,在Server Name中输入域名localhost;Administrators Email Add

16、ress 中输入邮箱地址:llg19891006。监听端口设为8080。图 3.1.1 AppServ安装初始界面图 3.1.2 设置服务器信息界面点击next,进入下一界面:在出现的界面中输入密码(enter root password):Character Sets and Collations选择GB 2312Simplified Chese,如图3.1.3所示:图3.1.3 安装MySQL Server Collations 然后单击Install,进入安装过程,安装完成后将C:Appservphp5目录下的php.ini-dist 文件改名为php.Ini,并启动Apache和MyS

17、ql。图 3.1.4 完成AppServer 的安装图3.1.5 php.ini-dist 文件改名为php.Ini(控制面板管理服务 确保Apache和MySql已启动) 图 3.1.6 服务中查看Apacha2.2和Mysql是否启动安装完成后可以查看(MySQL启动如下图)。 图 3.1.7 启动MySql在浏览器中输入http:/localhost :8080 出现,表示安装成功!图 3.1.8 AppServ是否安装成功 3.1.1 测试AppServ 首先查看控制面板/管理/服务,确保Apache和MySQL已经启动,然后,在浏览器中输入http:/localhost :8080/

18、phpinfo.php,(如下图所示)。图 3.1.1.1 了解php的一些信息最后打开浏览器,输入http:/localhost :8080/phpMyAdmin/index.php,(如下图所示)输入用户名root和密码,可以浏览数据库内容。图 3.1.1.2 浏览数据库内容 3.1.2 配置AppServ1) 编辑Apache服务器配置文件。打开Apache2.2conf文件中的httpd.conf,检查相应的一些值。2) 编辑phpMyAdmin中的关键文件。打开C:AppServwwwphpMyAdminlibraries目录下的config.default.php文件。1搜索cfg

19、PmaAbsoluteUri,设置phpMyAdmin的URL,如cfgPmaAbsoluteUri=http:/localhost:8080/phpmyadmin/,这里的phpMyadmin在默认的根目录下。2搜索cfgblowfish_secret,设定好root密码后,这里也要填写,如root的密码123,则设置cfgblowfish_secret)=123。3搜索cfgDefaultLang,将其设置为zh-gb2312;4搜索cfgServersiauth_type,默认的config是不安全的,推荐使用cook-ie,将其设置为cfgServersiauth_type=cooki

20、e。5搜索cfgDefaultCharset,将其设置为gb2312。3) 配置php.ini。打开C:WINDOWS|php.ini文件。4) 对Mysql进行修改。首先需要建立Snort运行必需的Snort 库和Snort_archive库。5) 使用C:AppServSnortschemas目录下的create_MySQL脚本建立Snort运行必需的数据表。在此,可以通过MySQL提示符下运行SQL语句show tables来检验配置的正确性。6) 必须在Appache服务器主机上建立ACID和Snort用户,并且设置权限和密码。修改的代码:mysql grant usage on *.

21、* to acidlocalhost identified by acidtest;mysql grant usage on *.* to snortlocalhost identified by snorttest;mysql grant select,insert,update,delete,create on *.* to snortlocalhost identified by snorttest;mysql grant select,insert,update,delete,create,alter on snort. * to acidlocalhost;mysql grant s

22、elect,insert on snort. * to snortlocalhost;mysql grant select,insert,update,delete,create,alter on snort_archive. * to acidlocalhost;mysql set password for snortlocahost=password(123);mysql set password for acidlocahost=password(123);3.2 安装Adodb,jpGraph和ACID1 )移动文件adodb到C:AppServphp5目录下,如图3.2.13.2.2

23、所示。图3.2.1 复制adodb文件 图 3.2.2 粘贴文件adodb在所示目录下2)移动文件jpgraph到C:AppServphp5目录下,如图3.2.33.2.4所示。图 3.2.3 复制文件jpgraph图 3.2.4 粘贴文件jpgraph到所示目录3)移动文件acid 到C:AppServwww目录下,如图3.2.53.2.6所示。图 3.2.5 复制文件acid图 3.2.6 粘贴文件acid到所示的目录4)修改C:AppServwwwacid中的 acid-conf.php文件$DBlib_path =C:AppServphp5adodb;$alert_dbname = s

24、nort;$alert_host = localhost;$alert_port = ;$alert_user = acid;$alert_password = 123;$archive_dbname = snort_archive;$archive_host = localhost;$archive_port = ;$archive_user = acid;$archive_password = 123;$ChartLib_path = C:AppServphp5jpggraphsrc;5)最后在浏览器中输入http:/localhost :8080/acid/acid-db-setup.p

25、hp 出现如下图所示界面。图 3.2.7 说明ACID安装成功3.3 配置Snort 1) 为防止参考配置文件和snort.conf在相同的目录中发生冲突,因此将主配置文件snort.conf的相对路径改为绝对路径进行调整, 修改C:snortetcsnort.conf 主要改绝对路径:include classification.configInclude reference.config改为绝对路径:然后换需要修改应用路径:3.4 phpMyAdmin测试Snort系统全部安装完成后,用户将可以使用root/acid/snort 3个账户IDdenglu phpMyAdmin。这3个用户能

26、否顺利登录关系到整个Snort系统能否顺利运行,因此必须进行检测。在浏览器中输入图 3.4.1 连接localhost输入cd c:snortbin图 3.4.2 进入DOS环境 再输入Snort c “c:SnortetcSnort.conf” l “c:Snortlog” d e X 并回车出现如图3.4.3所示的界面。图3.4.3所示的界面在地址栏中输入http:/127.0.0.1:8080/acid/acid_main.php地址后,出现如图3.4.5所示的界面。图 3.4.5 安装成功后的链接第四章 Snort的规则 Snort是基于规则的模式匹配的,这种体系结构非常灵活,用户可以

27、到http:/www.snort.org/dl/signatures/下载最新的规则,在snort.org上几乎每几天就会有新的规则被更新,同时用户也可以自己书写新的规则,Snort规则文件是一个ASCII文本文件,可以用常用的文本编辑器对其进行编辑。规则文件的内容由以 下几部分组成:a. 变量定义:在这里定义的变量可以在创建Snort规则时使用。b. Snort规则:在入侵检测时起作用的规则,这些规则应包括了总体的入侵检测策略。c. 预处理器:用来扩展Snort的功能。如用portscan来检测端口扫描。d. 包含文件Include Files:可以包括其它Snort规则文件。e. 输出模块

28、:Snort管理员通过它来指定记录日志和警告的输出。当Snort调用告警及日志子系统时会执行输出模块。所有Snort规则遵循一个非常简单的格式,这值得研究。首先是关于SID和Rec(修订)的注释。SID是Snort规则的ID(又叫做签名ID),Snort.org和Sourcefire保留了所有小于一百万的数字用于官方规则。如果你修改了一个规则,把SID加上一百万,这样可以与起源保持一致。如果你创建了一个新规则,使用起始于九百万的SID。只要有改变或者规则变更控制结束就要增加revision。 Snort.org规则与一个空的local.rules文件一起产生。不要使用它,以免下一次安装新规则时

29、你的习惯规则被这个空文件覆盖。创建一两个其他的文件,例如company_prod.rules和company_test.rules,并在snort.conf文件中添加内容说明。你可以在一个机器和接口上运行多于一个实例,这对测试规则有帮助,但是在一台老旧的PC和产品盒上同时运行测试更简单安全。第五章 Snort检测SQL注入和跨站脚本攻击 脚本攻击是最近网络上最疯狂的攻击方法了,很多服务器配置了先进的硬件防火墙、多层次的安全体系,可惜最后对80端口的SQL注入和跨站脚本攻击还是没有办法抵御,只能看着数据被恶意入侵者改的面目全非而毫无办法把你的Snort武装起来吧,用它来检测这样的攻击。 如果你想

30、对每一种可能的SQL注入进行检测,那么你只要检查任何SQL元字符的出现,如像单引号()、分号(;)和双减号(-)。同样的,一个监测跨站脚本攻击的很偏执的方法,就是查看HTML标记的尖括号()。但是,前述的方法可能会引起大量的误检。为了避免误检,我们就必须将过滤规则设置的尽可能的准确,即使这样,我们仍然不能保证不会产生误检,只能尽力而为了。 5.1 针对SQL注入的正则表达式 在为SQL注入选择正则表达式的时候,需要记住的是:攻击者除了可以从Cookie的域中进行攻击之外,还可以通过表单(Form)的Input输入框。所以,你在对输入进行逻辑验证的时候,还应该对来自用户的每种输入信息都要考虑到,

31、像表单域和Cookie信息都应该作为怀疑的对象。同样的,如果你发现许多针对单引号和分号的报警的时候,也可能是因为是由Web应用的Cookie中的信息引起的。因此,必须对特定的Web应用来评估这样的特殊符号。 如前所述,一个用来检测SQL注入攻击的最弱的正则表达式,就是通过检查上面提到的元字符(;-)。要检测这样的元字符,或者它们的16进制的等价表示,我们可以使用如下的正则表达式: /(%27)|()|(-)|(%23)|(#)/ix 这里,%27是单引号的16进制值,%23是#的16进制值。像单引号和短横杠都MSSQLServer和Oracle中的特殊字符,如果我们使用的是MySQL,还必须检测#的出现。这里需要说明的就是“”

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1