suricata 开源工具学习-规则了解

规则存放位置,通过可执行程序查看相关配置--build-info suricata 开源工具学习-规则了解_第1张图片

规则构成

suricat的规则由三部分构成,分为action header options;与iptables规则不同,动作字段被定义在规则前。

pass/log/alaret 为ids规则动作,drop、reject(返回res报文)为ips动作

三层协议号(tcp、udp、icmp、ip、any)

规则的每一条都遵循固定的格式:name: settings;

每条规则也包含如下设置:

规则属性配置

msg (message)

规则的名称、描述信息。命中规则的提示信息

rev

表示规则版本号,当规则内容发生变更时,递增。

gid

Reference

Priority

优先级

检测内容

content

检查数据包内容中是否包含某个字符串

 

  •       b. 将字符串的十六进制用管道符(|)进行包围:content:"|FF D8|";
  •       c. 字符串与十六进制混合使用:content:"|FF D8|evilliveshere";
  •       d. 匹配内容区分大小写
  •       e. 保留字符(; \ ")须进行转义或十六进制转码
  • a. 使用感叹号!对匹配项的否定:content:!"evilliveshere";

检测内容修饰语

nocase

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

offset

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

depth

用于限制搜索匹配内容的结束位置。若使用了offset,则开始位置为offset,否则为载荷开始位置

distance

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

within

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

      f. distance和within的同时使用限制了第二次内容匹配的匹配范围,如下

      content:"evilliveshere";  content:"here"; distance:1;within:7;

      在匹配字符串“evilliveshere”后的1到7个字节范围内对字符串“here”进行匹配

http内容修饰语

针对检测http流量的规则,Suricata提供了http流重组能力,同时提供了用于编写HTTP流量相关的更高效的规则修饰器

      例如:alert tcp anyany->any80(msg:"Evil Doamin www.appliednsm.com"; "content:"GET";httpmethod;  content:"www.appliednsm.com";http_uri; sid:5445555; rev:1;)

规则:跟随content内容后,修饰内容类型。此时为精确匹配http内容。

 常用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:

   

    有效声明选项分别为

        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代码值

  • options
  • header包含五元组信息以及流量方向
  • action为该条规则对流量的处理动作,按处理优先级决定pass->drop->reject->alaret。
  • 规则特征:规则生效没有优先级关系,流会匹配所有该协议的规则,最后将所有生效规则的关键字都进行检测。

你可能感兴趣的:(suricata应用开发,开源,学习,linux,服务器,运维)