每当有人访问类似结构的 URL 时,我想在 snort 中生成一个事件
site/year2015.pdf
site/year2014.pdf
:
:
site/year2000.pdf
我考虑使用 PERC,而不是编写多个 snort 规则,因为多年来将添加更多 URL。规则写成。
alert tcp any any -> any any(msg:"PDF is being downloaded"; pcre:"(/.*site\/year\d\d\d\d\.pdf)/i"; sid: 100003; rev:3;)
我尝试了许多不同的方法在上面的规则中插入正则表达式,但它总是无法解析它。正则表达式做得很好,我想让它做 here .整个事情开始失败,因为它没有开始导致规则未被解析。
收到的错误是
Error: /etc/snort/rules/assignment.rules Line 3 => unable to parse pcre regex "(/.*site\/year\d\d\d\d\.pdf)/i"
Fatal Error Quitting..
最佳答案
(有点疯狂)语法是 pcre:"/regex/flags"
。无论如何,你想放在那里的括号都是多余的。您还需要转义作为实际正则表达式一部分的任何斜线,like in the example .
alert tcp any any -> any any(msg:"PDF is being downloaded"; pcre:"/.*site\/year\d\d\d\d.pdf/i"; sid: 100003; rev:3;)
...尽管您可能应该删除多余的通配符 .*
并在末尾添加一个 anchor $
,并将点转义以使其成为文字。您可能还想使用量词来精确指定一个数字的四次重复。
alert tcp any any -> any any(msg:"PDF is being downloaded"; pcre:"/site\/year\d{4}\.pdf$/i"; sid: 100003; rev:3;)
您确定要让 /i
标志使匹配不区分大小写吗?
关于regex - Snort 规则正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30721456/