如何将regex-variable提交到fail2ban中的action-script?

时间:2015-02-11 20:19:19

标签: regex fail2ban

我想使用regex-variable将filter.conf中的 CIDR 子网掩码提交到action.conf。我们的想法是阻止/禁止使用fail2ban的ip-range。由于 iptables 适用于 CIDR ,我想通过fail2ban使用它。这可能吗?

<小时/> 所以我想将 failregex变量 mask提交给action-script。这是我的failregex创建mask变量:

filter.d /测试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 /测试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(没有任何变量集)。

jail.local

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

2 个答案:

答案 0 :(得分: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
...

很抱歉,这个老问题复活了。

答案 1 :(得分:0)

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

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