Bootstrap

suricata7 rule格式

suricata 7.0.5
suricata rule由三部分组成, action, header, options

  • action,决定当前规则匹配上后需要执行的动作
  • header,定义当前规则的协议,IP地址,端口,方向
  • options,定义了具体的规则

一、 action

合法的action值有:

  • alert, 产生告警
  • drop, 丢弃包并且产生告警
  • reject,发送rst或icmp 不可达消息给当前匹配上包的源
  • rejectsrc, 和reject一样
  • rejectdst, 发送rst或icmp不可达消息给当前匹配上包的目的
  • rejectboth,给两端同时发送rst或icmp不可达消息

二、 header

protocol + source ip + source port + direction + destination ip + destination port

2.1 Protocol

指定当前规则处理的什么协议。
基础协议:

  • tcp
  • udp
  • icmp
  • ip
    已经支持的应用层协议:
  • http1
  • http2
  • ftp
  • tls
  • dns
  • dcerpc
  • dhcp
  • ssh
  • smtp
  • imap

2.2 Source, Destination

  • ../.. ,定义网段
  • [...,...,...],定义多个IP
  • ! 可以对上面的进行取反,即排除
  • $VAR, 可以通过提前定义变量,然后使用变量表示地址
  • any, 表示所有地址
例子说明
!1.1.1.1排除1.1.1.1后剩余的所有地址
![1.1.1.1, 1.1.1.2]排除1.1.1.1和1.1.1.2后剩余的所有地址
$HOME_NET提取HOME_NET的值
[10.0.0.0/24, !10.0.0.5]排除10.0.0.5后的10.0.0.0/24网段

2.3 Port

  • :, 表示范围
  • [...,...],多个端口
  • !排除端口
  • $VAR从变量中获取端口
例子说明
[80, 81, 82]端口80,81,82
[80:82]80到82直接的端口
[1024:]1024到最大端口
[80:100,!99]80到100,排除99
[1:80,![2,4]]1到80,排除2,4

2.3 Direction

source -> destination 单向匹配
source <> destiantion 双向匹配

三、 options

( keyword:settings;keyword; )

alert http any any -> $HOME_NET any (msg:“noalert example: set state”; flow:established,to_server; xbits:set,SC.EXAMPLE,track ip_dst, expire 10; noalert; http.method; content:“GET”; sid:1; )

参考: https://docs.suricata.io/en/latest/rules/intro.html

;