【转】Snort语法规则说明及实例讲解-程序员宅基地

技术标签: 网络  运维  数据库  

转载来自:【IPS分析】Snort语法规则说明及实例讲解

方向操作符:
方向操作符"->"表示规则所施加的流的方向。方向操作符左边的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;)

 

规则选项

规则选项组成了snort入侵检测引擎的核心,既易用又强大还灵活。所有的snort规则选项用分号";"隔开。规则选项关键字和它们的参数用冒号":"分开。按照这种写法,snort中有42个规则选项关键字。

msg -       在报警和包日志中打印一个消息。
logto -      把包记录到用户指定的文件中而不是记录到标准输出。
ttl -       检查ip头的ttl的值。
tos -       检查IP头中TOS字段的值。
id -        检查ip头的分片id值。
ipoption -    查看IP选项字段的特定编码。
fragbits -     检查IP头的分段位。
dsize -      检查包的净荷尺寸的值 。
flags -      检查tcp flags的值。
seq -       检查tcp顺序号的值。
ack -       检查tcp应答(acknowledgement)的值。
window -      测试TCP窗口域的特殊值。
itype -       检查icmp type的值。
icode -      检查icmp code的值。
icmp_id -      检查ICMP ECHO ID的值。
icmp_seq -     检查ICMP ECHO 顺序号的值。
content -     在包的净荷中搜索指定的样式。
content-list   在数据包载荷中搜索一个模式集合。
offset -     content选项的修饰符,设定开始搜索的位置 。
depth -      content选项的修饰符,设定搜索的最大深度。
nocase -     指定对content字符串大小写不敏感。
session -     记录指定会话的应用层信息的内容。
rpc -       监视特定应用/进程调用的RPC服务。
resp -       主动反应(切断连接等)。
react -      响应动作(阻塞web站点)。
reference -    外部攻击参考ids。
sid -       snort规则id。
rev -       规则版本号。
classtype -    规则类别标识。
priority -    规则优先级标识号。
uricontent -   在数据包的URI部分搜索一个内容。
tag -        规则的高级记录行为。
ip_proto -    IP头的协议字段值。
sameip -     判定源IP和目的IP是否相等。
stateless -   忽略刘状态的有效性。
regex -     通配符模式匹配。
distance -    强迫关系模式匹配所跳过的距离。
within -     强迫关系模式匹配所在的范围。
byte_test -   数字模式匹配。
byte_jump -   数字模式测试和偏移量调整。
flow -      这个选项要和TCP流重建联合使用。它允许规则只应用到流量流的某个方向上。这将允许规则只应用到客户端或者服务器端

 

举例说明:
例子1:

alert tcp any any -> any 3306 
(msg:"MySQL Server Geometry Query Integer溢出攻击"; flow:to_server,established; dsize:<300; flags:A; content:"|03|"; nocase; offset:4; depth:1; content:"select|20|geometryn|28|0x00000000000700000001"; distance:10; within:50; reference:cve,2013-1861; reference:bugtraq,58511; classtype-danger:medium; tid:14999; rev:1;)

规则头:alert tcp any any -> any 3306 //匹配任意源IP和端口到任意目的IP和端口为3306的TCP数据包发送告警消息。
规则选项:

msg:"MySQL Server Geometry Query Integer溢出攻击";  //在报警和包日志中打印的消息内容。
flow:to_server,established;               //检测向服务器发送方向的报文。
dsize:<300;                        //应用层负载包长度小于300
flags:A;                          //TCP flags值为10
content:"|03|"; nocase; offset:4; depth:1;      //负载偏移4取1的值为03,不区分大小写,这块写的应该是有问题字符串有不区分大小写,16进制不涉及。

//相对于上面的03特征向后偏移10个字节之后再取50个字节,
//50个字节里边包含select|20|geometryn|28|0x00000000000700000001
content:"select|20|geometryn|28|0x00000000000700000001"; distance:10; within:50;
reference:cve,2013-1861; reference:bugtraq,58511; //可参考cve和bugtraq
classtype-danger:medium;                //危险等级中等
sid:20141107;                       //规则ID
rev:1                            //版本信息,第一个版本

 

例子2:
heartbleed漏洞下行检测规则

alert tcp $EXTERNAL_NET any -> $HOME_NET 443 (msg:"openssl Heartbleed attack";flow:to_server,established; content:"|18 03|"; depth: 3; byte_test:2, >, 200, 3, big; byte_test:2, <, 16385, 3, big; threshold:type limit, track by_src, count 1, seconds 600; reference:cve,2014-0160; classtype:bad-unknown; sid:20140160; rev:2;)


规则头:alert tcp $EXTERNAL_NET any -> $HOME_NET 443 EXTERNAL_NET和HOME_NET都在/etc/snort/snort.conf中配置。

规则选项:

msg:"openssl Heartbleed attack";                 //消息信息
flow:to_server,established;                    //向服务器发送的请求包检测一次
content:"|18 03|"; depth: 3;                   //头部3个字节之内存在0x1803
byte_test:2, >, 200, 3, big;                   //从第3个字节开始取2个字节的大字节序大于200
byte_test:2, <, 16385, 3, big;                   //从第3个字节开始取2个字节的大字节序小于16385
threshold:type limit, track by_src, count 1, seconds 600;  //限速 600s记录一次按src地址进行记录
reference:cve,2014-0160;                     //参考cve编号
classtype:bad-unknown;                       //危害级别
sid:20140160;                            //规则ID
rev:2;                                //版本2


附:
bugtraq:http://www.securityfocus.com/
cve:http://cve.mitre.org/compatible/product_type.html
cnvd:http://www.cnvd.org.cn/
可利用kali虚拟机中nmap,nessus,CIS或者X-scan对系统进行扫描,产生告警纪录

转载于:https://www.cnblogs.com/Lthis/p/4949766.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30563917/article/details/95123985

智能推荐

Prometheus + Grafana 图形化监控实践_prometheus图形化监控-程序员宅基地

文章浏览阅读1k次。本文将详细介绍Prometheus和Grafana的快速搭建,并实现JVM、Mysql等实时监控。本文将在Windows环境搭建Demo。_prometheus图形化监控

全球十大农业大数据经典案例-程序员宅基地

文章浏览阅读4.2k次。基于物联网等技术的应用,农业领域积累了大量的数据,为大数据应用于农业奠定了基础。从国内国际的发展来看,大数据正在驱动农业发展路径发生变化,以提高农业效率,保障食品安全,实..._农业大数据应用案例

Mac在Dock程序坞上添加分割线,分割APP图标_mac程序坞分割线-程序员宅基地

文章浏览阅读9.9k次。遗憾分割线无法添加,我们只能添加一个空白的透明图标,来充当分割线,效果如下:添加方法按下F4,打开“其他”文件夹,打开“终端” 输入以下两行命令,回车 defaults write com.apple.dock persistent-apps -array-add '{ "tile-type" = "spacer-tile"; }'killall Dock 拖动空白的图标到需要的地方 完成..._mac程序坞分割线

git revert 撤销中间的某次提交_git revert --continue-程序员宅基地

文章浏览阅读5.9k次。使用场景如下:首先看一下我的提交(commit1这种都是指的是提交的commit-id)commit1commit2commit3commit4commit5commit6现在想把commit4扔掉,只需git log 从这里拿到commit4的id(当然咱们这里已经拿到了,coomit4就是)git revert commit4 正常情况下就撤销成功了..._git revert --continue

机器学习数据集之鸢尾花-程序员宅基地

文章浏览阅读1.4k次。Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集, 它包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。自变量 feature 特性petal length 花瓣长度petal width 花瓣宽度sepal length 花萼长度sepal width 花萼宽度因变量..._book7_ch08_核技巧__机器学习__鸢尾花书__从加减乘除到机器学习.pdf

R in action 读书笔记(1)--第五章:高级数据管理-程序员宅基地

文章浏览阅读149次。5.2.1数学函数函数描述abs(x)绝对值sqrt(x)平方根ceiling(x)不小于x的最小整数floor(x)不大于x的最大整数trunc(x)向0的方向截取的X中的整数部分..._r in action 学习笔记:第五章

随便推点

计算机专业程序员单词分享含Anki牌组版_anki 牌组 单词-程序员宅基地

文章浏览阅读2.6k次,点赞17次,收藏8次。许多对计算机或者编程感兴趣的小伙伴都苦于英语脱了后腿所以特在此分享自己整理和和网络整合的计算机基础1500词分享Anki版为自己手动制作,以下为预览界面如果觉得不好看或者不想使用Anki的可以把文档导入到背单词软件,当然有的软件像有道、百词斩没有针对计算机的解释,所以推荐用欧陆你掌握这1500词之后相信日常编程,软件使用都可以应付了,但有的同学就是对自己要求高,就不想用百度,想在谷歌进行搜索,或者使用GitHub啊,Stack Overflow社区啊,可能这些单词就不够用了,所以这里还准备了一个_anki 牌组 单词

麻雀算法极限学习机(SSA-ELM)回归预测及其MATLAB代码实现-程序员宅基地

文章浏览阅读112次。SSA-ELM通过结合麻雀算法和极限学习机,能够优化ELM的隐层神经元数量和激活函数的选择,从而提高回归预测的性能。通过使用麻雀算法搜索的方式,SSA-ELM能够找到最佳的隐层神经元数量和激活函数,从而提高ELM的预测性能。极限学习机(ELM)是一种单隐层前馈神经网络模型,其特点是随机初始化输入层到隐层之间的连接权重和隐层的偏置,然后通过解析解的方式快速求解输出层到隐层之间的连接权重。麻雀算法极限学习机(SSA-ELM)是一种基于麻雀算法和极限学习机(ELM)的回归预测方法。极限学习机(ELM)简介。_ssa-elm

LaTeX 日语_setcjkmainfont{ipamincho}-程序员宅基地

文章浏览阅读3.6k次。有许许多多的包支持在不同 LaTeX 编译环境下的日语的输入,但它们并不是都支持特定的日语输入习惯,例如垂直方向的文字。本文简要介绍如何使用 pdfLaTeX、XeLaTeX、pTeX 和 LuaLaTeX 来输入日语。_setcjkmainfont{ipamincho}

Windows下查看端口占用情况_查看8080端口被哪个进程占用-程序员宅基地

文章浏览阅读5k次,点赞2次,收藏15次。编程的时候经常发现我们需要使用的端口被别的程序占用,这个时候需要清楚查看是哪个程序占用了端口,用且清除了这个进程!,回车,查看是哪个进程或者程序占用了2668端口,结果是:TIM.exe。注:后两步可以使用任务管理器,因为看的比较直观而且方便。,回车,记下最后一位数字,即PID,这里是2668。,点击查看—>选择列,_查看8080端口被哪个进程占用

hive中生成从1到n的连续数字的UDTF方法_hive生成连续数字-程序员宅基地

文章浏览阅读9.3k次。之前在博客中分享了个生成从1到n的连续数字的transform或map方法,最近研究了一下UDTF,发现用UDTF写出来的函数用起来更方便,语法更接近于普通的函数。而且在JAVA中对参数的个数、类型等进行校验也更容易。 ORACLE中生成从1到n的连续数字的方法很多,最简单的一种是:select level from dual connect by level _hive生成连续数字

解决阿里云Tomcat8080端口拒绝访问_阿里云8080拒绝连接请求-程序员宅基地

文章浏览阅读878次。解决阿里云Tomcat8080端口拒绝访问_阿里云8080拒绝连接请求

推荐文章

热门文章

相关标签