Snort中文手册

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章编写snort 规则

基础:

snort使用一种简单的,轻量级的规则描述语言,这种语言灵活而强大。在开发snort规则时要记住几个简单的原则。

第一,大多数snort规则都写在一个单行上,或者在多行之间的行尾用/分隔。Snort规则被分成两个逻辑部分:规则头和规则选项。规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的具体部分。

下面是一个规则范例:

alert tcp any any -> 111 (content:"|00 01 86 a5|"; msg: "mountd access"

第一个括号前的部分是规则头(rule header),包含的括号内的部分是规则选项(rule options)。规则选项部分中冒号前的单词称为选项关键字(option keywords)。注意,不是所有规则都必须包含规则选项部分,选项部分只是为了使对要收集或报警,或丢弃的包的定义更加严格。组成一个规则的所有元素对于指定的要采取的行动都必须是真的。当多个元素放在一起时,可以认为它们组成了一个逻辑与(AND)语句。同时,snort规则库文件中的不同规则可以认为组成了一个大的逻辑或(OR)语句。

规则高级概念:

Includes

include允许由命令行指定的规则文件包含其他的规则文件。

格式:

include:

注意在该行结尾处没有分号。被包含的文件会把任何预先定义的变量值替换为自己的变量引用。参见变量(Variables)一节以获取关于在SNORT规则文件中定义和使用变量的更多信息。

Variables

变量可能在snort中定义。

格式:

var:

例子:

var MY_NET

alert tcp any any -> $MY_NET any (flags: S; msg: "SYN packet"

规则变量名可以用多种方法修改。可以在"$"操作符之后定义变量。"?" 和 "-"可用于变量修改操作符。

$var - 定义变量。

$(var) - 用变量"var"的值替换。

$(var:-default) - 用变量"var"的值替换,如果"var"没有定义用"default"替换。$(var:?message) - 用变量"var"的值替换或打印出错误消息"message"然后退出。

例子:

var MY_NET $(MY_NET:

log tcp any any -> $(MY_NET:?MY_NET is undefined!) 23

Config

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:

set_gid 改变GID (snort -g)。例如:config set_gid: snort_group

daemon 以后台进程运行。(snort -D)

reference_net 设置本地网络。 (snort -h). 例如:config reference_net:

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加入一个新的参考系统。

规则头

相关文档
最新文档