zoukankan      html  css  js  c++  java
  • Snort规则大探秘

    版本联系

    Snort规则可以用来检测数据包的不同部分。Snort 1.x可以分析第3层和第4层的信息,但是不能分析应用层协议。Snort v 2.x增加了对应用层头部分析的支持。所有的数据包根据类型的不同按顺序与规则比对。Snort规则用简明易懂的语法书写,大多数规则写在一个单行中。当然你也可以行末用反斜线将一条规则划分为多个行。规则文件通常放在配置文件snort.conf文件中,你也可以用其他规则文件,然后用主配置文件引用它们

    规则

    规则头部分

    动作

    当规则与包比对并符合条件是,会采取什么类型的动作,在snort中有五种动作:alert、log、pass、activate和dynamic

    Alert-使用选择的报警方法生成一个警报,然后记录(log)这个包。
    Log-记录这个包。
    Pass-丢弃(忽略)这个包。
    activate-报警并且激活另一条dynamic规则。
    dynamic-保持空闲直到被一条activate规则激活,被激活后就作为一条log规则执行

    协议

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

    地址

    一个表示数据包的访问的源地址,另外一个表示目的地址,关键字"any"可以被用来定义任何地址,Snort没有提供根据ip地址查询域名的 机制。地址就是由直接的数字型ip地址和一个CIDR块组成的,/24表示c类网络, /16表示b类网络,/32表示一个特定的机器的地址。详情请参照:CIDR

    例如,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地址列表由逗号分割的ip地址和CIDR块组成,并且要放在方括号内“[”,“]”,例如

    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流
    log tcp any any -> 192.168.1.0/24 !6000:6010
    端口否定操作符用"!"表示。它可以用于任何规则类型
    

    方向操作符

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

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

    规则选项

    规则选项组成了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 - < distance - 强迫关系模式匹配所跳过的距离。
    within - 强迫关系模式匹配所在的范围。
    byte_test - 数字模式匹配。
    byte_jump - 数字模式测试和偏移量调整
    
  • 相关阅读:
    iOS工作笔记(十二)
    隐藏底部导航栏tabbar
    SDWebImage的使用及图片不改变问题的解决
    NSString转化为NSDictionary
    makeObjectsPerformSelector用法
    iOS中点与像素
    iOS动画的简单介绍
    Pods安装时卡在Updating local specs repositories界面时的处理
    使用uicollectionView时需要注意的问题
    Sublime Text 3 自定义配置快捷键
  • 原文地址:https://www.cnblogs.com/luxiaojun/p/8602375.html
Copyright © 2011-2022 走看看