我正在尝试为我的 fail2ban 过滤器创建一个正则表达式,以阻止所有在 Web 应用程序上登录错误的 IP。我区分这一点的方法是,每次登录都会在访问日志中生成一个带有“?&err=1”的 GET 请求。
这是 Apache 访问日志的一个示例日志行:
XX.XX.XX.XX - - [14/Mar/2023:00:51:56 +0200] "GET /index.html?&err=1 HTTP/1.1" 200 37613
我尝试将其作为正则表达式:
[[]client <HOST>[]] - - "?&err=1"
和
client <HOST> - - * "GET * err=1 *
但它们没有阻止任何东西。这里的正确正则表达式是什么?
在此先感谢您的帮助。
截至 2023 年 4 月 19 日的更新:
我编辑了我的 Web 应用程序以在 error_log 中打印以下错误行:[2023 年 4 月 19 日星期三 00:40:10] [错误] [客户端 8.8.8.8] 选择用户错误!,引荐来源:https://example.net/
以下 fail2ban 正则表达式不起作用:
1. failregex = ^\[client <HOST>\] Selecting user ERROR!
2. failregex = ^\[client <HOST>\] Selecting user ERROR!, referer:
3. failregex = ^\[\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \d{4}\] \[error\] \[client <HOST>\] Selecting user ERROR!, referer: https:\/\/example\.net\/
有什么想法我错吗?