关于 fail2ban 过滤器正则表达式问题的快速问题我有一个日志模式:
2018-02-06 07:40:20,954 fail2ban.actions [26058]: 通知 [postfix-sasl] 禁止192.168.2.14
我尝试禁止 IP(192.168.2.14)进行以下过滤:
failregex = ^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3} ([az])\w+.([az])\w+ [\d]: 注意[([az])\w+-([az])\w+] 禁令*
到目前为止还没有运气。fail2ban-regex 列出了缺失的行
我确信这只是中间某个地方的简单错误。
任何帮助表示感谢
答案1
我不确定你为什么要用 fail2ban 阻止一个已经被 fail2ban 阻止过的 IP,但无论如何……
我发现两个问题导致您的 fail2ban 过滤器不起作用。
<HOST>
您的 failregex 行中没有标签。*
将failregex 行末尾的替换为<HOST>
。这将告诉 fail2ban 日志文件的哪一部分行代表要禁止的 IP。你的正则表达式不正确。
代替
^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3} ([a-z])\w+.([a-z])\w+ [\d]: NOTICE [([a-z])\w+-([a-z])\w+] Ban <HOST>
经过
^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3} \w+\.\w+ \[.*\]: NOTICE \[\w+\-\w+\] Ban <HOST>
或者更简单地表达
^\.* Ban <HOST>$