当我试图为 Fail2ban 创建一个规则时,在我看来它已经消失了很长一段时间,因为过去我真的很紧张,我也愿意将它提交给世界:-)
做了什么?
- 已经在 fail2ban/filter/named-antispam.conf 下创建了一个文件
- 用内容创建它
#cat filter.d/named-antispam.conf
[Definition]
prefregex = ([a-zA-Z][a-zA-Z][a-zA-Z])\s([0-9]|[0-9][0-9])\s([0-9][0-9]):([0-9][0-9]:[0-9][0-9])
failregex = ^rate limit drop all response to <HOST>$
和 jail.conf
#Disabled for Writing this Articel
[named-antispam]
enabled = false
filter = named-antispam
logpath = /var/log/named/rate.log
bantime = 2628000
maxretry = 30
findtime = 60
- 检查如果我启用它并设置它调试,fail2ban 会发生什么?
2021-01-26 11:25:19,461 fail2ban.filterpyinotify[14180]: DEBUG Event queue size: 16
2021-01-26 11:25:19,462 fail2ban.filterpyinotify[14180]: DEBUG <_RawEvent cookie=0 mask=0x2 name='' wd=2 >
如果我禁用该规则,我可以在没有该错误的情况下设置调试 - 所以在我看来我有某种我无法弄清楚的错误,这就是我在这里问的原因。在结尾处-是的,我的日志中有很多条目,但是fail2ban不在乎
您基本上没有提供问题所在,而且既没有包含要在过滤器中捕获的消息的日志摘录,也没有尝试
fail2ban-regex -v
使用过滤器找到什么。我猜消息看起来像:
然后这里有两件事需要注意——首先,IP 在客户端之后(这里
192.0.2.100
),最后它有一个子网(IP/CIDR 表示法,这里192.0.2.0/24
)。如果您想禁止子网(如果您的 fail2ban 和选择的禁令完全能够禁止子网),您可以根据您的版本使用:
要么这个(如果你的fail2ban支持
<SUBNET>
):或这个:
您也可以禁止 IP 而不是子网,然后使用以下任一:
您也可以使用 进行检查
fail2ban-regex
,例如:或使用日志文件测试过滤器:
至于你的
prefregex
和failregex
- 他们只是不正确。prefreregex 和 failregex 都不能包含时间戳匹配的部分datepattern
(请阅读我们的wiki或手册中的操作指南,它包含: 注意:failregex
将在处理后应用于消息的剩余部分prefregex
(如果指定),这反过来会发生处理后datepattern
(从消息中删除与最佳模式匹配的时间戳字符串)。同样
prefregex
有意义的是,如果您需要一些预过滤,例如您有多个失败正则表达式(并且这样的正则表达式将应用于行的整个部分,或者如果指定的话,将应用于包含在<F-CONTENT>
and之间的部分匹配的 RE。如果没有预过滤</F-CONTENT>
预期,prefregex
没有什么意义。无论如何,如果您出于某种原因需要它,它将如下所示: