eveplw

导航

四.Suricata命令与规则语法

一.离线流量分析

# suricata -c /etc/suricata/suricata.yaml -r x.pcap -l /var/log/suricata -v

1.离线分析可以对规则库进行测试

2.规则更新后,历史的流量可以进行分析

3.流量保存,下载到windows里用wireshare打开

# vim suricata.yaml

-pcap log:
 enable: yes
 filename: log.pcap

 

二.规则基础语法

1.核心语法

以下面简单规则为例:

alert http any any <> $HOME_NET 8443 (msg:"Web服务器出现404."; content:"404"; http_stat_code; sid:561001; )

any:源ip

any:源端口

$HOME_NET:变量目的ip

8443:目的端口

[10.0.0.0/24, !10.0.0.5]:10.0.0.0/24网段,除了10.0.0.5这个ip

[80,443,8443]:80,443,8443三个端口

msg:消息描述

sid:规则编号,建议有一套自己的规则

priority:优先级选项,建议设定为1-4级

content:包含运算(模糊匹配,但不是正则表达式),同时也可以在content后面具体指定对应的字段,比如http_stat_code,http_url,

                另外还可以辅助使用startswith,endswith来更加精确的匹配;

dize:匹配数据包有效载荷的大小,dize:[<>!]number  ||   min<>max;

pcre:正则表达式,pcre:"/<regex>/opts"; 

   需要注意两点,1.必须使用斜线/包裹,最后位置可以设置选项;2.pcre不能单独存在,必须依赖content

noalert:不产生日志

 

2.flowint

(1)基本语法

 flowint:name,<+,-,=,>,<,>=,<=,==,!=>,value;=号用于赋初始值,+1数学运算

    flowint:name,(isset|isnotset);用于判断某个变量是否有值

(2)用法示例

alert http any any <> $HOME_NET 8443 (msg:"Web服务器出现404."; content:"404"; 
http_stat_code; flowint:urlcount,notset; flowint:urlcount, =, 1; noalert; sid:561002; )

alert http any any <> $HOME_NET 8443 (msg:"Web服务器出现404."; content:"404"; 
http_stat_code; flowint:urlcount,notset; flowint:urlcount, =, 1; noalert; sid:561003; )

alert http any any <> $HOME_NET 8443 (msg:"Web服务器频繁出现出现404,疑是扫描."; content:"404"; 
http_stat_code; flowint:urlcount,>=, 5; priority:2; sid:561004; rev:2;)

 

3.阈值关键字

1.threshold

threshold:type<threshold|limit|both>      默认建议使用threshold,如果设置为limit,则会限制警告的数量

2.track

track <by_src|by_dst|by_rule|by_both> 优先使用by_both

3.时间和次数

count <N>,seconds <T>                         T秒内出现N次,触发告警

alert http any any <> $HOME_NET 8443 (msg:"Web服务器出现404."; content:"404"; 
http_stat_code; threshold:type threshold, track by_src, count 5, seconds 20; sid:561003; )

规则库下载:https://rules.emergingthreats.net/open/

 

posted on 2022-08-19 22:30  eveplw  阅读(819)  评论(0编辑  收藏  举报