2

我想使用 aregex-variableCIDR子网掩码从 filter.conf 提交到 action.conf。这个想法是用fail2ban阻止/禁止一个 ip-range 。由于iptablesCIDR一起使用,我想通过 fail2ban 使用它。这可能吗?


所以我想将failregex 变量 mask提交给动作脚本。这是我创建mask变量的失败正则表达式:

filter.d/test-filter.conf

[Definition]
failregex = ^<HOST>\/(?P<mask>(8|16|24|32))


我的测试字符串如下所示10.10.10.10/16 [2015-02-11 12:00:00]
这是我的动作脚本,如果我mask直接或通过jail.local设置变量(如:),它可以正常工作action = test-action[mask=16]

action.d/test-action.conf

[Definition]
...
actionban = iptables -I fail2ban-<name> 1 -s <ip>/<mask> -j DROP
actionunban = iptables -D fail2ban-<name> -s <ip>/<mask> -j DROP
...

[Init]
# Option:  mask
# Notes.:  used to ban an address-range by netmask(s) in CIDR notation.
# Values:  [ 32 | 24 | 16 | 8 ] Default: 32
#
mask = 32

这是我的 jail.local (没有任何变量集)。

监狱本地

[test]
enabled   = true
action    = test-action
filter    = test-filter
logpath   = /etc/fail2ban/test.log
maxretry  = 5
findtime  = 1000
bantime   = -1
4

2 回答 2

2

由于提出了这个问题,因此有一种很少记录的方法可以使用这些变量将数据从过滤器传递到操作:
您只需在变量名称前加上“F-”,并且整个内容必须大写。
所以,在您的情况下,在您的过滤器中,您将使用:

[Definition]
failregex = ^<HOST>\/(?P<F-MASK>(8|16|24|32)</F-MASK>)

您的操作将如下所示:

[Definition]
...
actionban = iptables -I fail2ban-<name> 1 -s <ip>/<F-MASK> -j DROP
actionunban = iptables -D fail2ban-<name> -s <ip>/<F-MASK> -j DROP
...

很抱歉恢复一个老问题..

于 2020-01-31T01:35:54.407 回答
0

您的问题的答案是否定的。这些标签<ip> <matches> <failures> etc.都是fail2ban提供的特殊标签,您无法访问ACTIONS中过滤器正则表达式捕获组中的任何数据。

我已经在 fail2ban 项目中为此类功能打开了一个问题。 https://github.com/fail2ban/fail2ban/issues/1110

于 2015-07-14T23:21:58.587 回答