我目前正在优化我的fail2ban过滤器。Fail2ban未能匹配日期格式
我正则表达式之前是这样的:
<HOST> \- \- \[.*\] \"(GET|POST) .+ HTTP\/\d\.\d\" 40\d \d{2,5} \"(.*)\" \"(.*)\"$
,它是在为一个包含404错误这样的每一行:
<HOST> - - [16/Aug/2017:14:02:33 +0200] "GET /favicon.ico HTTP/1.1" 404 6494 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko"
之后,我改变了:
\[.*\]
通过
\[[0-9]{2}\/.{3}\/[0-9]{4}\:([0-9]{2}\:){2}[0-9]{2} \+[0-9]{4}\]
但现在它与fail2ban不再匹配,而像regex101这样的网站仍然认可正确的模板! (不要介意\ HOST,如果我没有把这个词出现的话)。
我试图通过[0-9]/通过\/改变\ d:由\: 的fail2ban总是错过了线,我不知道为什么。 。
是否有人遇到同样的问题?谢谢 ! :)
你是故意逃避两个'*'在第一正则表达式的结束?这似乎阻止了它的工作。 我可以通过以下方法使其与您的更改一起运行:http://regexr.com/3giqc – Bananaapple
@Bananaapple不会在代码块语法之前忘记删除它。我的第二个正则表达式可以和你的在线工具一起工作,但不会与fail2ban:/ – Levrifon
嗯,根据http://fail2ban.readthedocs.io/en/latest/filters。html#regular-expressions fail2ban使用Python的正则表达式,即使我测试它与特定的风格相比,你的正则表达式也能正常工作:https://www.debuggex.com/r/xC-YEMB4P-DM-Td2 - 这留下了两个选项然后。 1 - fail2ban中的错误,2 - 您的错误或其他疏忽。你测试过他们的命令行工具的正则表达式吗? ./fail2ban-regex --help – Bananaapple