Snort入侵检测系统Word格式.docx
- 文档编号:20313461
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:24
- 大小:1.43MB
Snort入侵检测系统Word格式.docx
《Snort入侵检测系统Word格式.docx》由会员分享,可在线阅读,更多相关《Snort入侵检测系统Word格式.docx(24页珍藏版)》请在冰豆网上搜索。
snort是一个免费的基于libpcap的轻量级网络入侵检测系统。
它能够跨系统平台操作,自带轻量级的入侵检测工具可以用于监视小型的TCP/IP网络,在进行网络监视时snort能够把网络数据和规则进行模式匹配,从而检测出可能的入侵企图,同时它也可以使用SPADE插件,使用统计学方法对网络数据进行异常检测,这些强大的检测功能为网络管理员对于入侵行为做出适当的反击提供了足够的信息。
snort使用一种易于扩展的模块化体系结构,开发人员可以加入自己编写的模块来扩展snort的功能。
这些模块包括:
HTTP解码插件、TCP数据流重组插件、端口扫描检测插件、FLEXRESP插件以及各种日志输入插件等。
同时snort还是一个自由、简洁、快速、易于扩展的入侵检测系统,已经被移植到了各种UNIX平台和Win98,Win2000上。
它也是目前安全领域中,最活跃的开放源码工程之一。
在Snort.org上几乎每天都提供了最新的规则库以供下载,由于snort本身是自由的源码开放工程所以在使用snort时除了必要的硬件外软件上基本上不需要有任何额外的开销。
这相对于少则上千多则上万的商业入侵检测系统来说,无疑是最好的替代产品之一。
本文主要论述了snort的背景知识以及它的基于规则的入侵检测机制,同时对于如何使用也作了概括说明。
第2章Snort入侵检测系统概述
2.1入侵检测技术简介
入侵检测就是一个监视计算机系统或者网络上发生的事件,然后对其进行安全分析的过程。
它可以用来发现外部攻击与合法用户滥用特权,根据用户的历史行为,基于用户的当前操作,完成对入侵的检测,记录入侵证据,为数据恢复和事故处理提供依据。
入侵检测系统的原理如图2.1所示:
图2.1入侵检测的原理图
大多数的入侵检测系统都可以被归入到基于主机、基于网络以及分布式三类。
基于主机的入侵检测系统是一种早期的IDS设计模型,它主要设计用来监视单一的服务器,因为DNS、Email和web服务器是多数网络攻击的目标,这些攻击大约占据全部网络攻击事件的1/3以上,基于主机的入侵检测系统就是为了解决这些问题而设计的,它能够监视针对主机的活动(用户的命令、登录/退出过程,使用数据等等),它的特点就是针对性好而且,效果明显,误报率低。
基于网络的入侵检测系统是后于基于主机入侵检测系统而出现的,它主要用于集中用于监控通过网络互连的多个服务器和客户机,能够监视网络数据发现入侵或者攻击的蛛丝马迹。
分布式IDS通过分布于各个节点的传感器或者代理对整个网络和主机环境进行监视,中心监视平台收集来自各个节点的信息监视这个网络流动的数据和入侵企图。
在入侵检测系统中,系统将用户的当前操作所产生的数据同用户的历史操作数据根据一定的算法进行检测,从而判断用户的当前操作是否是入侵行为,然后系统根据检测结果采取相应的行动。
入侵检测的过程是一个机器(检测工具)与人(黑客)对抗的决策分析过程,其技术基础是基于知识的智能推理,需要用到人工智能的相关技术。
各种入侵检测系统使用的检测方法可以分为两类:
基于特征码的检测方法和异常检测。
使用基于特征码检测方法的系统从网络获得数据,然后从中发现以知的攻击特征。
例如:
在某些URL中包含一些奇怪的Unicode编码字符就是针对IISUnicode缺陷的攻击特征。
此外各种模式匹配技术的应用,提高了这种检测方法的精确性。
使用异常检测的系统能够把获得的数据与一个基准进行比较,检测这些数据是否异常。
现在,大量的统计学方法用于这个领域。
2.2Snort简介
snort是一个基于libpcap的轻量级网络入侵检测系统。
根据snort.org,轻量级入侵检测系统是这样定义的:
首先它能够方便地安装和配置在网络的任何一个节点上,而且不会对网络运行产生太大的影响,同时轻量级入侵检测系统还应该具有跨系统平台操作,最小的系统要求以及易于部署和配置等特征,并且管理员能够利用它在短时间内通过修改配置进行实时的安全响应。
Snort是一个典型的轻量级入侵检测系统,首先可以运行在多种操作系统平台,例如UNIX系列和Win9X,Win2000(需要libpcapforWin32的支持),与很多商业产品相比,它对操作系统的依赖性比较低。
它的分发源码文件压缩包大约只有100KB,在一台一般性能的计算机上编译安装时大约只需几分钟的时间,另外配置激活也大约只需要十几分钟的时间,安装以后即便不对它进行维护也能长时间稳定运行。
其次用户可以根据自己的需要及时在短时间内调整检测策略。
就检测攻击的种类来说,据最新的规则包文件snortrules-stable.tar.gz(Sep402:
15:
182002)snort共有33类,1867条检测规则,其中包括对缓冲区溢出,端口扫描和CGI攻击等等。
2.3系统组成和处理流程
系统组成和处理流程
图2.3.1Snort程序流程图
2.3.1数据包捕获库
基于网络的入侵检测系统需要捕获并分析所有传输到监控网卡的网络数据,这就需要包捕获技术,Snort通过两种机制来实现,其一是将网卡设置为混杂模式,另一方式则是利用Libpcap/Winpcap函数库从网卡捕获网络数据包。
数据包捕获函数库是一个独立的软件工具,能直接从网卡获取数据包。
该函数库是由Berkeley大学LawrenceBerkeleyNationalLaboratory研究院开发,Libpcap支持所有基于可移植操作系统接口(PortableOperatingSystemInterfaceofUnix,POSIX)的操作系统,如Linux、Unix等,后来为支持跨平台特性,又开发了Windows版本(http:
//www.winpcap.org),Windows下和Linux的函数调用几乎完全相同,Snort就是通过调用该库函数从网络设备上捕获数据包。
2.3.2数据包解码器
数据包解码器主要是对各种协议栈上的数据包进行解析、预处理,以便提交给检测引擎进行规则匹配。
解码器运行在各种协议栈之上,从数据链路层到传输层,最后到应用层,因为当前网络中的数据流速度很快,如何保障较高的速度是解码器子系统中的一个重点。
目前,Snort解码器所支持的协议包括Ethernet、SLIP和PPP等。
2.3.3预处理器
预处理模块的作用是对当前截获的数据包进行预先处理,以便后续处理模块对数据包的处理操作。
由于最大数据传输单元(MTU)限制及网络延迟等问题,路由器会对数据包进行分片处理。
但是恶意攻击者也会故意发送经过软件加工过的数据包,以便把一个带有攻击性数据包分散到各个小的数据包中,并有可能打乱数据包传输次序,分多次传输到目标主机。
因此,对异常数据包的处理也是入侵检测系统的重要内容。
预处理器主要包括以下功能:
1)模拟TCP/IP堆栈功能的插件,如IP碎片重组、TCP流重组插件;
2)各种解码插件:
HTTP解码插件、Unicode解码插件、RPC解码插件、Telnet解码插件等;
3)规则匹配无法进行攻击检测时所用的插件:
端口扫描插件、Spade异常入侵检测插件、Bo检测插件、ARP欺骗检测插件等。
根据各预处理插件文件名可对此插件功能做出推断。
2.3.4检测引擎
检测引擎是入侵检测系统的核心内容,Snort用一个二维链表存储它的检测规则,其中一维称为规则头,另一维为规则选项。
规则头中放置的是一些公共属性特征,而规则选项中放置的是一些入侵特征。
Snort从配置文件读取规则文件的位置,并从规则文件读取规则,存储到二维链表中。
Snort的检测就是二维规则链表和网络数据匹配的过程,一旦匹配成功则把检测结果输出到输出插件。
为了提高检测速度,通常把最常用的源/目的IP地址和端口信息放在规则头链表中,而把一些独特的检测标志放在规则选项链表中。
规则匹配查找采用递归的方法进行,检测机制只针对当前己经建立的链表选项进行检测,当数据包满足一个规则时,就会触发相应的操作。
图2.3.4检测规则的结构示意图
2.3.5日志和报警子系统
输出方式采用输出插件方式,输出插件使得Snort在向用户提供格式化输出时更加灵活。
输出插件在Snort的报警和记录子系统被调用时运行。
日志和报警子系统可以在运行Snort的时候以命令行交互的方式进行选择,如果在运行时指定了命令行的输出开关,在Snort规则文件中指定的输出插件会被替代。
现在可供选择的日志形式有三种,报警形式有六种。
Snort可以把数据包以解码后的文本形式或者TCPDump的二进制形式进行记录
第三章Windows下Snort的集成式安装
3.1安装AppServ
启动AppServ安装文件后,出现的设置服务器信息界面中,在ServerName中输入域名localhost;
Administrator'
sEmailAddress中输入邮箱地址:
llg19891006@。
监听端口设为8080。
图3.1.1AppServ安装初始界面
图3.1.2设置服务器信息界面
点击next,进入下一界面:
在出现的界面中输入密码(enterrootpassword):
"
CharacterSetsandCollations"
选择"
GB2312SimplifiedChese"
如图3.1.3所示:
图3.1.3安装MySQLServerCollations
然后单击"
Install"
进入安装过程,安装完成后将C:
\Appserv\php5目录下的php.ini-dist文件改名为php.Ini,并启动Apache和MySql。
图3.1.4完成AppServer的安装
图3.1.5php.ini-dist文件改名为php.Ini
(控制面板—管理—服务确保Apache和MySql已启动)
图3.1.6服务中查看Apacha2.2和Mysql是否启动
安装完成后可以查看(MySQL启动如下图)。
图3.1.7启动MySql
在浏览器中输入http:
//localhost:
8080出现,表示安装成功!
图3.1.8AppServ是否安装成功
3.1.1测试AppServ
首先查看"
控制面板"
/"
管理"
服务"
确保Apache和MySQL已经启动,然后,在浏览器中输入http:
8080/phpinfo.php,(如下图所示)。
图3.1.1.1了解php的一些信息
最后打开浏览器,输入http:
8080/phpMyAdmin/index.php,(如下图所示)输入用户名root和密码,可以浏览数据库内容。
图3.1.1.2浏览数据库内容
3.1.2配置AppServ
1)编辑Apache服务器配置文件。
打开Apache2.2\conf文件中的httpd.conf,检查相应的一些值。
2)编辑phpMyAdmin中的关键文件。
打开C:
\AppServ\www\phpMyAdmin\libraries目录下的config.default.php文件。
1 搜索cfg['
PmaAbsoluteUri'
],设置phpMyAdmin的URL,如cfg['
]='
http:
//localhost:
8080/phpmyadmin/'
这里的phpMyadmin在默认的根目录下。
2 搜索cfg['
blowfish_secret'
],设定好root密码后,这里也要填写,如root的密码123,则设置cfg['
blowfish_secret)'
]=‘123’。
3
搜索cfg['
DefaultLang'
],将其设置为zh-gb2312;
4
Servers'
][i]['
auth_type'
],默认的config是不安全的,推荐使用cook-ie,将其设置为cfg['
]['
i'
cookie'
。
5 搜索cfg['
DefaultCharset'
],将其设置为gb2312。
3)
配置php.ini。
\WINDOWS|php.ini文件。
4)对Mysql进行修改。
首先需要建立Snort运行必需的Snort库和Snort_archive库。
5)使用C:
\AppServ\Snort\schemas目录下的create_MySQL脚本建立Snort运行必需的数据表。
在此,可以通过MySQL提示符下运行SQL语句showtables来检验配置的正确性。
6)必须在Appache服务器主机上建立ACID和Snort用户,并且设置权限和密码。
修改的代码:
mysql>
grantusageon*.*to"
acid"
@"
localhost"
identifiedby"
acidtest"
;
snort"
snorttest"
grantselect,insert,update,delete,createon*.*to"
id
entifiedby"
grantselect,insert,update,delete,create,alteronsnort.*to"
loc
alhost"
grantselect,insertonsnort.*to"
grantselect,insert,update,delete,create,alteronsnort_archive.*to"
a
cid"
setpasswordfor"
locahost"
=password('
123'
);
3.2安装Adodb,jpGraph和ACID
1)移动文件adodb到C:
\AppServ\php5目录下,如图3.2.1—3.2.2所示。
图3.2.1复制adodb文件
图3.2.2粘贴文件adodb在所示目录下
2)移动文件jpgraph到C:
\AppServ\php5目录下,如图3.2.3—3.2.4所示。
图3.2.3复制文件jpgraph
图3.2.4粘贴文件jpgraph到所示目录
3)移动文件acid到C:
\AppServ\www\目录下,如图3.2.5—3.2.6所示。
图3.2.5复制文件acid
图3.2.6粘贴文件acid到所示的目录
4)修改C:
\AppServ\www\acid中的acid-conf.php文件
$DBlib_path="
C:
\AppServ\php5\adodb"
$alert_dbname="
$alert_host="
$alert_port="
$alert_user="
$alert_password="
123"
$archive_dbname="
snort_archive"
$archive_host="
$archive_port="
$archive_user="
$archive_password="
$ChartLib_path="
\AppServ\php5\jpggraph\src"
5)最后在浏览器中输入http:
8080/acid/acid-db-setup.php出现如下图所示界面。
图3.2.7说明ACID安装成功
3.3配置Snort
1)为防止参考配置文件和snort.conf在相同的目录中发生冲突,因此将主配置文件snort.conf的相对路径改为绝对路径进行调整,修改C:
\snort\etc\snort.conf主要改绝对路径:
includeclassification.config
Includereference.config
改为绝对路径:
然后换需要修改应用路径:
3.4phpMyAdmin测试
Snort系统全部安装完成后,用户将可以使用root/acid/snort3个账户IDdengluphpMyAdmin。
这3个用户能否顺利登录关系到整个Snort系统能否顺利运行,因此必须进行检测。
在浏览器中输入
图3.4.1连接localhost
输入cdc:
\snort\bin
图3.4.2进入DOS环境
再输入Snort–c“c:
\Snort\etc\Snort.conf”–l“c:
\Snort\log”–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是基于规则的模式匹配的,这种体系结构非常灵活,用户可以到http:
//www.snort.org/dl/signatures/下载最新的规则,在snort.org上几乎每几天就会有新的规则被更新,同时用户也可以自己书写新的规则,Snort规则文件是一个ASCII文本文件,可以用常用的文本编辑器对其进行编辑。
规则文件的内容由以下几部分组成:
a.变量定义:
在这里定义的变量可以在创建Snort规则时使用。
b.Snort规则:
在入侵检测时起作用的规则,这些规则应包括了总体的入侵检测策略。
c.预处理器:
用来扩展Snort的功能。
如用portscan来检测端口扫描。
d.包含文件IncludeFiles:
可以包括其它Snort规则文件。
e.输出模块:
Snort管理员通过它来指定记录日志和警告的输出。
当Snort调用告警及日志子系统时会执行输出模块。
所有Snort规则遵循一个非常简单的格式,这值得研究。
首先是关于SID和Rec(修订)的注释。
SID是Snort规则的ID(又叫做签名ID),Snort.org和Sourcefire保留了所有小于一百万的数字用于官方规则。
如果你修改了一个规则,把SID加上一百万,这样可以与起源保持一致。
如果你创建了一个新规则,使用起始于九百万的SID。
只要有改变或者规则变更控制结束就要增加revision。
Snort.org规则与一个空的local.rules文件一起产生。
不要使用它,以免下一次安装新规则时你的习惯规则被这个空文件覆盖。
创建一两个其他的文件,例如company_prod.rules和company_test.rules,并在snort.conf文件中添加内容说明。
你可以在一个机器和接口上运行多于一个实例,这对测试规则有帮助,但是在一台老旧的PC和产品盒上同时运行测试更简单安全。
第五章Snort检测SQL注入和跨站脚本攻击
脚本攻击是最近网络上最疯狂的攻击方法了,很多服务器配置了先进的硬件防火墙、多层次的安全体系,可惜最后对80端口的SQL注入和跨站脚本攻击还是没有办法抵御,只能看着数据被恶意入侵者改的面目全非而毫无办法——把你的Snort武装起来吧,用它来检测这样的攻击。
如果你想对每一种可能的SQL注入进行检测,那么你只要检查任何SQL元字符的出现,如像单引号(’)、分号(;
)和双减号(--)。
同样的,一个监测跨站脚本攻击的很偏执的方法,就是查看HTML标记的尖括号(<
、>
)。
但是,前述的方法可能会引起大量的误检。
为了避免误检,我们就必须将过滤规则设置的尽可能的准确,即使这样,我们仍然不能保证不会产生误检,只能尽力而为了。
5.1针对SQL注入的正则表达式
在为SQL注入选择正则表达式的时候,需要记住的是:
攻击者除了可以从Cookie的域中进行攻击之外,还可以通过表单(Form)的Input输入框。
所以,你在对输入进行逻辑验证的时候,还应该对来自用户的每种输入信息都要考虑到,像表单域和Cookie信息都应该作为怀疑的对象。
同样的,如果你发现许多针对单引号和分号的报警的时候,也可能是因为是由Web应用的Cookie中的信息引起的。
因此,必须对特定的Web应用来评估这样的特殊符号。
如前所述,一个用来检测SQL注入攻击的最弱的正则表达式,就是通过检查上面提到的元字符(’;
--)。
要检测这样的元字符,或者它们的16进制的等价表示,我们可以使用如下的正则表达式:
/(\%27)|(\’)|(\-\-)|(\%23)|(#)/ix这里,%27是单引号的16进制值,%23是’#’的16进制值。
像单引号和短横杠都MS
SQL
Server和Oracle中的特殊字符,如果我们使用的是MySQL,还必须检测‘#’的出现。
这里需要说明的就是“—”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Snort 入侵 检测 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)