入侵检测课程设计.docx
- 文档编号:5022984
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:28
- 大小:1.86MB
入侵检测课程设计.docx
《入侵检测课程设计.docx》由会员分享,可在线阅读,更多相关《入侵检测课程设计.docx(28页珍藏版)》请在冰豆网上搜索。
入侵检测课程设计
计算机科学学院
入侵检测技术期末课程设计
题目snort入侵检测系统
学号xxx
班级xxx
姓名xxx
指导教师xxx
成绩
完成时间2012年6月
snort入侵检测系统
一、课程设计目的
(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设计模型,它主要设计用来监视单一的服务器,因为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是基于规则的模式匹配的,这种体系结构非常灵活,用户可以到http:
//www.snort.org/dl/signatures/下载最新的规则,在snort.org上几乎每几天就会有新的规则被更新,同时用户也可以自己书写新的规则,Snort规则文件是一个ASCII文本文件,可以用常用的文本编辑器对其进行编辑。
规则文件的内容由以下几部分组成:
●变量定义:
在这里定义的变量可以在创建Snort规则时使用。
●Snort规则:
在入侵检测时起作用的规则,这些规则应包括了总体的入侵检测策略。
●预处理器:
即插件,用来扩展Snort的功能。
如用portscan来检测端口扫描。
●包含文件IncludeFiles:
可以包括其它Snort规则文件。
●输出模块:
Snort管理员通过它来指定记录日志和警告的输出。
当Snort调用告警及日志子系统时会执行输出模块。
规则具体的书写不再做说明,如果想想进行更进一步了解可以到snort.org的文档中心去下载snort的官方文档《SnortUsersManual》中的WritingSnortRules章节(其链接是http:
//www.snort.org/docs/writing_rules/chap2.html#tth_chAp2)。
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)
检测引擎是snort的核心,准确和快速是衡量其性能的重要指标,前者主要取决于对入侵行为特征码的提取的精确性和规则撰写的简洁实用性,由于网络入侵检测系统是被动防御的——只能被动的检测流经本网络的数据,而不能主动发送数据包去探测,所以只有将入侵行为的特征码归结为协议的不同字段的特征值,通过检测该特征值来决定入侵行为是否发生。
后者主要取决于引擎的组织结构,是否能够快速地进行规则匹配。
为了能够快速准确地进行检测,snort将检测规则利用链表的形式进行组织,分为两部分:
规则头和规则选项。
前者是所有规则共有的包括IP地址、端口号等,后者根据不同规则包括相应的字段关键字。
下图C是Snort的创始人MartinRoesch所作的检测规则的示意图。
图C 检测规则的结构示意图
当进行规则的匹配时,在链表的两个方向同时进行,检测引擎只检测那些在一开始在规则解析器中设置好了的规则选项。
当检测引擎检测到第一个与被解码的包相匹配的规则时,检测引擎触发相应的动作并返回。
4.3日志/报警子系统
snort对每个被检测的数据包都定义了如下的三种处理方式:
alert(发送报警信息),log(记录该数据包)和pass(忽略该数据包)。
这其实是具体定义在检测规则中的。
其具体的完成是在日志/报警子系统中完成的,日志子系统允许你将包解码收集到的信息以可读的格式或以tcpdump格式记录下来。
报警子系统使其将报警信息发送到syslog、flat文件、Unix套接字或数据库中。
三、课程设计任务
1、Windows环境下安装和配置snort
(1)、安装Snort和Wincap包
2.AppServ
(1)安装AppServ
启动AppServ安装文件后,出现如图所示的设置服务器信息界面:
在ServerName中输入服务器IP地址:
localhost:
Administrator'sEmailAddress中输入邮箱地址:
1051466395@
监听端口设为8080
点击next,进入下一界面:
在出现的界面中输入密码(123):
"CharacterSetsandCollations"选择"GB2312SimplifiedChinese",
如下图所示:
然后单击"Install",进入安装过程,出现下图:
安装完成后将C:
\Appserv\php5目录下的php.ini-dist文件改名为php.Ini,并启动Apache和MySql。
(控制面板—管理—服务确保Apache和MySql已启动)
安装完成后可以查看(MySQL启动如下图)
在浏览器中输入http:
//localhost:
8080出现:
表示安装成功!
(2)测试AppServ
首先查看"控制面板"/"管理"/"服务",确保Apache和MySQL已经启动,然后,在浏览器中输入http:
//localhost:
8080/phpinfo.php,(下图)
可以了解php的一些信息。
最后打开浏览器,输入http:
//localhost:
8080/phpMyAdmin/index.php,
下图)输入用户名root和密码,可以浏览数据库内容
(3)配置AppServ
第一步,编辑Apache服务器配置文件。
打开Apache2.2\conf文件中的httpd.conf,检查相应的一些值
进入Apache服务器配置文件
需要检查一下一些值:
LoadModulephp5_moduleD:
/AppServ\php5\php5apache2_2.dll
#'Main'serverconfiguration
#
#Thedirectivesinthissectionsetupthevaluesusedbythe'main'
#server,whichrespondstoanyrequeststhataren'thandledbya
#
#any
#
#Allofthesedirectivesmayappearinside
#inwhichcasethesedefaultsettingswillbeoverriddenforthe
#virtualhostbeingdefined.
#
#
#ServerAdmin:
Youraddress,whereproblemswiththeservershouldbe
#e-mailed.Thisaddressappearsonsomeserver-generatedpages,such
#aserrordocuments.e.g.admin@your-
#
ServerAdmin1051466395@
#
#ServerNamegivesthenameandportthattheserverusestoidentifyitself.
#Thiscanoftenbedeterminedautomatically,butwerecommendyouspecify
#itexplicitlytopreventproblemsduringstartup.
#
#Ifyourhostdoesn'thavearegisteredDNSname,enteritsIPaddresshere.
#
ServerNamelocalhost:
8080
#
#DocumentRoot:
Thedirectoryoutofwhichyouwillserveyour
#documents.Bydefault,allrequestsaretakenfromthisdirectory,but
#symboliclinksandaliasesmaybeusedtopointtootherlocations.
#
DocumentRoot"D:
/AppServ/www"
#
#EachdirectorytowhichApachehasaccesscanbeconfiguredwithrespect
#towhichservicesandfeaturesareallowedand/ordisabledinthat
#directory(anditssubdirectories).
#
#First,weconfigurethe"default"tobeaveryrestrictivesetof
#features.
#
OptionsFollowSymLinksExecCGIIndexes
AllowOverrideNone
Orderdeny,allow
Denyfromall
Satisfyall
#
#Notethatfromthispointforwardyoumustspecificallyallow
#particularfeaturestobeenabled-soifsomething'snotworkingas
#youmightexpect,makesurethatyouhavespecificallyenabledit
#below.
#
#
#ThisshouldbechangedtowhateveryousetDocumentRootto.
#
/AppServ/www"> 第二步,编辑phpMyAdmin中的关键文件。 打开D: \AppServ\www\phpMyAdmin\libraries目录下的config.default.php文件 设置phpMyadmin的URL,$cfg['PmaAbsoluteUri']='http: //localhost: 8080/phpmyadmin/' $cfg['blowfish_secret']='123' $cfg['DefaultLang']='zh-gb2312' $cfg['DefaultCharset']='gb2312' $cfg['Servers'][$i]['auth_type']='cookie' 第三步,配置php.ini。 打开C: \WINDOWS|php.ini文件 第四步,配置php.ini。 打开C: \WINDOWS|php.ini文件。 修改后的值如下图: 第五步,对Mysql进行修改。 首先需要建立Snort运行必需的Snort库和Snort_archive库: 创建表schema和event的代码如下所示: CREATETABLE`schema`(vseqINTUNSIGNEDNOTNULL, ctimeDATETIMENOTNULL, PRIMARYKEY(vseq)); INSERTINTO`schema`(vseq,ctime)VALUES('107',now()); CREATETABLEevent(sidINTUNSIGNEDNOTNULL, cidINTUNSIGNEDNOTNULL, signatureINTUNSIGNEDNOTNULL, timestampDATETIMENOTNULL, PRIMARYKEY(sid,cid), INDEXsig(signature), INDEXtime(timestamp)); 执行结果如下图所示: 第六步,使用C: \Snort\schemas目录下的create_MySQL脚本建立Snort运行必需的数据表。 在此,可以通过MySQL提示符下运行SQL语句showtables来检验配置的正确性 其中c: \Snort为Snort的安装目录,打开命令提示符,运行以下命令: mysql-DSnort-uroot-p \Snort\schemas\create_mysql mysql-DSnort_archive-uroot-p \Snort\schemas\create_Mysql 每次提示输入root的密码,输入密码即可建立所需要的表。 通过MySQL提示符下运行SQL语句showtables来检验配置的正确性 第七步,必须在Appache服务器主机上建立ACID和Snort用户,并且设置权限和密码 (主要是根据课本步骤修改代码) 代码如下: grantusageon*.*to"acid"@"localhost"identifiedby"acidtest"; grantusageon*.*to"snort"@"localhost"identifiedby"snorttest"; grantselect,insert,update,delete,createon*.*to"snort"@"localhost"identifiedby"snorttest"; grantselect,insert,update,delete,create,alteronsnort.*to"acid"@"localhost"; grantselect,insertonsnort.*to"snort"@"localhost"; grantselect,insert,update,delete,create,alteronsnort_archive.*to"acid"@"localhost"; setpasswordfor"snort"@"locahost"=password('123'); setpasswordfor"acid"@"locahost"=password('123'); 在Mysql中运行如下: 在Appache服务器主机上建立ACID和Snort用户 设置权限和密码 设置结果如图所示: (3)、安装Adodb,jpGraph和ACID 移动文件adodbjpgraphacid得到: Adodb生成目录: d: \AppServ\php5\adodb jpgraph生成目录: d: \AppServ\php5\jpgraph acid生成目录: d: \AppServ\www\acid 修改d: \AppServ\www\acid中的acid-conf.php文件 $DBlib_path="d: \AppServ\php5\adodb"; $alert_dbname="snort"; $alert_host="localhost"; $alert_port="3306"; $alert_user="acid"; $alert_password="123"; $archive_dbname="snort_archive"; $archive_host="localhost"; $archive_port=""; $archive_user="acid"; $archive_password="123"; $ChartLib_path="d: \AppServ\php5\jpggraph\src"; 打开acid_conf.php文件修改并保存,结果如下图: 在mysql命令端输入如下命令并回车,出现如下所示,表明运行成功: 最后在浏览器中输入http: //localhost: 8080/acid/acid-db-setup.php出现如下界面: 说明安装成功 (4)、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 入侵 检测 课程设计
