我想添加一个特定的 IP 列表,以便在 Fail2ban 发出几个“GET”请求后收到针对这些 IP 的电子邮件。
在 apache 的访问日志中查找的模式是 ^1.2.3.4 - .*$ 但是 fail2ban-regex 失败了(我不能责怪它),因为它说:
无法删除正则表达式。索引 0 无效 ^1.2.3.4 - .*$ 中没有“主机”组
有什么办法可以在自定义过滤器/监狱中设置“HOST”变量吗?
答案1
正则表达式需要对 IP 地址进行(括号)分组,因此fail2ban 知道要禁止哪个 IP:
在 failregex 的每一行中,与主机名或 IP 地址匹配的部分必须用三明治包裹起来
(?P<host> ... )
。这是一个特定于 Python 的正则表达式扩展,它将匹配的内容分配给名称<host>
。<host>
标签是您告诉 fail2ban 哪个主机正在连接的方式,因此它必须出现在 failregex 的每一行中。如果不是,fail2ban 将发出有关“没有‘主机’组”的错误消息。
就你的情况而言,你的正则表达式应该是
^(?P<host>1.2.3.4) - .*$