没有合适的资源?快使用搜索试试~ 我知道了~
如何编写snort的检测规则
5星 · 超过95%的资源 需积分: 20 36 下载量 94 浏览量
2011-08-07
21:29:42
上传
评论 1
收藏 73KB DOC 举报
温馨提示
试读
22页
snort是一个强大的轻量级的网络入侵检测系统。它具有实时数据流量分析和日志IP网络数据包的能力,能够进行协议分析,对内容进行搜索/匹配。它能够检测各种不同的攻击方式,对攻击进行实时报警。此外,snort具有很好的扩展性和可移植性。本文将讲述如何开发snort规则。
资源推荐
资源详情
资源评论
如何编写 snort 的检测规则
是一个强大的轻量级的网络入侵检测系统。它具有实时数据流量分析和日志 网络数据包的能力,
能够进行协议分析,对内容进行搜索匹配。它能够检测各种不同的攻击方式,对攻击进行实时报警。此
外, 具有很好的扩展性和可移植性。本文将讲述如何开发 规则。
基础
使用一种简单的规则描述语言这种描述语言易于扩展,功能也比较强大。下面是一些最基本的东
西:
的每条规则必须在一行中,它的规则解释器无法对跨行的规则进行解析。注意:由于排版的原
因本文的例子有的分为两行。•
的每条规则都可以分成逻辑上的两个部分:规则头和规则选项。规则头包括:规则行为
、协议、源目的 地址、子网掩码以及源目的端口。规则选项包含报警信息和异常包的
信息特征码,使用这些特征码来决定是否采取规则规定的行动。•
这是一个例子:
!"#$#"%&!"&'"%
表 一条简单的 规则
从开头到最左边的括号属于规则头部分,括号内的部分属于规则选项。规则选项中冒号前面的词叫
做选项关键词()'。注意对于每条规则来说规则选项不是必需的,它们是为了更加详细地定
义应该收集或者报警的数据包。只有匹配所有选项的数据包, 才会执行其规则行为。如果许多选项
组合在一起,它们之间是逻辑与的关系。让我们从规则头开始。'
使用的规则文件在命令行中指定,' 关键词使这个规则文件可以包含其它规则文件中的规则 ,
非常类似与 * 语言中的+'。 会从被包含的文件读出其内容,取代 ' 关键词。
格式:
',文件路径文件名
注意:行尾没有分号。
-.
在 规则文件中可以定义变量。
格式:
-/
例子:
-012345 670123458!9%&!913045:("%
表 变量的定义和使用
规则变量名可以使用多种方式来修改,你可以使用7操作符来定义元变量&-.。这些修改方
式可以结合变量修改操作符:;和来使用。
7-:定义元变量•
7-:以变量 - 的内容作为变量名•
7-!'8:以变量 - 的内容作为变量名,如果 - 没有定义就使用 '8 作为变量名•
7-!;&:使用变量 - 的内容作为变量名,如果不成功就打印错误信息 & 并退出。•
例如:
-012345701<2345! 7012345!;012345'8'=>
表 >高级变量应用
规则头?@'
?:
规则头包含一些信息,这些信息包括:哪些数据包、数据包的来源、什么类型的数据包,以及对匹配
的数据包如何处理。每条规则的第一项就是规则行为 。规则行为告诉 当发现匹配的数据
包时,应该如何处理。在 中,有五种默认的处理方式:、、、- 和 '&。
:使用选定的报警方法产生报警信息,并且记录数据包•
:记录数据包•
:忽略数据包•
-:报警,接着打开其它的 '& 规则•
'&:保持空闲状态,直到被 - 规则激活,作为一条 规则•
你也可以定义自己的规则类型,把它们和一个或者几个输出插件联系在一起。然后你就可以在 规
则中使用这些规则类型了。
这个例子将建立一个类型,它将只以 '& 格式输出日志:
A
2'&!
B
下面这个例子将建立一个类型,把日志发送到 和 09C 数据库:
'
A
2!DEF2:<5@DEF2:D4?5
'.!G'.&GHGH
B
协议
每条规则的第二项就是协议项。当前, 能够分析的协议是:5*、<I 和 *0。将来,可能提供
对 :?、*?、F?4、E9J、?、K 等协议的支持。
> 地址
规则头下面的部分就是 地址和端口信息。关键词 可以用来定义任意的 地址。 不支持对主
机名的解析。所以地址只能使用数字*I? 的形式。 表示一个 * 类网络; 表示一个 L 类网络;而
> 表示一台特定的主机地址。例如: 表示从 到 $$ 的地址。
在规则中,可以使用使用否定操作符对 地址进行操作。它告诉 除了列出的
地址外,匹配所有的 地址。否定操作符使用=表示。例如,使用否定操作符可以很轻松地对表 的规则
进行改写,使其对从外部网络向内的数据报警。
= !"#$#"%&!"M&'"%
表 使用 地址否定操作符的规则
上面这条规则中的 地址表示:所有 源地址不是内部网络的地址,而目的地址是内部网络地址。
你也可以定义一个 地址列表。 地址列表的格式如下:
N 地址 *I? 地址*I?6
注意每个 地址之间不能有空格。例如:
=N 6 N 6 !"#
$#"%&!"M&'"%
端口号
在规则中,可以有几种方式来指定端口号,包括: 、静态端口号定义、端口范围,以及
使 用 非 操 作 定 义 。 表 示 任 意 合 法 的 端 口 号 ; 静 态 端 口 号 表 示 单 个 的 端 口 号 , 例 如 :
&、>、H等。使用范围操作符!可以指定端口号范围。有几种方式来使用范围操
作符!达到不同的目的,例如:
' !
记录来自任何端口,其目的端口号在 到 之间的 <I 数据包
!
记录来自任何端口,其目的端口号小于或者等于 的 5* 数据包
! $!
记录源端口号小于等于 ,目的端口号大于等于 $ 的 5* 数据包
表 $端口范围示例
你还可以使用逻辑非操作符=对端口进行非逻辑操作。逻辑非操作符可以用于其它的规则
类型除了 类型道理很简单。例如,你如果要日志除了 K)') 系统端口之外的所有端口,可以使
用下面的规则:
=!
表 对端口进行逻辑非操作
$方向操作符'
方向操作符表示数据包的流向。它左边是数据包的源地址和源端口,右边是目的地址和端口。此外,
还有一个双向操作符,它使 对这条规则中,两个 地址端口之间双向的数据传输进行记录分析,
例如 或者 E> 对话。下面的规则表示对一个 对话的双向数据传输进行记录:
= , >
表 O使用双向操作符的 规则
-'& 规则
-'& 规则对扩展了 功能。使用 -'& 规则对,你能够使用一条规则激活另一
条规则。当一条特定的规则启动,如果你想要 接着对符合条件的数据包进行记录时,使用 -
'& 规则对非常方便。除了一个必需的选项 - 外,激活规则-非常类似于报警规则
。动态规则'&和日志规则也很相似,不过它需要一个选项:-'2.。动
态规则还需要另一个选项:。当一个激活规则启动,它就打开由 --'2. 选项之后的数字
指示的动态规则,记录 个数据包。
下面是一条 -'& 规则对的规则:
-=7@E0423457@E042345 >8!:%!"#4*JJJJJJ##%-!%/
表 -'& 规则对
这个规则使 在检测到 0: 缓冲区溢出时发出报警,并且记录后续的 $ 个从7@E042345 之外,
发往7@E042345 的 > 号端口的数据包。如果缓冲区溢出成功,那么接下来 $ 个发送到这个网络同一
个服务端口这个例子中是 > 号端口的数据包中,会有很重要的数据,这些数据对以后的分析很有用处。
>规则选项
规则选项构成了 入侵检测引擎的核心,它们非常容易使用,同时又很强大和容易扩展。在每条
规则中,选项之间使用分号进行分割。规则选项关键词和其参数之间使用冒号分割。截止到写本文
为止O 版, 有 > 个规则选项关键词:
&:在报警和日志中打印的消息•
:把日志记录到一个用户指定的文件,而不是输出到标准的输出文件•
:测试 包头的 55D 域的值•
:测试 包头的 5E9 域的值•
':测试 分组标志符8&I域是否是一个特定的值•
:查看 选项(域•
8.:测试 包头的分片位8&./
'P:测试数据包包数据段的大小•
8:测试 5* 标志8是否是某个值•
C:测试 5* 包的序列号是否是某个值•
(:测试 5* 包的确认()'&域是否为某个值•
:测试 *0 数据包的类型域•
':测试 *0 数据包的编码'域•
&2':测试 *0 回送包的标志符*04*@EI是否为某个值•
:在数据包的数据段中搜索模式/
:在数据包的数据段中搜索模式清单•
88:设置开始搜索的偏移量•
'H:设置搜索最大深度•
:大小写不敏感匹配内容字符串•
:剥离一个对话的应用层信息•
:观察 ?* 服务对特定应用程序的调用•
:激活反应措施断开连接等/
:激活反应措施阻塞 Q4L 站点/
>&
& 规则选项告诉日志引擎在复制包时同时打印的信息,以及让报警引擎输出的警告消息。它只是一个
简单的文本字符串,使用作为转义符。
格式:
&!""%
>
剩余21页未读,继续阅读
资源评论
- yuanxy19902012-05-09编写规则函数的说明,值得一看
- owen1314202015-08-27编写规则函数的说明,值得一看
- 「已注销」2014-09-18snort规则语法,比较全面。只是word格式稍显凌乱。
- 取个昵称好难啊Elaine2013-10-17规则说明...
jiwenxiang
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功