Suricata User Guide — Suricata 7.0.1-dev documentation
一、命令行选项
1、常用启动选项
-c <path> 指定配置文件suricata.yaml所在路径 -i <interface> 指定要监控的网卡名称或ip地址 -T 测试配置文件是否正确 -v 设定日志级别,包括-v: INFO -vv: PERF -vvv: CONFIG -vvv:DEBUG -D 后台启动 -l 设定日志输出目录,将会覆盖配置文件中的default-log-dir:/var/log/suricata 选项,可保持默认 -s <filename> 临时添加一个新的规则文件
2、离线分析日志
在suricata启动的时候,可以添加选项来进行离线流量分析,为其指定对应的pcap流量文件即可,参数选项如下:
-r <path> 在pcap离线模式下运行,从pcap文件中读取文件。如果<path>指定了一个目录,则该目录下的所有文件将按照修改时间的顺序进行处理,保持文件之间的流状态。
此处的离线数据包文件,可以是wireshark、tcpdump、suricata等各类流量监控工具生成的文件。
使用whireshark监听一段流量,记录下404错误,让suricata进行离线分析,运行如下命令:
suricata -c suricata.yaml -r ~/404error.pcap -v (-v是输出详情)
二、规则基础语法
规则参考文档
8. Suricata Rules — Suricata 7.0.1-dev documentation
1、ip地址规则
可以使用的语法如下:
操作员 | 描述 |
---|---|
../.. | IP范围(CIDR表示法) |
! | 异常/否定 |
[......] | 分组 |
如下示例均可用来定义源和目标ip地址
例子 | 意义 |
---|---|
!1.1.1.1 | 除了1.1.1.1之外的每个ip地址 |
![1.1.1.1,1.1.1.2] | 除了1.1.1.1和1.1.1.2之外的每个ip地址 |
$HOME_NET | 您在yaml中的HOME_NET设置 |
[$EXTERNAL_NET,!$HOME_NET] | EXTERNAL_NET而不是HOME_NET |
[10.0.0.0/24,!10.0.0.5] | 10.0.0.0/24中除了10.0.0.5 |
3、端口规则
例子 | 意义 |
---|---|
[80,81,82] | 端口80、81和82 |
[80:82] | 范围从80到82 |
[1024:] | 从1024到最高端口号 |
!80 | 除了80之外的每个端口 |
[80:100,!99] | 范围从80到100但不包括99 |
[1:80,![2,4]] | 范围为1-80,端口2和4除外 |
4. Meta keyword元关键字
在suricata规则选项中,针对不同的协议类型有不同的关键字,同时,针对所有协议生效的关键字,称为元关键字。
(1)msg:预警信息的详细描述,也是用来快速了解规则所描述的问题所在
(2)sid:规则编号,用来唯一识别规则项,建议自定义规则也要有一套自己的标准,避免和已有规则重合
(3)rev:规则的修订版本,默认为0,可以自由设定版本号
(4)classtype:规则所属的类的类型,在classification.config中进行定义,同时也包含规则的priority优先级字段
(5)reference: 引用参考,一个url地址或是一条cve编号,如reference: url,www.info.com,reference:cve,CVE-2014-1234
(6)priority:优先级选项,如果明确指定,将覆盖classtype中的优先级设定,范围为1-255,建议设定1-4级,1级别为最高。
(7)metadata:元数据。添加非功能性数据,建议以键值对形式指定。如metadata: key value,key value;
(8)target:允许指定警报的哪一侧是攻击的目标。如果指定,警报事件将被增强以包含有关源和目标的信息。target:[src_ip|dest_ip]
其中(1)(2)是必要的,其他可选。
三、规则示例
alert http any any <> any 80 (msg:"web服务器出现404状态码"; content: "404"; http_stat_code; sid:561001;) alert tcp any any <> any 3306 (msg:"login mysql failed"; content: "Access denied for user"; nocase; sid:561001;)