首 页 | 兆通产品部 | 兆通工程部 | 兆通维护部 | 兆通销售站 | 天猫店铺 | 技术中心 | 方案中心 | 典型案例 | 兆通论坛
当前页面:首页>>Snort 用户手册2
[2005-4-6]
 

Snort的很多配置和命令行选项都可以在配置文件中设置。

格式:

config [: ]

Directives

  • order 改变规则的顺序( snort -o )
  • alertfile 设置报警输出文件,例如:config alertfile: alerts
  • classification 创建规则分类。
  • decode_arp 开启arp解码功能。(snort -a)
  • dump_chars_only 开启字符倾卸功能。(snort -C)
  • dump_payload 倾卸应用层数据。(snort -d)
  • decode_data_link 解码第二层数据包头。(snort -e)
  • bpf_file 指定BPF过滤器(snort -F)。例如:config bpf_file: filename.bpf
  • set_gid 改变GID (snort -g)。例如:config set_gid: snort_group
  • daemon 以后台进程运行。(snort -D)
  • reference_net 设置本地网络。 (snort -h). 例如:config reference_net:192.168.1.0/24
  • interface 设置网络接口(snort –i )。例如:config interface: xl0
  • alert_with_interface_name 报警时附加上接口信息。(snort -I)
  • logdir 设置记录目录 (snort -l)。例如:config logdir: /var/log/snort
  • umask 设置snort输出文件的权限位。(snort -m). Example: config umask: 022
  • pkt_count 处理n个数据包后就退出。(snort -n). Example: config pkt_count: 13
  • nolog 关闭记录功能,报警仍然有效。 (snort -N)
  • obfuscate 使IP地址混乱 (snort -O)
  • no_promisc 关闭混杂模式。(snort -p)
  • quiet 安静模式,不显示标志和状态报告。(snort -q)
  • checksum_mode 计算校验和的协议类型。类型值:none, noip, notcp, noicmp, noudp, all
  • utc 在时间戳上用UTC时间代替本地时间。 (snort -U)
  • verbose 将详细记录信息打印到标准输出。 (snort -v)
  • dump_payload_verbose 倾卸数据链路层的原始数据包 ( snort -X )
  • show_year 在时间戳上显示年份。(snort -y)
  • stateful 为stream4设置保证模式。
  • min_ttl 设置一个snort内部的ttl值以忽略所有的流量。
  • disable_decode_alerts 关闭解码时发出的报警。
  • disable_tcpopt_experimental_alerts 关闭tcp实验选项所发出的报警。
  • disable_tcpopt_obsolete_alerts关闭tcp过时选项所发出的报警。
  • disable_tcpopt_ttcp_alerts 关闭ttcp选项所发出的报警。
  • disable_tcpopt_alerts 关闭选项长度确认报警。
  • disable_ipopt_alerts 关闭IP选项长度确认报警。
  • detection 配置检测引擎。( 例如:search-method lowmem )
  • reference 给snort加入一个新的参考系统。

规则头

规则动作:

规则的头包含了定义一个包的who,where和what信息,以及当满足规则定义的所有属性的包出现时要采取的行动。规则的第一项是\"规则动作\"(rule action),\"规则动作\"告诉snort在发现匹配规则的包时要干什么。在snort中有五种动作:alert、log、pass、activate和dynamic.

1、Alert-使用选择的报警方法生成一个警报,然后记录(log)这个包。
2、Log-记录这个包。
3、Pass-丢弃(忽略)这个包。
4、activate-报警并且激活另一条dynamic规则。
5、dynamic-保持空闲直到被一条activate规则激活,被激活后就作为一条log规则执行。
你可以定义你自己的规则类型并且附加一条或者更多的输出模块给它,然后你就可以使用这些规则类型作为snort规则的一个动作。

下面这个例子创建一条规则,记录到tcpdump。

ruletype suspicious
{
type log output
log_tcpdump: suspicious.log
}
下面这个例子创建一条规则,记录到系统日志和MySQL数据库
ruletype redalert
{
type alert output
alert_syslog: LOG_AUTH LOG_ALERT
output database: log, mysql, user=snort dbname=snort host=localhost
}

协议


规则的下一部分是协议。Snort当前分析可疑包的ip协议有四种:tcp 、udp、icmp和ip。将来可能会更多,例如ARP、IGRP、GRE、OSPF、RIP、IPX等。

Ip地址

规则头的下一个部分处理一个给定规则的ip地址和端口号信息。关键字\"any\"可以被用来定义任何地址。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地址上,它是否定运算符(negation operator)。这个操作符告诉snort匹配除了列出的ip地址以外的所有ip地址。否定操作符用\"!\"表示。下面这条规则对任何来自本地网络以外的流都进行报警。

alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 (content: \"|00 01 86 a5|\"; msg: \"external mountd access\";)

这个规则的ip地址代表\"任何源ip地址不是来自内部网络而目标地址是内部网络的tcp包\"。
你也可以指定ip地址列表,一个ip地址列表由逗号分割的ip地址和CIDR块组成,并且要放在方括号内“[”,“]”。此时,ip列表可以不包含空格在ip地址之间。下面是一个包含ip地址列表的规则的例子。

alert tcp ![192.168.1.0/24,10.1.1.0/24] any -> [192.168.1.0/24,10.1.1.0/24] 111 (content: \"|00 01 86 a5|\"; msg: \"external mountd access\";)

端口号

端口号可以用几种方法表示,包括\"any\"端口、静态端口定义、范围、以及通过否定操作符。\"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 500:
记录来自任何小于等于1024的特权端口,目标端口大于等于500的tcp流


端口否定操作符用\"!\"表示。它可以用于任何规则类型(除了any,这表示没有,呵呵)。例如,由于某个古怪的原因你需要记录除x windows端口以外的所有一切,你可以使用类似下面的规则:

log tcp any any -> 192.168.1.0/24 !6000:6010

方向操作符

方向操作符\"->\"表示规则所施加的流的方向。方向操作符左边的ip地址和端口号被认为是流来自的源主机,方向操作符右边的ip地址和端口信息是目标主机,还有一个双向操作符\"<>\"。它告诉snort把地址/端口号对既作为源,又作为目标来考虑。这对于记录/分析双向对话很方便,例如telnet或者pop3会话。用来记录一个telnet会话的两侧的流的范例如下:

log !192.168.1.0/24 any <> 192.168.1.0/24 23

Activate 和 dynamic 规则:

注:Activate 和 dynamic 规则将被tagging 所代替。在snort的将来版本,Activate 和 dynamic 规则将完全被功能增强的tagging所代替。

Activate 和 dynamic 规则对给了snort更强大的能力。你现在可以用一条规则来激活另一条规则,当这条规则适用于一些数据包时。在一些情况下这是非常有用的,例如你想设置一条规则:当一条规则结束后来完成记录。Activate规则除了包含一个选择域:activates外就和一条alert规则一样。Dynamic规则除了包含一个不同的选择域:activated_by 外就和log规则一样,dynamic规则还包含一个count域。

Actevate规则除了类似一条alert规则外,当一个特定的网络事件发生时还能告诉snort加载一条规则。Dynamic规则和log规则类似,但它是当一个activate规则发生后被动态加载的。把他们放在一起如下图所示:

activate tcp !$HOME_NET any -> $HOME_NET 143 (flags: PA; content: \"|E8C0FFFFFF|/bin\"; activates: 1; msg: \"IMAP buffer overflow!\";)
dynamic tcp !$HOME_NET any -> $HOME_NET 143 (activated_by: 1; count: 50;)


[返回列表]

首页 | 网络工程 | 综合布线 | 安防监控 摄像头 摄像机 | 方案中心 | 技术中心 | TOP | 典型案例
电话:025-83693855
Copyright © 2005-2006 All Rights Reserved
南京总部: 南京市珠江路成贤大厦7楼