Suricata规则——读书笔记

参考《网络安全监控:收集、检测和分析》
    作者:(美)克里斯·桑德斯(Chris Sanders) (美)杰森·史密斯(Jason Smith)
    翻译:李柏松    李燕宏
Emerging威胁检测规则wiki:http://doc.emergingthreats.net/bin/view/Main/WebHome
Emerging规则文件:http://rules.emergingthreatspro.com/

Snort规则与Suricata规则基本语法相同


规则结构

一、规则头部:

1. 规则行为:行为声明,用于通知IDS引擎在触发警报时该怎么做
    a. Alert  通知IDS引擎记录所有匹配的规则、与匹配规则相关的数据包数据
    b. Log    通知IDS引擎记录所有匹配的规则、不记录与匹配规则相关的数据包数据
    c. Pass   通知IDS引擎对该数据包不做任何处理
    
2. 协议:通知IDS引擎该规则适用于何种协议
    a. tcp
    b. udp
    c. icmp
    d. ip     同时适用于TCP和UDP协议时使用
    e. any

3. 源/目标 主机
    a. 可以是IP列表,也可以是CIDR形式的IP范围,可以在配置文件中指定
       来源IP:$EXTERNAL_NET
       目标IP:$HOME_NET
       Suricata配置文件:suricate.yaml
    b. 若无法将规则局限于特定类型的主机,可用关键词“any”匹配任意主机

4. 源/目标 d端口
    a. 可指定具体端口,如80
    b. 可指定任意端口,any

5. 流量方向
    a. ->   从源到目标地址的单向流量
    b. <>  双向流量

二、规则选项:

1. 事件信息选项
1. 消息(msg):对规则的描述,可以理解为规则的“名称”

2. 特征标识符(sid):用于唯一性地标识规则,sid不能重复,且只能为数值
    a. 0-10000000:为Sourcefire VRT保留
    b. 20000000-29999999:为 Emerging Threats(ET)保留
    c. 30000000+ :公用

3. 修订(rev):用于表示规则发生了修改,可以理解为规则的版本号
    a. 当创建一条新规则时,制定 rev:1; ,以表明该规则为第一版本
    b. 当规则被改变时,无需创建新规则,可保持sid不变,使rev递增

4. 引用(reference):用于链接外部信息来源,从而为规则提供附加的情景资料
   好处:保持规则整洁,减小规则长度,使其更易编辑管理
    
    a. 直接指定: reference:<reference type>,<reference>;
                reference:url,doc.emergingthreats.net/2010235

    b. 可通过在suricata.yaml配置reference.config文件来定义引用类型
       文件中使用格式:config reference:<reference type><reference prefix>;
       例如  文件中:config reference:cve http://cve.mitre.org/cgi-bin/cvename.cgi?name=
            规则中:reference:cve,2001-0414
            实际引用:reference:cve,http://cve.mitre.org/cgi-bin/cvename.cgi?name=2001-0414

5. 优先级(priority):用于手动指定规则的优先级,提升分析员查看警报的效率
   此选项可以任意整数设置,可使用0-10之间的数指定优先级,0最高,10最低

6. 类别(classtype):用于根据规则所检测的活动类型为规则分类
   规则中指定方式:classtype:<Classification Name>;
   通过在suricata.yaml配置classification .config文件来描述规则中的类别

   文件中格式:config classification: <classification name>,<classification description>,<classification privoroty>
       classification name:类别名称
       classification description:类别描述
       classification privoroty:类别指定的默认优先级,当规则使用类别时以此处优先级为准
2. 检查内容
1. 检查内容(content):检查数据包内容中是否包含某个字符串
   如:content:"evilliveshere";    
   指定多个匹配项:content:"evilliveshere";  content:"here";  
      a. 使用感叹号!对匹配项的否定:content:!"evilliveshere"; 
      b. 将字符串的十六进制用管道符(|)进行包围:content:"|FF D8|"; 
      c. 字符串与十六进制混合使用:content:"|FF D8|evilliveshere"; 
      d. 匹配内容区分大小写
      e. 保留字符(; \ ")须进行转义或十六进制转码
 
2. 检测内容修饰语:通过在匹配内容之后添加一些修饰语,可以精确控制IDS引擎在网络数据中匹配内容的方式。

        a. nocase:匹配内容不区分大小写,如 content:"root";nocase;

        b. offset:用于表示从数据包载荷的特定位置开始内容匹配,从载荷其实位置算起
                   注意载荷开始位置从0字节处开始,而不是1字节处
                   content:"root";offset:5;

        c. depth:用于限制搜索匹配内容的结束位置。若使用了offset,则开始位置为offset,否则为载荷开始位置
                  content:"root";offset:5;depth:7;

        d. distance:用于指定上一次内容匹配的结束位置距离本次内容匹配的开始位置的距离

        e. within:用于限制本次匹配必须出现在上一次匹配内容结束后的多少个字节之内

        f. distance和within的同时使用限制了第二次内容匹配的匹配范围,如下
           content:"evilliveshere";  content:"here"; distance:1;within:7;
           在匹配字符串“evilliveshere”后的1到7个字节范围内对字符串“here”进行匹配

        g. http内容修饰语:针对检测http流量的规则,Suricata提供了http流重组能力,同时提供了用于编写HTTP流量相关的更高效的规则修饰器
           例如:alert tcp any any -> any 80(msg:"Evil Doamin www.appliednsm.com"; "content:"GET";httpmethod;  content:"www.appliednsm.com";http_uri; sid:5445555; rev:1;)

        常用http内容修饰语:
        http_client_body       HTTP客户端请求的主体内容
        http_cookie         HTTP头字段的“Cookie”内容
        http_header         HTTP请求或响应头的任何内容
        http_method         客户端使用的HTTP方法(GET,POST等)
        http_uri               HTTP客户端请求的URI内容
        http_stat_code       服务器响应的HTTP状态字段内容
        http_stat_message     服务器响应的HTTP状态消息内容
        http_encode         在HTTP传输过程中所使用的编码类型
    ``` 

    3. 兼容Perl语法的正则表达式(PCRE):通过正则表达式对内容进行匹配
       匹配信用卡号码: pcre:"/([0-6]\d\d|7[0-256]\d|73[0-3]|77[0-2])-\d{2} - \d{4}  /";      

######3. 通信流量
    通信流量:根据TCP协议网络流量状态编写规则
        三次握手:
        1. 客户端向服务器的监听端口发送SYN包来发起连接
        2. 此时,服务器需要向客户端回复一个SYN/ACK包
        3. 一旦收到该包,客户端会回复给服务器一个ACK包

    数据流规则有一些专用选项,分为三类:
        1. 状态选项
        2. 定向选项
        3. 流量模式状态
    
    配置格式:flow:<option>,<option>,<option>
    
    有效声明选项分别为
        1.  established:只匹配已经建立TCP会话连接的流量
        2. stateless:不论是否已建立TCP会话连接均匹配
        
    方向选项分别为:
        1. to_server:从客户端到服务端的流量
        2. from_server:从服务端到客户端的流量
        3. to_client:从服务端到客户端的流量
        4. from _client:从客户端到服务端的流量

    no_stream:待匹配数据是重组后的流
    only_stream:待匹配数据是单独的数据包    

    协议头检测
        1. TTL:匹配指定的TTL指,可使用关系运算符(< , <=,  >=,  >),可以用来识别操作系统类型
        2. dsize:匹配一个指定payload大小的数据包,可使用关系运算符(< , <=,  >=,  >)
        3. itype:匹配指定的ICMP类型值
        4. icode:匹配指定的ICMP代码值
        5. ip_proto:匹配指定的IP协议,如IGMP、GRE
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,499评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,563评论 25 707
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,016评论 2 34
  • 子曰:君子无所争,必也射乎!揖让而升、下,而饮。其争也君子。 射:射箭,指周代六艺中的“射”,射属于六艺中的体育教...
    雕琢未来阅读 323评论 1 2