如何编写snort的检测snort 测试规则 pcap

如何编写snort的检测规则_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
如何编写snort的检测规则
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩20页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢本帖子已过去太久远了,不再提供回复功能。如何编写snort的检测规则
如何编写snort的检测规则
  前言     snort是一个强大的轻量级的网络入侵检测系统。它具有实时数据流量分析和日志IP网络数据包的能力,能够进行协议分析,对内容进行搜索/匹配。它能够检测各种不同的攻击方式,对攻击进行实时报警。此外,snort具有很好的扩展性和可移植性。本文将讲述如何开发snort规则。     1.基础     snort使用一种简单的规则描述语言,这种描述语言易于扩展,功能也比较强大。下面是一些最基本的东西:     snort的每条规则必须在一行中,它的规则解释器无法对跨行的规则进行解析。注意:由于排版的原因本文的例子有的分为两行。   snort的每条规则都可以分成逻辑上的两个部分:规则头和规则选项。规则头包括:规则行为(rule''s action)、协议(protocol)、源/目的IP地址、子网掩码以及源/目的端口。规则选项包含报警信息和异常包的信息(特征码,signature),使用这些特征码来决定是否采取规则规定的行动。   这是一个例子:     alert tcp any any -> 192.168.1.0/24 111(content:"|00 01 86 a5|";msg:"mountd access";)     表1.一条简单的snort规则     从开头到最左边的括号属于规则头部分,括号内的部分属于规则选项。规则选项中冒号前面的词叫做选项关键词(option keywords)。注意对于每条规则来说规则选项不是必需的,它们是为了更加详细地定义应该收集或者报警的数据包。只有匹配所有选项的数据包,snort才会执行其规则行为。如果许多选项组合在一起,它们之间是逻辑与的关系。让我们从规则头开始。     1.1 include     snort使用的规则文件在命令行中指定,include关键词使这个规则文件可以包含其它规则文件中的规则,非常类似与C语言中的#include。snort会从被包含的文件读出其内容,取代include关键词。     格式:     include
    注意:行尾没有分号。     1.2 varriables     在snort规则文件中可以定义变量。     格式:     var     例子:     var MY_NET 192.168.1.0/24,10.1.1.0/24] $MY_NET any (flags:S;msg:''SYNMETA packet";)     表2.变量的定义和使用     规则变量名可以使用多种方式来修改,你可以使用$操作符来定义元变量(meta-variables)。这些修改方式可以结合变量修改操作符:?和-来使用。     $var:定义元变量   $(var):以变量var的内容作为变量名   $(var:-default):以变量var的内容作为变量名,如果var没有定义就使用default作为变量名   $(var:?message):使用变量var的内容作为变量名,如果不成功就打印错误信息message并退出。   例如:     var MY_NET $(MYU_NET:-192.168.1.0/24) tcp any any -> $(MY_NET:?MY_NET is undefined!) 23     表3.高级变量应用     2.规则头(Rule Headers)     2.1 Rule Action     规则头包含一些信息,这些信息包括:哪些数据包、数据包的来源、什么类型的数据包,以及对匹配的数据包如何处理。每条规则的第一项就是规则行为(rule action)。规则行为告诉snort当发现匹配的数据包时,应该如何处理。在snort中,有五种默认的处理方式:alert、log、pass、activate和dynamic。     alert:使用选定的报警方法产生报警信息,并且记录数据包   log:记录数据包   pass:忽略数据包   activate:报警,接着打开其它的dynamic规则   dynamic:保持空闲状态,直到被activete规则激活,作为一条log规则   你也可以定义自己的规则类型,把它们和一个或者几个输出插件联系在一起。然后你就可以在snort规则中使用这些规则类型了。     这个例子将建立一个类型,它将只以tcpdump格式输出日志:     ruletype suspicious   {   type log   output log_tcpdump: suspocious.log   }     下面这个例子将建立一个类型,把日志发送到syslog和MySql数据库:     ruletype redalert   {   type alert   output alert_syslog:LOG_AUTH LOG_ALERT   output database:log,user=snort dbname=snort host=localhost   }     2.2 协议     每条规则的第二项就是协议项。当前,snort能够分析的协议是:TCP、UDP和ICMP。将来,可能提供对ARP、ICRP、GRE、OSPF、RIP、IPX等协议的支持。     2.3 IP地址     规则头下面的部分就是IP地址和端口信息。关键词any可以用来定义任意的IP地址。snort不支持对主机名的解析。所以地址只能使用数字/CIDR的形式。/24表示一个C类网络;/16表示一个B类网络;而/32表示一台特定的主机地址。例如:192.168.1.0/24表示从192.168.1.1到192.168.1.255的地址。     在规则中,可以使用使用否定操作符(negation operator)对IP地址进行操作。它告诉snort除了列出的IP地址外,匹配所有的IP地址。否定操作符使用!表示。例如,使用否定操作符可以很轻松地对表1的规则进行改写,使其对从外部网络向内的数据报警。     alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111(content:"|00 01 86 a5|";msg:"external mountd access";)     表4.使用IP地址否定操作符的规则     上面这条规则中的IP地址表示:所有IP源地址不是内部网络的地址,而目的地址是内部网络地址。     你也可以定义一个IP地址列表(IP list)。IP地址列表的格式如下:     [IP地址1/CIDR,IP地址/CIDR,....]     注意每个IP地址之间不能有空格。例如:     alert tcp ![192.168.1.0/24,10.1.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";)     2.4 端口号     在规则中,可以有几种方式来指定端口号,包括:any、静态端口号(static port)定义、端口范围,以及使用非操作定义。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 :600     记录来自任何端口,其目的端口号小于或者等于6000的TCP数据包     log tcp any :1024 -> 192.168.1.0/24 500:     记录源端口号小于等于1024,目的端口号大于等于500的TCP数据包     表5.端口范围示例     你还可以使用逻辑非操作符!对端口进行非逻辑操作(port negation)。逻辑非操作符可以用于其它的规则类型(除了any类型,道理很简单)。例如,你如果要日志除了X-window系统端口之外的所有端口,可以使用下面的规则:     log tcp any any -> 192.168.1.0/24 !     表6.对端口进行逻辑非操作     2.5 方向操作符(direction operator)     方向操作符->表示数据包的流向。它左边是数据包的源地址和源端口,右边是目的地址和端口。此外,还有一个双向操作符,它使snort对这条规则中,两个IP地址/端口之间双向的数据传输进行记录/分析,例如telnet或者POP3对话。下面的规则表示对一个telnet对话的双向数据传输进行记录:     log !192.168.1.0/24 any
192.168.1.0/24 23     表7.使用双向操作符的snort规则     activate/dynamic规则     activate/dynamic规则对扩展了snort功能。使用activate/dynamic规则对,你能够使用一条规则激活另一条规则。当一条特定的规则启动,如果你想要snort接着对符合条件的数据包进行记录时,使用activate/dynamic规则对非常方便。除了一个必需的选项activates外,激活规则(activate rule)非常类似于报警规则(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;   表8.activate/dynamic规则对     这个规则使snort在检测到IMAP缓冲区溢出时发出报警,并且记录后续的50个从$HOME_NET之外,发往$HOME_NET的143号端口的数据包。如果缓冲区溢出成功,那么接下来50个发送到这个网络同一个服务端口(这个例子中是143号端口)的数据包中,会有很重要的数据,这些数据对以后的分析很有用处。     3.规则选项     规则选项构成了snort入侵检测引擎的核心,它们非常容易使用,同时又很强大和容易扩展。在每条snort规则中,选项之间使用分号进行分割。规则选项关键词和其参数之间使用冒号分割。截止到
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
职称考试题目
招生信息考研政治
网络安全安全设置工具使用手机安全
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&比特客户端
您的位置:
详解大数据
详解大数据
详解大数据
详解大数据
如何编写snort的检测规则
关键字:技巧 检测
  KKsnort是一个强大的轻量级的检测系统。它具有实时流量分析和日志IP网络数据包的能力,能够进行协议分析,对内容进行搜索/匹配。它能够检测各种不同的攻击方式,对攻击进行实时报警。此外,snort具有很好的扩展性和可移植性。本文将讲述如何开发snort规则。
  1.基础
  KKsnort使用一种简单的规则描述语言,这种描述语言易于扩展,功能也比较强大。下面是一些最基本的东西:
  snort的每条规则必须在一行中,它的规则解释器无法对跨行的规则进行解析。注意:由于排版的原因本文的例子有的分为两行。
  snort的每条规则分成逻辑上的两个部分:规则头和规则选项。规则头包括:规则行为(rule''s action)、协议(protocol)、源/目的IP地址、子网掩码以及源/目的端口。规则选项包含报警和异常包的信息(特征码,signature),使用这些特征码来决定是否采取规则规定的行动。
  KK这是一个例子:
  KKalert tcp any any -& 192.168.1.0/24 111(content:"|00 01 86 a5|";msg:"mountd";)
  KK表1.简单的snort规则
  KK从开头到最左边的括号属于规则头部分,括号内的部分属于规则选项。规则选项中冒号前面的词叫做选项关键词(option keywords)。注意对于每条规则来说规则选项不是必需的,它们是为了更加详细地定义应该收集或者报警的数据包。只有匹配所有选项的数据包,snort才会执行其规则行为。如果许多选项组合在一起,它们之间是逻辑与的关系。让我们从规则头开始。
  1.1 include
  KKsnort使用的规则文件在命令行中指定,include关键词使这个规则文件可以包含其它规则文件中的规则,非常类似与C语言中的#include。snort会从被包含的文件读出其内容,取代include关键词。
  KK格式:
  KKinclude &文件路径/文件名&
  KK注意:行尾没有分号。
  1.2 varriables
  KK在snort规则文件中可以定义变量。
  KK格式:
  KK例子:
  KKvar MY_NET 192.168.1.0/24,10.1.1.0/24] $MY_NET any (flags:S;msg:''SYNMETA packet";)
  KK表2.变量的定义和使用
  KK规则变量名可以使用多种方式来修改,你可以使用$操作符来定义元变量(meta-variables)。这些修改方式可以结合变量修改操作符:?和-来使用。
  $var:定义元变量
  $(var):以变量var的内容作为变量名
  $(var:-default):以变量var的内容作为变量名,如果var没有定义就使用default作为变量名
  $(var:?message):使用变量var的内容作为变量名,如果不成功就打印错误信息message并退出。
  例如:
  KKvar MY_NET $(MYU_NET:-192.168.1.0/24) tcp any any -& $(MY_NET:?MY_NET is undefined!) 23
  KK表3.高级变量应用
  2.规则头(Rule Headers)
  2.1 Rule Action
  KK规则头包含一些信息,这些信息包括:哪些数据包、数据包的来源、什么类型的数据包,以及对匹配的数据包如何处理。每条规则的第一项就是规则行为(rule action)。规则行为告诉snort当发现匹配的数据包时,应该如何处理。在snort中,有五种默认的处理方式:alert、log、pass、activate和dynamic。
  alert:使用选定的报警方法产生报警信息,并且记录数据包
  log:记录数据包
  pass:忽略数据包
  activate:报警,接着打开其它的dynamic规则
  dynamic:保持空闲状态,直到被activete规则激活,作为一条log规则
  KK你也可以定义自己的规则类型,把它们和一个或者几个输出插件联系在一起。然后你就可以在snort规则中使用这些规则类型了。
  KK这个例子将建立一个类型,它将只以tcpdump格式输出日志:
  KKruletype suspicious
  KKtype log
  KKoutput log_tcpdump: suspocious.log
  KK下面这个例子将建立一个类型,把日志发送到syslog和:
  KKruletype redalert
  KKtype alert
  KKoutput alert_syslog:LOG_AUTH LOG_ALERT
  KKoutput database:log,user=snort dbname=snort host=localhost
  2.2 协议
  KK每条规则的第二项就是协议项。当前,snort能够分析的协议是:TCP、UDP和ICMP。将来,可能提供对、ICRP、GRE、OSPF、RIP、IPX等协议的支持。
  2.3 IP地址
  KK规则头下面的部分就是IP地址和端口信息。关键词any可以用来定义任意的IP地址。snort不支持对主机名的解析。所以地址只能使用数字/CIDR的形式。/24表示一个C类网络;/16表示一个B类网络;而/32表示一台特定的主机地址。例如:192.168.1.0/24表示从192.168.1.1到192.168.1.255的地址。
  KK在规则中,可以使用使用否定操作符(negation operator)对IP地址进行操作。它告诉snort除了列出的IP地址外,匹配所有的IP地址。否定操作符使用!表示。例如,使用否定操作符可以地对表1的规则进行改写,使其对从外部网络向内的数据报警。
  KKalert tcp !192.168.1.0/24 any -& 192.168.1.0/24 111(content:"|00 01 86 a5|";msg:"external mountd access";)
  KK表4.使用IP地址否定操作符的规则
  KK上面这条规则中的IP地址表示:所有IP源地址不是内部网络的地址,而目的地址是内部网络地址。
  KK你也可以定义一个IP地址列表(IP)。IP地址列表的格式如下:
  KK[IP地址1/CIDR,IP地址/CIDR,....]
  KK注意每个IP地址之间不能有空格。例如:
  KKalert tcp ![192.168.1.0/24,10.1.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";)
  2.4 端口号
  KK在规则中,可以有几种方式来指定端口号,包括:any、静态端口号(static port)定义、端口范围,以及使用非操作定义。any表示任意合法的端口号;静态端口号表示单个的端口号,例如:111(portmapper)、23(telnet)、80(http)等。使用范围操作符:可以指定端口号范围。有几种方式来使用范围操作符:达到不同的目的,例如:
  KKlog udp any any -& 192.168.1.0/24 1:1024
  KK记录来自任何端口,其目的端口号在1到1024之间的UDP数据包
  KKlog tcp any any -& 192.168.1.0/24 :600
  KK记录来自任何端口,其目的端口号小于或者等于6000的TCP数据包
  KKlog tcp any :1024 -& 192.168.1.0/24 500:
  KK记录源端口号小于等于1024,目的端口号大于等于500的TCP数据包
  KK表5.端口范围示例
  KK你还可以使用逻辑非操作符!对端口进行非逻辑操作(port negation)。逻辑非操作符可以用于其它的规则类型(除了any类型,道理很简单)。例如,你如果要日志除了X-window系统端口之外的所有端口,可以使用下面的规则:
  KKlog tcp any any -& 192.168.1.0/24 !
  KK表6.对端口进行逻辑非操作
  2.5 方向操作符(direction operator)
  KK方向操作符-&表示数据包的流向。它左边是数据包的源地址和源端口,右边是目的地址和端口。此外,还有一个双向操作符&&,它使snort对这条规则中,两个IP地址/端口之间双向的数据传输进行记录/分析,例如telnet或者。下面的规则表示对一个telnet对话的双向数据传输进行记录:
  KKlog !192.168.1.0/24 any && 192.168.1.0/24 23
  KK表7.使用双向操作符的snort规则
  activate/dynamic规则
  KKactivate/dynamic规则对扩展了snort功能。使用activate/dynamic规则对,你能够使用一条规则激活另一条规则。当一条特定的规则启动,如果你想要snort接着对符合条件的数据包进行记录时,使用activate/dynamic规则对非常方便。除了一个必需的选项activates外,激活规则(activate rule)非常类似于报警规则(alert rule)。动态规则(dynamic rule)和日志规则(log rule)也很相似,不过它需要一个选项:activated_by。动态规则还需要另一个选项:count。当一个激活规则启动,它就打开由activate/activated_by选项之后的数字指示的动态规则,记录count个数据包。
  KK下面是一条activate/dynamic规则对的规则:
  KKactivate tcp !$HOME_NET any -& $HOME_NET 143 (flags:PA;content:"|E8C0FFFFFF|in|;activates:1;
  KK表8.activate/dynamic规则对
  KK这个规则使snort在检测到IMAP缓冲区溢出时发出报警,并且记录后续的50个从$HOME_NET之外,发往$HOME_NET的143号端口的数据包。如果缓冲区溢出成功,那么接下来50个发送到这个网络同一个服务端口(这个例子中是143号端口)的数据包中,会有很重要的数据,这些数据对以后的分析很有用处。
  3.规则选项
  KK规则选项构成了snort入侵检测引擎的核心,它们非常容易使用,同时又很强大和容易扩展。在每条snort规则中,选项之间使用分号进行分割。规则选项关键词和其参数之间使用冒号分割。
[ 责任编辑:张学敬 ]
去年,手机江湖里的竞争格局还是…
甲骨文的云战略已经完成第一阶段…
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注Chinabyte}

我要回帖

更多关于 snort规则解析 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信