snort策略配置分析

上传人:仙*** 文档编号:30677498 上传时间:2021-10-11 格式:DOC 页数:15 大小:71.50KB
收藏 版权申诉 举报 下载
snort策略配置分析_第1页
第1页 / 共15页
snort策略配置分析_第2页
第2页 / 共15页
snort策略配置分析_第3页
第3页 / 共15页
资源描述:

《snort策略配置分析》由会员分享,可在线阅读,更多相关《snort策略配置分析(15页珍藏版)》请在装配图网上搜索。

1、snort策略配置分析snort使用一种简单的轻量级的规则描述语言来描述它的规则配置信息,它灵活而强大。在版本1.8之前snort规则必须写在一个单行上,在现在的版本里可以用来进行折行。Snort规则被分成两个逻辑部分:规则头和规则选项。规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的具体部分。下面是一个规则范例:alert tcp any any - 192.168.1.0/24 111 (content:|00 01 86 a5|; msg: mountd access;)例1括号前的部分是规则头,括号内的部分是规则选

2、项。规则选项部分中冒号前的单词称为选项关键字。注意:不是所有规则都必须包含规则选项部分,选项部分只是为了使对要收集或报警,或丢弃的包的定义更加严格。组成一个规则的所有元素对于指定的要采取的行动都必须是真的。当多个元素放在一起时,可以认为它们组成了一个逻辑与(AND)语句。同时,snort规则库文件中的不同规则可以认为组成了一个大的逻辑或(OR)语句。我们先分别讨论规则头和选项部分。规则头部分:规则动作:规则的头包含了定义一个包的who,where和what信息,以及当满足规则定义的所有属性的包出现时要采取的行动。规则的第一项是规则动作规则动作告诉snort在发现满足规则标准的包时要干什么。在s

3、nort中有五种动作:alert,log和pass,activate和dynamic。1 Alert-使用选择的报警方法生成一个警报,然后记录(log)这个包2 Log-记录这个包3 Pass-丢弃(忽略)这个包4 报警然后打开另外一个dynamic规则5 等待一个activate来激活,在被激活后,向log规则一样记录数据包协议:规则的下一部分是协议。Snort当前分析可疑包的ip协议有三种:tcp ,udp和icmp。将来可能会更多,例如arp,igrp,gre,ospf,rip,ipx等。IP地址:规则头的下一个部分处理一个给定规则的ip地址和端口号信息。关键字any可以被用来定义任何地

4、址。Snort没有提供根据ip地址查询域名的机制。地址就是由直接的数字型ip地址和一个cidr块组成的。Cidr块指示作用在规则地址和需要检查的进入的任何包的网络掩码。/24表示c类网络,/16 表示b类网络,/32表示一个特定的机器的地址。例如,192.168.1.0/24代表从192.168.1.1到192.168.1.255的地址块。在这个地址范围的任何地址都匹配使用这个192.168.1.0/24标志的规则。这种记法给我们提供了一个很好的方法来表示一个很大的地址空间。在“例一”中,源ip地址被设置为任何连接的计算机,而目标地址被设置为192.168.1.0上的c类网络。有一个操作符可以

5、应用在ip地址上,它是否定运算符(negation operator)。这个操作符告诉snort匹配除了列出的ip地址以外的所有ip地址。否定操作符用!表示。例如,使用否定操作符对“例一”做一个简单修改,使它对任何来自本地网络以外的流都进行报警,如:alert tcp !192.168.1.0/24 any - 192.168.1.0/24 111 (content: |00 01 86a5|; msg: external mountd access;)例2这个规则的ip地址代表“任何源ip地址不是来自内部网络而目标地址是内部网络的tcp包”端口号:端口号可以用几种方法表示,包括any端口,静

6、态端口定义,范围,以及通过否定操作符定义。any端口是一个通配符,表示任何端口。静态端口定义表示一个单个端口号,例如:111表示portmapper,23表示telnet,80表示http等等。端口范围用范围操作符“:”表示。范围操作符可以有几种使用方法,如:log udp any any - 192.168.1.0/24 1:1024记录来自任何端口的,目标端口范围在1到1024的udp数据流log tcp any any - 192.168.1.0/24 :6000记录来自任何端口,目标端口小于等于6000的tcp流log tcp any :1024 - 192.168.1.0/24 50

7、0:记录来自任何小于等于1024的特权端口,目标端口大于等于500的tcp流例3:端口范围端口否定操作符用“!”表示。它可以用于任何规则类型(除了any)。例如,由于某个古怪的原因你需要记录除x windows端口以外的所有一切,你可以使用如下的规则:log tcp any any - 192.168.1.0/24 !6000:6010例4:端口否定操作符范例方向操作符:方向操作符“”表示规则所施加的流的方向。方向操作符左边的ip地址和端口号被认为是流来自的源主机,方向操作符右边的ip地址和端口信息是目标主机,还有一个双向操作符“”。它告诉snort把地址/端口号对既作为源,又作为目标来考虑。

8、这对于记录/分析双向对话很方便,例如 telnet或者pop3会话。用来记录一个telnet会话的两侧的流的范例如下:log !192.168.1.0/24 any 192.168.1.0/24 23例5:方向操作符示例activate/dynamic规则 :activate/dynamic规则对扩展了snort功能。使用activate/dynamic规则对,你能够使用一条规则激活另一条规则。当一条特定的规则启动,如果你想要snort接着对符合条件的数据包进行记录时,使用activate/dynamic规则对非常方便。除了一个必需的选项 activates外,激活规则(activate ru

9、le)非常类似于报警规则(alert rule)。动态规则(dynamic rule)和日志规则(log rule)也很相似,不过它需要一个选项:activated_by。动态规则还需要另一个选项:count。当一个激活规则启动,它就打开由 activate/activated_by选项之后的数字指示的动态规则,记录count个数据包。下面是一条activate/dynamic规则对的规则:activate tcp !$HOME_NET any - $HOME_NET 143 (flags:PA;content:|E8C0FFFFFF| in|;activates:1;msg:IMAP buf

10、fer overflow!;)例6这个规则使snort在检测到IMAP缓冲区溢出时发出报警,并且记录后续的50个从$HOME_NET之外,发往$HOME_NET的143号端口的数据包。如果缓冲区溢出成功,那么接下来50个发送到这个网络同一个服务端口(这个例子中是143号端口)的数据包中,会有很重要的数据,这些数据对以后的分析很有用处。下面介绍规则选项部分:规则选项部分:规则选项组成了snort入侵检测引擎的核心,既易用又强大还灵活。所有的snort规则选项用分号“;”隔开。规则选项关键字和它们的参数用冒号“:”分开。按照这种写法,snort中有一下一些规则选项关键字。1、 msg - 在报警和

11、包日志中打印一个消息2、 logto - 把包记录到用户指定的文件中而不是记录到标准输出3、 ttl - 检查ip头的ttl的值4、 tos- 检查ip头的tos域的值5、 id - 检查ip头的分片id值6、 ipoption- 检查ip头的option域7、 fragbits- 检查ip头的分片标志位8、 dsize - 检查包的数据部分大小9、 content - 在包的数据部分中搜索指定的样式10、 offset - content选项的修饰符,设定开始搜索的位置11、 depth - content选项的修饰符,设定搜索的最大深度12、 nocase - 指定对content字符串大

12、小写不敏感13、 content-list 在数据包中搜索多种可能匹配14、 flags -检查tcp flags的值15、 seq - 检查tcp顺序号的值16、 ack - 检查tcp应答(acknowledgement)的值17、 itype - 检查icmp type的值18、 icode - 检查icmp code的值19、 session - 记录指定会话的应用层信息的内容20、 icmp_id - 检查ICMP ECHO ID的值21、 icmp_seq - 检查ICMP ECHO 顺序号的值22、 ipoption - 监视IP option的特定代码23、 rpc - 监视特

13、定应用/进程调用的RPC服务24、 resp - 主动反应(切断连接等)25、 reference- 外部参考id26、 sid- snort的规则id27、 rev- 规则的修正号28、 classtype- 规则的分类号29、 priority- 规则的优先级30、 uricontent- 在数据包的URI部分搜索指定的匹配31、 tag- 高级记录动作32、 ip_proto- ip头的协议值33、 sameip- 源地址和目标地址相同34、 stateless- 无状态连接35、 regex- 通配符模式匹配msg:msg规则选项告诉记录和报警引擎记录或报警一个包的内容的同时打印的消息

14、。它是一个简单的文本字符串,转义符是“”。格式:msg:“”;logto:logto选项告诉snort把触发该规则的所有的包记录到一个指定的输出日志文件中。这在把来自诸如nmap活动,http cgi扫描等等的数据组合到一起时很方便。需要指出的是当snort工作在二进制记录模式下时这个选项不起作用。格式:logto: “”;ttl:这个规则选项用于指定一个要检查的存活期的值。只有确切地匹配时它所进行的检查才成功。这个选项关键字用于检测traceroute。格式:ttl: “”;tos:这个规则选项用于指定要检查指定的tos值。只有确切地匹配时它所进行的检查才成功。格式:tos:“”id:这个选

15、项关键字用于检测ip头的分片id的值。有些黑客工具(以及别的程序)为了各种目的设置这个域的值,例如一些黑客常使用31337。用一个简单的规则检查这个值就可以对付他们。格式:id:“”;ipoption:如果ip数据包中包含选项域的话,系统将检查选项中指定的参数,有效的参数有:rr-路由记录eol -列表结束nop- 无操作(end of list)ts - 时间戳sec- ip安全选项lsrr- 宽松源路由ssrr- 严格源路由satid- 流标识格式:ipopts:;fragbits:使用这个规则选项可以观察IP包头的分片位和保留位。它们在IP包头的标识域,共有3位,分别是:保留为(rese

16、rved bit,RB)、还有分组片位(more fragments,MF)、不可分片(dont fragment,DF)。这些位可以以各种方式组合检查,使用下面的值指定:R:保留位D:DF位M:MF位你也可以使用修饰符号对特定的位进行逻辑组合:+-ALL标志,指定的位加上任何其它的位为真*-ANY标志,指定的任何位为真!-NOT标志,指定的位不为真格式: fragbits: ;alert tcp !$HOME_NET any - $HOME_NET any (fragbits:R+;msg:Reserverd IP bit set!;)例7dsize:选项用于检查包的数据区的大小。它可以设置

17、成任意值,可以使用大于/小于符号来指定范围。例如,如果你知道某个特定的服务有一个特定大小的缓冲区,你可以设定这个选项来监视缓冲区溢出的企图。它在检查缓冲区溢出时比检查数据区内容的方法要快得多。格式:dsize: | 192.168.1.0/24 143 (content: |90C8 C0FF FFFF|/bin/sh;msg: IMAP buffer overflow!;)例8格式:content: “”;offset:offset规则选项被用作使用content规则选项关键字的规则的修饰符。这个关键字修饰符指定模式匹配函数从数据包开始处开始搜索的偏移量。它对于 cgi扫描检测规则很有用,c

18、gi扫描的内容搜索字符串不会在数据区的前4个字节中出现。小心不要把这个偏移量设置的太严格了,会有可能漏掉攻击!这个规则选项关键字必须和content规则选项一切使用。格式:offset:;depth:depth也是一个content规则选项修饰符。它设置了内容模式匹配函数从他搜索的区域的其始位置搜索的最大深度。它对于限制模式匹配函数超出搜索域指定范围而造成无效搜索很有用。(也就是说,如果你在一个web包中搜索cgi-bin/phf,你可能不需要浪费时间搜索超过数据区的头20个字节)组合content,offset,和depth的搜索规则的范例参看例八:格式:depth: ;alert tcp

19、any any - 192.168.1.0/24 80 (content: cgi-bin/phf; offset: 3;depth: 22; msg: CGI-PHF access;)例9nocase:nocase选项用于取消content规则中的大小写敏感性。它在规则中指定后,任何与包数据区进行比较的ascii字符都被即作为大写又作为小写对待。格式:nocase;alert tcp any any - 192.168.1.0/24 21 (content: USER root; nocase; msg:FTP root user access attempt;)例10content-lis

20、t:使用content-list关键词可以指定更多的正文字符串,突破了content规则选项只能指定单一字符串的限制。表18是一个conternt-list文件。每个要搜索的字符串占一行。这个规则选项是使用react关键词的基础。#adult sitespornadultshard core# .content-list文件格式: content-list:;flags:这个规则检查tcp标志。在snort中有8个标志变量:1、 F - FIN (LSB in TCP Flags byte)2、 S - SYN3、 R - RST4、 P - PSH5、 A - ACK6、 U - URG7、

21、 2 - Reserved bit 28、 1 - Reserved bit 1 (MSB in TCP Flags byte)9、 0-没有tcp标志被设置保留位可以用于检测不正常的行为,例如ip栈探测或者其他可疑活动。对于这个检查所有指定的flags都被处理,这个规则要成功,它们必须都是up的。例如,例十显示了一个syn-fin扫描检测规则。格式中也可以使用逻辑操作符对指定的标志位进行操作:+:ALL,指定的标志位和其它任意的标志位为真*:ANY,指定的标志位中任意的标志位为真!:NOT,除了指定标志位外,任意的标志位为真格式: flags: ;alert any any - 192.16

22、8.1.0/24 any (flags: SF; msg: Possible SYN FIN scan;)例11-tcp flags指定范例seq:这个规则选项引用tcp顺序号(sequence number)。基本上,它探测一个包是否有一个静态的顺序号集,因此很少用。它是为了完整性而包含进来的。格式:seq: ;ack:ack规则选项关键字引用tcp头的确认(acknowledge)部分。这个规则的一个实用的目的是:检查nmap tcp ping,nmap tcp ping把这个域设置为0,然后发送一个tcp ack flag置位的包来确定一个网络主机是否活着。这个规则探测到这种活动,如例1

23、1:格式:ack: ;alert any any - 192.168.1.0/24 any (flags: A; ack: 0; msg: NMAP TCP ping;)例12-tcp ack域的用法Itype :这条规则测试ICMP的type字段的值。它被设置为使用这个字段的数字值。要得到所有可能取值的列表,可以参见Snort包中自带的decode.h文件,任何ICMP的参考资料中也可以得到。应该注意的是,type字段的取值可以超过正常范围,这样可以检查用于拒绝服务或flooding攻击的非法 type值的ICMP包。格式:itype: ;Icode :Icode规则选项关键字和itype规

24、则非常接近,在这里指定一个数值,Snort会探测使用该值作为code值的ICMP包。超出正常范围的数值可用于探测可疑的流量。格式:icode: ;Session:Session关键字是1.3.1.1版本之后新引入的,用于从TCP会话中抽取用户数据。要检查用户在telnet,rlogin,ftp或web sessions中的用户输入,这个规则选项特别有用。Session规则选项有两个可用的关键字作为参数:printableall。 Printable关键字仅仅打印用户可以理解或者可以键入的数据。All关键字使用16进制值来表示不可打印的字符。该功能会显著地降低Snort的性能,所以不能用于重载环

25、境。它适合于对二进制(tcpdump格式)log文件进行后处理。格式:session: printable|all;Icmp_id :Icmp_id选项检查ICMP ECHO数据包中ICMP ID数值是否是指定值。许多秘密通道(covert channel)程序使用静态ICMP字段通讯,所以该选项在检查这种流量时非常有用。这个特别的插件用于增强由Max Vision编写的stacheldraht探测规则,但是在探测一些潜在攻击时确实有效。格式:icmp_id: ;Icmp_seq :Icmp_seq选项检查ICMP ECHO数据包中ICMP sequence字段数值是否是指定值。许多秘密通道(

26、covert channel)程序使用静态ICMP字段通讯,所以该选项在检查这种流量时非常有用。这个特别的插件用于增强由MaxVision编写的stacheldraht探测规则,但是在探测一些潜在攻击时确实有效。格式:icmp_seq: ;Ipoption:如果数据包中使用了IP选项,Ipoption选项会查找使用中的某个特别IP选项,比如源路由。这个选项的合法参数如下:rr - Record route(记录路由)eol - End of list (列表结尾)nop - No op (无所作为)ts - Time Stamp (时间戳)sec - IP security option (I

27、P安全选项)lsrr - Loose source routing (松散源路由)ssrr - Strict source routing (严格源路由)satid - Stream identifier (流标示符)松散和严格源路由是IP选项中最经常被检查的内容,但是它们并没有被用在任何广泛使用的Internet应用中。每一个特定的规则只能用这个选项一次。格式:ipoption: ;Rpc:这个选项查看RPC请求,并自动将应用(Application),过程(procedure)和程序版本(program version)译码,如果所有三个值都匹配的话,该规则就显示成功。这个选项的格式为应用

28、,过程,版本。在过程和版本域中可以使用通配符*。格式:rpc:;alert tcp any any - 192.168.1.0/24 111 (rpc: 100000,*,3; msg:RPC getport(TCP);)alert udp any any - 192.168.1.0/24 111 (rpc: 100000,*,3; msg:RPC getport(UDP);)alert udp any any - 192.168.1.0/24 111 (rpc: 100083,*,*; msg:RPC ttdb;)alert udp any any - 192.168.1.0/24 111

29、(rpc: 100232,10,*; msg:RPC sadmin;)例13-多种RPC调用告警Resp :Resp关键字可以对匹配一条Snort规则的流量进行灵活的反应(flexible reponse -FlexResp)。FlexResp代码允许Snort主动地关闭恶意的连接。该模块合法的参数如下:rst_snd - 向发送方发送TCP-RST数据包rst_rcv - 向接受方发送TCP-RST数据包rst_all - 向收发双方发送TCP_RST数据包icmp_net - 向发送方发送ICMP_NET_UNREACHicmp_host - 向发送方发送ICMP_HOST_UNREACH

30、icmp_port - 向发送方发送ICMP_PORT_UNREACHicmp_all - 向发送方发送上述所有的ICMP数据包在向目标主机发送多种会应数据包时,这些选项组合使用。多个参数之间使用逗号分隔。格式:resp: ;alert tcp any any - 192.168.1.0/24 1524 (flags: S; resp: rst_all; msg: Rootshell backdoor attempt;)alert udp any any - 192.168.1.0/24 31 (resp: icmp_port,icmp_host; msg:Hackers Paradise a

31、ccess attempt;)例14 - FlexResp使用示例react :react关键词是基于FlexResp(flexible response)的,它使snort对匹配某个规则的数据包作出反应。基本的反应就是阻塞用户要访问的站点,例如色情站点。snort的 FlexResp插件能够主动关闭恶意连接,如果连接使用的是http或者代理服务器端口,FlexResp插件就会向浏览器发出一条 HTML/JavaScript警告信息。这个规则选项可以使用下面几个参数:block:关闭连接并发出注意信息warn:发出警告信息这两个参数是基本参数,它们可以和下面的可选参数组合使用:msg:定义要包

32、含在警告信息中的文本proxy::使用代理服务器端口发送警告信息可选参数使用逗号分开,react关键词应该放在选项的最后。例如:alert tcp any any 192.168.1.0/24 80 (content-list:adults;msg:Not for children!;react:block,msg;)alert tcp any any 192.168.1.0/24 any (content-list:adults;msg:Adults list access attempt;react:block;)例15 react规则格式:react:;reference:这个选项允许,

33、规则包含外部的攻击标识系统,当前支持以下几种类型:系统标识 URLBugtraq CVE http:/cve.mitre.org/cgi-bin/cvename.cgi?name=Arachnids (currently down) McAfee url http:/格式:reference:,;sid:这个选项用来唯一标识snort规则,sid的范围有如下的设定:1,000,000 用户可自由使用格式:sid:classtype:这个选项对攻击行为进行归类,归类可以和优先级一起使用,使某种类型的攻击行为可得到优先的处理。格式:classtype:priority:这个选项用来限定指定规则的优

34、先级。格式:priority:uricontent:这个选项使只在请求数据包的URI部分搜索指定的模式串。格式:uricontent:!“”tag:这个选项使系统不仅记录触发规则的数据包,还将记录触发规则的数据包源地址所发送的数据包。格式: tag:,其中类型包括:session:记录触发这个规则的回话中所有数据包host:记录触发这个规则的源地址的所有数据包数量是指/ip_proto:这个选项检查ip头的协议域。格式: ip_proto:!same ip:这个选项检查源地址和目标地址是否相同格式: sameip;fragoffset:这个选项检查ip头的分片选项匹配某个特定的数值格式: fr

35、agoffset: 预处理器(preprocessors)预处理器综述 :从snort-1.5开始加入了对预处理器的支持。有了这种支持,用户和程序员能够比较容易地编写模块化的插件,扩展snort的功能。预处理器在调用检测引擎之前,在数据包被解码之后运行。通过这种机制,snort可以以一种out of band的方式对数据包进行修改或者分析。预处理器可以使用preprocessor关键词来加载和配置,格式如下:preprocessor : 例如: preprocessor minfrag: 128可用的预处理器模块 :minfrag :这个预处理器测试分片包的大小是否为一个特定的值。数据包分片,

36、通常是源/目的地址之间的路由器完成的。一般来说,商业网络设备产生的分片不会小于512 个字节,基于这种情况,我们可以对很小的分片进行监视,很小的分片包一般是人为产生的,主要为了使用很小的碎片隐藏数据。格式: minfreg:大小阀值)HTTP decode预处理插件 :HTTP解码预处理模块用来处理HTTP URI字符串,把它们转换为清晰的ASCII字符串。这样就可以对抗evasice web URL扫描程序和能够避开字符串内容分析的恶意攻击者。这个预处理模块使用WEB端口号作为其参数,每个端口号使用空格分开。格式: http_decode:例如:preprocessor http_decod

37、e: 80 8080端口扫描检测模块 :snort端口扫描检测预处理模块是Patrick Mullen开发的,从他的个人主页可以得到更多信息。snort端口扫描检测预处理模块主要做如下工作:1).把由单个源IP地址发起的端口扫描从开始到结束的全过程记录到标准日志设备。2).如果指定了一个日志文件,就把被扫描的IP地址和端口号和扫描类型都记录到这个日志文件。这个模块使用的参数包括:1).监视的网络: 以IP地址/子网掩码的格式指定要进行端口扫描监视的网络。2).端口数: 在检测周期(detection period)内访问的端口数目。3).检测周期(detection period): 达到某个

38、设定的端口访问量需要的时间,以秒计。4).日志目录/文件: 保存警告信息的目录/文件。警告信息也可以写到默认警告文件中。格式:portscan: preprocessor portscan:192.168.1.0/24 5 7 /var/log/portscan.logportscan ignorehostsPatrick Mullen对端口扫描检测系统进行了改进,形成了另一个模块-portscan ignorehosts。有些服务器程序容易和端口扫描检测模块造成冲突,例如NTP、NFS和DNS,如果你运行这些服务器程序,可以告诉端口扫描检测模块忽略对由特定主机发起的TCP SYN和UDP端口

39、扫描的检测。这个模块使用的参数是一个要忽略的IP地址/CIDR的列表。格式: portscan-ignorehosts:preprocessor portscan-ignorehosts:192.168.1.5/32 192.168.3.0/24frag2模块 :它使snort能够消除IP碎片包,给黑客使用IP碎片包绕过系统的检测增加了难度。格式: preprocessor frag2: memcap , timeout , min_ttl ,detect_state_problems, ttl_limit timeout 在状态表中保留一个不活动流的秒数。缺省为30秒。memcap设定mem

40、ory cap字节数detect_state_problems如果分组过大则报警min_ttl设定frag2接受的最小ttl值ttl_limitstream4模块 :stream4插件为snort提供了TCP数据包重组的功能。在配置的端口上,stream4插件能够对TCP数据包的细小片段进行重组成为完整的TCP数据包,然后snort可以对其可疑行为进行检查。这个插件有好多参数:noinspect:禁止检测keepstats:将会话的概要信息记录到日志目录下的“session.log”文件中超时(timeout): 在一个TCP数据包送达之前,保存一个TCP数据流缓冲的最长时间。端口(port)

41、: 要监视的服务器端口。我们不想监视所有的TCP端口,这也不太现实。最大字节数(maxbytes): 重组包的最大长度。memcap:设定memory cat的字节数detect_scans:打开端口扫描监测detect_state_problems:检测不正常的流数据包disable_evasion_alerts:禁止tcp重传报警min_ttl:设定重组接受的最小ttl格式: stream4:timeout ,ports ,maxbytes TCP数据包重组插件配置spade:the Statisical Packet Anomaly Dection Engine如果需要了解更多关于spa

42、de的信息,请参考snort源代码中的README.Spake文件,或者使用这个模块使snort能够在你的网络上进行统计异常检测(statistical anomaly dection),这是一个全新的检测引擎。如果你对此感兴趣,请参考源代码中的有关文档和SiliconDefense站点的有关文档。输出模块:输出模块综述:snort输出模块是从1.6版加入的新特征,使snort的输出更为灵活。snort调用其报警或者日志子系统时,就会调用指定的输出模块。设置输出模块的规则和设置预处理模块的非常相似。在snort配置文件中可以指定多个输出插件。如果对同一种类型(报警、日志)指定了几个输出插件,那

43、么当事件发生时,snort就会顺序调用这些插件。使用标准日志和报警系统,默认情况下,输出模块就会将数据发送到/var/log/snort目录,或者用户使用-l命令行开关指定的目录。在规则文件中,输出模块使用output关键词指定:格式: output name:output alert_syslog: LOG_AUTH LOG_ALERT可用的输出模块 :alert_syslog :使用这个输出模块,snort把报警信息发送到syslog,与-s命令行开关非常类似。这个输出模块允许用户在规则文件中指定logging facility和优先级,给用户以更大的灵活性。有效的关键词:1).选项:LO

44、G_CONSLOG_NDELAYLOG_PERRORLOG_PID2).facilityLOG_AUTHLOG_AUTHPRIVLOG_DAEMONLOG_LOCAL0LOG_LOCAL1LOG_LOCAL3LOG_LOCAL4LOG_LOCAL5LOG_LOCAL6LOG_LOCAL7LOG_USER3).优先级LOG_EMERGLOG_ALERTLOG_ERRLOG_WARNINGLOG_NOTICELOG_INFOLOG_DEBUG格式: alert_syslog: alert_fast :使用快速单行格式(quick on line format)把snort报警信息输出到指定的输出文

45、件。这种报警方式比完全(full)报警模式速度快,因为使用这种报警模式不需要把全部的数据包头都输出到指定的文件。格式: alert_fast: alert_full:把全部的数据包头都输出到snort报警信息。这种报警机制一般较满,因为程序需要对整个数据包进行分析。报警信息可以输出到默认的日志目录/var/log/snort,也可以使用命令行指定日志目录。格式: alert_full:alert_smb :snort使用这个插件把WinPopup报警信息输出到由NETBIOS命名的主机,主机名由参数指定的文件给出。注意我们不鼓励使用这种报警方式,因为samba客户程序smbclient以roo

46、t权限运行。接收报警信息工作站的名字列表由保存在一个文件中,每行是一台主机的NETBIOS名字。格式: alert_smb:alert_unixsock :设置一个UNIX域套接字(UNIX domain socket),把报警信息发送到这个套接字。外部程序/进程可以在这个套接字上监听,实时接收snort报警信息和数据包数据。这个接口目前尚处于实验状态。格式: alert_unixsocklog_tcpdump :log_tcpdump输出模块使用tcpdump格式的文件记录数据包日志。这种日志文件格式便于使用很多外部的工具对数据进行分析,只要这些工具软件支持tcpdump格式的文件。这个模块

47、只有一个参数,就是输出文件的名字。格式: log_tcpdump:示例: output log_tcpdump:snort.log数据库输出模块 :snort的数据库输出模块是JedPickel开发的,用来将snort产生的数据送到各种SQL数据库系统。如果要获得安装和配置这个模块更为详尽的信息,可以参考ncident.org web page。这个插件使用的参数是记录snort日志的数据库名和参数表。参数表使用这种格式:parameter=argument。有如下参数可以使用:1).host: 数据库所在的主机。如果指定了一个非零字符串,snort就使用TCP/IP协议连接以此命名的主机。如

48、果没有主机名,snort就使用一个本地UNIX-domain套接字连接本地主机。2).port: 数据库所在服务器的端口号,或者一个UNIX-domain套接字文件。3).dbname: 数据库名字。4).user: 数据库用户名。5).passwd: 密码。6).sensor_name: 指定这个snort触发器的名字,如果没有指定就自动产生。7).encoding: 因为数据包的负载和选项都是二进制数据,所以没有一种简单和可移植的方式将snort的数据保存在数据库。所以在snort数据库输出插件中提供了一些选项,让你自己决定使用那种编码。下面是这几种编码的优点和缺点:hex: 默认编码选项

49、,使用16进制字符串代表二进制数据。存储空间: 两倍于二进制数据搜索性: 极好可读性: 极差base64: 使用base64字符串代表二进制数据。存储空间: 大约是直接存储二进制数据的1.3倍搜索性: 可能无须后续处理。可读性: 不可读需要后续处理。ascii: 使用ASCII字符串代替二进制数据。非ASCII字符使用.代替。如果你选择这个选项,那么IP和TCP包头的选项会仍然使用hex表示。存储空间: 比直接存储二进制数据稍大。搜索性: 非常便于二进制数据中搜索文本字符串。可读性: 很好。8).detail: 设置你要保存多少细节数据,有如下选项:full: 保存引起报警的数据包的所有细节,

50、包括IP/TCP包头和负载数据。fast: 只记录少量的数据。如果选择这种记录方式,不利于以后对数据的分析,但在某些情况下还有其用处。使用这种方式,将记录数据包的以下域:时间戳(timestamp)、签名(signature)、源地址、目的地址、源端口、目的端口、TCP标志和协议。还需要定义日志方法和数据库类型。有两种日志方法:log和alert。如果使用log,snort就会调用log输出,将日志数据记录到数据库;如果设置为alert,snort就会调用alert输出,在数据库中记录报警信息。当前版本中,snort可以使用四种数据库:MySQL、PostgreSQL、Oracle以及和uni

51、xODBC兼容的数据库。可以使用你喜欢的数据库。格式: database:,示例:output database:log,mysql,dbname=snort user=snort host=localhost password=xyz如何建立好的snort规则在开发高效、高速的snort规则时,有几个概念要铭记于心。1.关键词content指定的内容是大小写敏感的,除非你使用nocase选项不要忘记content规则选项指定的内容是大小写敏感的,许多程序一般使用大写表示命令。FTP就是一个很好的例子。请比较下面两条规则:alert tcp any any - 192.168.1.0/24 2

52、1 (content:user root;msg:FTP root login;)alert tcp any any - 192.168.1.0/24 21 (content:USER root;msg:FTP root login;)第二条规则可以使snort捕获大多数使用root用户名的自动登录企图,而在数据包中从来就没有小写的user。2.提高snort对含有content规则选项的规则的检测速度snort检测引擎对各个规则选项的测试顺序与其在各条规则中所处的位置无关。在各个规则选项中,检测引擎最后测试的总是content规则选项。因此,在开发规则时,要尽量使用快速的选项筛选掉根本不必对其内容进行检查的包。例如,如果实现了一个TCP会话过程,那么在会话过程的大部分时间内,双方传输的数据包的TCP标志ACK、PSH都被置位。而测试包头的TCP标志比对数据包的内容进行模式匹配需要的计算量要小的多。所以,在开发相关的检测规则时,需要设置flags规则选项对PSH和ACK没有置位的数据包进行过滤。而这样做,增加的额外计算量微乎其微。例如:alert tcp any any - 192.168.1.0/24 80 (content:cgi-bin/phf;flags:PA;msg:CGI-PHF probe;)

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!