目录
规则问题
1:研判
请确认规则是否勾选了研判,以及虚拟机在跑规则的时候,是否开启了研判
显示(尝试)(成功)
ips rule_judge config judge_rule_alert switch on
只显示(尝试)
ips rule_judge config judge_rule_alert switch off
2:http请求与响应
-
http头的
content
使用http_header
或pcre
使用H
-
http请求体的
content
使用http_client_body
或pcre
使用P
-
http响应体的
content
和pcre
前面使用file_data
警告,由于file_data后面的内容一律视为http响应体的内容,此时不能把响应头的内容写到file_data后面。请按照要求,使用上面的修饰符,有不少设备不告警问题是由于没有正确使用修饰符导致的,但与此同时,承认,偶尔,可能出现使用修饰符会导致设备不告警。
例如:
tid60515不告警的反馈结果是:http头解析异常,按照普通content匹配,去掉http_header和pcre末尾的’\H’
tid67287不告警的反馈结果是:http头解析异常未解析出uri,urilen无法匹配
3:http头与http正文
如下图,“请求/响应”头 与 “请求/响应”主体部分之间是0d 0a 0d 0a
如果使用http_client_body
匹配请求体,或者file_data
匹配响应体时:
-
头与体不能连在一起
-
主体部分不能以
0d 0a
开始,然后紧跟主体部分❌ file_data; content:”|0d 0a d0 cf|”;
❌ file_data; content:”|0d 0a 0d 0a d0 cf|”;
✅ content:”|0d 0a 0d 0a d0 cf|”;
✅ file_data; content:”|d0 cf|”;
-
不能在主体中使用
distance
等关键字来联系头部❌ content:“ms-powerpoint”; http_header; file_data; content:”|d0 cf 11|”; distance:4;
✅ content:“ms-powerpoint”; http_header; file_data; content:”|d0 cf 11|”;
-
对规则取逆的时候,请看清楚需要取逆的数据所在的位置,不要乱放位置
4:关键字
flow
flow
关键字作用于tcp协议的规则,不能使用在udp类型的数据包上
tcp.option
【根据反馈结果显示:如果一个cve对应的数据包存在不同的tcp.option,就只能逐个匹配了】
描述:
这个选项直接匹配tcp选项的内容,格式类似content的形式,在引号双竖线中以十六进制形式依次将每个字节罗列。比较的是tcp选项。最大有效范围是30个字节。超过只比较前30个字节。
格式:
tcp.option: "|hex|";
示例:
例如要检测一个特定tcp选项的规则选项可以写为:
tcp.option:"| E3 56 3B 2D 49 58 AC 7E 37 45|";
其中第一个引号前可以有空格,每一个十六进制数之间只用一个空格,”|”与第一个十六进制数之间可以有空格。即上面的规则选项可以写为:
tcp.option: "| E3 56 3B 2D 49 58 AC 7E 37 45|";
约束:
- 十六进制数个数必须为偶数,且每两个十六进制之间必须有空格
- hex与管道(”|”)之间不能有空格
- 至多有30个十六进制对
注:tcp.option指定的”|hex|”会从报文中tcp选项的第一个字节开始对比,如下图所示报文:
tcp.option:"|03 03 02 01 05 00 01 00|";
➡ 可匹配成功
tcp.option:"|03 03 02 01 05 00|";
➡ 可匹配成功
tcp.option:"|02 01 05 00 01 00|";
➡ 匹配失败
dsize
引擎暂不支持dsize=0的数据包
http.host_len
引擎暂不支持http.host_len
http_header
http 的请求是按行处理,若开始第一行中包含换行符会导致uri解析失败,会按照普通content处理
【解决方式】http头域对应匹配,直接指定content,不需加http_header修饰
offset/dsize
涉及重组报文,请尽量不使用offset和dsize之类会失效的选项
释义
众所周知,TCP是面向字节流的。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。TCP对数据包的分割、重组就是NG设备里的重组报文的含义。比如http就是典型的会流重组的报文,简单来说就是http协议慎用offset/dsize关键字
5:协议
加密协议
- tls处理为service https, service ssl
- dtls协议的写service dtls
ftp协议
对于ftp协议,写为metadata:service ftp, service ftp-data, service http
注意添加ftp-data,http
,这两个是产品部要求的
telnet协议
对于telnet协议的数据包,匹配数据包中的16进制数据时,需要加上rawbytes
关键字。
以tid 61813 为例,不加rawbytes
关键字设备无法告警
6:明文匹配
有些规则,虽然规则明文与数据包内容不完全匹配,但是snort可以告警,需要手动检查规则。
7:深度
关键字 | 最大长度 |
---|---|
msg | 2048 |
content | 2048 |
uricontent | 2048 |
HTTP的max_header_buffer_len | 2048 |
对于超长http请求头,注意匹配深度不要超过2048,否则无法匹配成功!
❌pcre:"/GET \x2f HTTP\x2f1\x2e1[\s\S]{12000,}/iD"
8:数据包
回环地址
数据包地址为环回地址时,设备无法检测。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134239.html