Fail2ban 机器人搜索 failregex 不匹配错误日志格式

Fail2ban 机器人搜索 failregex 不匹配错误日志格式

我想禁止以下类型的机器人搜索。但默认nginx-botsearch.conf与该错误日志不匹配。

2019/04/19 12:42:22 [error] 1193#1193: *6 open() "/var/www/domain.com/htdocs/.well-known/dnt-policy.txt" failed (2: No such file or directory), client: 184.0.77.164, server: domain.com, request: "GET /.well-known/dnt-policy.txt HTTP/1.1", host: "domain.com"

然后我修改了默认的失败正则表达式,如下所示。但它与上面的失败日志不匹配。

failregex = ^ \[error\] \d+#\d+: \*\d+ (\S+ )?\"\S+\" (failed|is not found) \(2\: No such file or directory\), client\: <HOST>, server\: \S*\, request: \"(GET|POST|HEAD) \/".*?

我无法确定哪个部分导致了此错误。如能提供任何帮助,不胜感激。

答案1

最后只是打错字:

request: \"(GET|POST|HEAD) \/".*?

这没有任何意义。为什么你会转义一个"而不转义另一个,并且有两个量词接连在一起?我相信这就是你想要写的:

request: \"(GET|POST|HEAD) \/.*\"

经过此更改,它确实与您的示例日志条目相匹配。下次,使用可视化正则表达式编辑器(有一些基于 Web 的编辑器),它将为您节省大量时间。

相关内容