mirror of https://github.com/fail2ban/fail2ban
make ipset actions more breakdown-safe: start wouldn't fail if set with this name already exists (e. g. created by previous instance and don't deleted properly)
parent
7db1c97a3e
commit
3d7e3bc2fb
|
@ -35,15 +35,15 @@ actionunban = <ipstype_<ipsettype>/actionunban>
|
||||||
|
|
||||||
[ipstype_ipset]
|
[ipstype_ipset]
|
||||||
|
|
||||||
actionstart = ipset create <ipmset> hash:ip timeout <default-ipsettime> <familyopt>
|
actionstart = ipset -exist create <ipmset> hash:ip timeout <default-ipsettime> <familyopt>
|
||||||
|
|
||||||
actionflush = ipset flush <ipmset>
|
actionflush = ipset flush <ipmset>
|
||||||
|
|
||||||
actionstop = ipset destroy <ipmset>
|
actionstop = ipset destroy <ipmset>
|
||||||
|
|
||||||
actionban = ipset add <ipmset> <ip> timeout <ipsettime> -exist
|
actionban = ipset -exist add <ipmset> <ip> timeout <ipsettime>
|
||||||
|
|
||||||
actionunban = ipset del <ipmset> <ip> -exist
|
actionunban = ipset -exist del <ipmset> <ip>
|
||||||
|
|
||||||
[ipstype_firewalld]
|
[ipstype_firewalld]
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ before = iptables.conf
|
||||||
# Notes.: command executed on demand at the first ban (or at the start of Fail2Ban if actionstart_on_demand is set to false).
|
# Notes.: command executed on demand at the first ban (or at the start of Fail2Ban if actionstart_on_demand is set to false).
|
||||||
# Values: CMD
|
# Values: CMD
|
||||||
#
|
#
|
||||||
actionstart = ipset create <ipmset> hash:ip timeout <default-ipsettime> <familyopt>
|
actionstart = ipset -exist create <ipmset> hash:ip timeout <default-ipsettime> <familyopt>
|
||||||
<iptables> -I <chain> %(_ipt_chain_rule)s
|
<iptables> -I <chain> %(_ipt_chain_rule)s
|
||||||
|
|
||||||
# Option: actionflush
|
# Option: actionflush
|
||||||
|
@ -47,7 +47,7 @@ actionstop = <iptables> -D <chain> %(_ipt_chain_rule)s
|
||||||
# Tags: See jail.conf(5) man page
|
# Tags: See jail.conf(5) man page
|
||||||
# Values: CMD
|
# Values: CMD
|
||||||
#
|
#
|
||||||
actionban = ipset add <ipmset> <ip> timeout <ipsettime> -exist
|
actionban = ipset -exist add <ipmset> <ip> timeout <ipsettime>
|
||||||
|
|
||||||
# actionprolong = %(actionban)s
|
# actionprolong = %(actionban)s
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ actionban = ipset add <ipmset> <ip> timeout <ipsettime> -exist
|
||||||
# Tags: See jail.conf(5) man page
|
# Tags: See jail.conf(5) man page
|
||||||
# Values: CMD
|
# Values: CMD
|
||||||
#
|
#
|
||||||
actionunban = ipset del <ipmset> <ip> -exist
|
actionunban = ipset -exist del <ipmset> <ip>
|
||||||
|
|
||||||
# Several capabilities used internaly:
|
# Several capabilities used internaly:
|
||||||
|
|
||||||
|
|
|
@ -1594,11 +1594,11 @@ class ServerConfigReaderTests(LogCaptureTestCase):
|
||||||
('j-w-iptables-ipset', 'iptables-ipset-proto6[name=%(__name__)s, port="http", protocol="tcp", chain="<known/chain>"]', {
|
('j-w-iptables-ipset', 'iptables-ipset-proto6[name=%(__name__)s, port="http", protocol="tcp", chain="<known/chain>"]', {
|
||||||
'ip4': (' f2b-j-w-iptables-ipset ',), 'ip6': (' f2b-j-w-iptables-ipset6 ',),
|
'ip4': (' f2b-j-w-iptables-ipset ',), 'ip6': (' f2b-j-w-iptables-ipset6 ',),
|
||||||
'ip4-start': (
|
'ip4-start': (
|
||||||
"`ipset create f2b-j-w-iptables-ipset hash:ip timeout 0 `",
|
"`ipset -exist create f2b-j-w-iptables-ipset hash:ip timeout 0 `",
|
||||||
"`iptables -w -I INPUT -p tcp -m multiport --dports http -m set --match-set f2b-j-w-iptables-ipset src -j REJECT --reject-with icmp-port-unreachable`",
|
"`iptables -w -I INPUT -p tcp -m multiport --dports http -m set --match-set f2b-j-w-iptables-ipset src -j REJECT --reject-with icmp-port-unreachable`",
|
||||||
),
|
),
|
||||||
'ip6-start': (
|
'ip6-start': (
|
||||||
"`ipset create f2b-j-w-iptables-ipset6 hash:ip timeout 0 family inet6`",
|
"`ipset -exist create f2b-j-w-iptables-ipset6 hash:ip timeout 0 family inet6`",
|
||||||
"`ip6tables -w -I INPUT -p tcp -m multiport --dports http -m set --match-set f2b-j-w-iptables-ipset6 src -j REJECT --reject-with icmp6-port-unreachable`",
|
"`ip6tables -w -I INPUT -p tcp -m multiport --dports http -m set --match-set f2b-j-w-iptables-ipset6 src -j REJECT --reject-with icmp6-port-unreachable`",
|
||||||
),
|
),
|
||||||
'flush': (
|
'flush': (
|
||||||
|
@ -1620,27 +1620,27 @@ class ServerConfigReaderTests(LogCaptureTestCase):
|
||||||
r"""`ip6tables -w -C INPUT -p tcp -m multiport --dports http -m set --match-set f2b-j-w-iptables-ipset6 src -j REJECT --reject-with icmp6-port-unreachable`""",
|
r"""`ip6tables -w -C INPUT -p tcp -m multiport --dports http -m set --match-set f2b-j-w-iptables-ipset6 src -j REJECT --reject-with icmp6-port-unreachable`""",
|
||||||
),
|
),
|
||||||
'ip4-ban': (
|
'ip4-ban': (
|
||||||
r"`ipset add f2b-j-w-iptables-ipset 192.0.2.1 timeout 0 -exist`",
|
r"`ipset -exist add f2b-j-w-iptables-ipset 192.0.2.1 timeout 0`",
|
||||||
),
|
),
|
||||||
'ip4-unban': (
|
'ip4-unban': (
|
||||||
r"`ipset del f2b-j-w-iptables-ipset 192.0.2.1 -exist`",
|
r"`ipset -exist del f2b-j-w-iptables-ipset 192.0.2.1`",
|
||||||
),
|
),
|
||||||
'ip6-ban': (
|
'ip6-ban': (
|
||||||
r"`ipset add f2b-j-w-iptables-ipset6 2001:db8:: timeout 0 -exist`",
|
r"`ipset -exist add f2b-j-w-iptables-ipset6 2001:db8:: timeout 0`",
|
||||||
),
|
),
|
||||||
'ip6-unban': (
|
'ip6-unban': (
|
||||||
r"`ipset del f2b-j-w-iptables-ipset6 2001:db8:: -exist`",
|
r"`ipset -exist del f2b-j-w-iptables-ipset6 2001:db8::`",
|
||||||
),
|
),
|
||||||
}),
|
}),
|
||||||
# iptables-ipset-proto6-allports --
|
# iptables-ipset-proto6-allports --
|
||||||
('j-w-iptables-ipset-ap', 'iptables-ipset-proto6-allports[name=%(__name__)s, chain="<known/chain>"]', {
|
('j-w-iptables-ipset-ap', 'iptables-ipset-proto6-allports[name=%(__name__)s, chain="<known/chain>"]', {
|
||||||
'ip4': (' f2b-j-w-iptables-ipset-ap ',), 'ip6': (' f2b-j-w-iptables-ipset-ap6 ',),
|
'ip4': (' f2b-j-w-iptables-ipset-ap ',), 'ip6': (' f2b-j-w-iptables-ipset-ap6 ',),
|
||||||
'ip4-start': (
|
'ip4-start': (
|
||||||
"`ipset create f2b-j-w-iptables-ipset-ap hash:ip timeout 0 `",
|
"`ipset -exist create f2b-j-w-iptables-ipset-ap hash:ip timeout 0 `",
|
||||||
"`iptables -w -I INPUT -p tcp -m set --match-set f2b-j-w-iptables-ipset-ap src -j REJECT --reject-with icmp-port-unreachable`",
|
"`iptables -w -I INPUT -p tcp -m set --match-set f2b-j-w-iptables-ipset-ap src -j REJECT --reject-with icmp-port-unreachable`",
|
||||||
),
|
),
|
||||||
'ip6-start': (
|
'ip6-start': (
|
||||||
"`ipset create f2b-j-w-iptables-ipset-ap6 hash:ip timeout 0 family inet6`",
|
"`ipset -exist create f2b-j-w-iptables-ipset-ap6 hash:ip timeout 0 family inet6`",
|
||||||
"`ip6tables -w -I INPUT -p tcp -m set --match-set f2b-j-w-iptables-ipset-ap6 src -j REJECT --reject-with icmp6-port-unreachable`",
|
"`ip6tables -w -I INPUT -p tcp -m set --match-set f2b-j-w-iptables-ipset-ap6 src -j REJECT --reject-with icmp6-port-unreachable`",
|
||||||
),
|
),
|
||||||
'flush': (
|
'flush': (
|
||||||
|
@ -1662,16 +1662,16 @@ class ServerConfigReaderTests(LogCaptureTestCase):
|
||||||
r"""`ip6tables -w -C INPUT -p tcp -m set --match-set f2b-j-w-iptables-ipset-ap6 src -j REJECT --reject-with icmp6-port-unreachable`""",
|
r"""`ip6tables -w -C INPUT -p tcp -m set --match-set f2b-j-w-iptables-ipset-ap6 src -j REJECT --reject-with icmp6-port-unreachable`""",
|
||||||
),
|
),
|
||||||
'ip4-ban': (
|
'ip4-ban': (
|
||||||
r"`ipset add f2b-j-w-iptables-ipset-ap 192.0.2.1 timeout 0 -exist`",
|
r"`ipset -exist add f2b-j-w-iptables-ipset-ap 192.0.2.1 timeout 0`",
|
||||||
),
|
),
|
||||||
'ip4-unban': (
|
'ip4-unban': (
|
||||||
r"`ipset del f2b-j-w-iptables-ipset-ap 192.0.2.1 -exist`",
|
r"`ipset -exist del f2b-j-w-iptables-ipset-ap 192.0.2.1`",
|
||||||
),
|
),
|
||||||
'ip6-ban': (
|
'ip6-ban': (
|
||||||
r"`ipset add f2b-j-w-iptables-ipset-ap6 2001:db8:: timeout 0 -exist`",
|
r"`ipset -exist add f2b-j-w-iptables-ipset-ap6 2001:db8:: timeout 0`",
|
||||||
),
|
),
|
||||||
'ip6-unban': (
|
'ip6-unban': (
|
||||||
r"`ipset del f2b-j-w-iptables-ipset-ap6 2001:db8:: -exist`",
|
r"`ipset -exist del f2b-j-w-iptables-ipset-ap6 2001:db8::`",
|
||||||
),
|
),
|
||||||
}),
|
}),
|
||||||
# iptables (oneport) --
|
# iptables (oneport) --
|
||||||
|
@ -1949,11 +1949,11 @@ class ServerConfigReaderTests(LogCaptureTestCase):
|
||||||
('j-w-fwcmd-ipset', 'firewallcmd-ipset[name=%(__name__)s, port="http", protocol="tcp", chain="<known/chain>"]', {
|
('j-w-fwcmd-ipset', 'firewallcmd-ipset[name=%(__name__)s, port="http", protocol="tcp", chain="<known/chain>"]', {
|
||||||
'ip4': (' f2b-j-w-fwcmd-ipset ',), 'ip6': (' f2b-j-w-fwcmd-ipset6 ',),
|
'ip4': (' f2b-j-w-fwcmd-ipset ',), 'ip6': (' f2b-j-w-fwcmd-ipset6 ',),
|
||||||
'ip4-start': (
|
'ip4-start': (
|
||||||
"`ipset create f2b-j-w-fwcmd-ipset hash:ip timeout 0 `",
|
"`ipset -exist create f2b-j-w-fwcmd-ipset hash:ip timeout 0 `",
|
||||||
"`firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp -m multiport --dports http -m set --match-set f2b-j-w-fwcmd-ipset src -j REJECT --reject-with icmp-port-unreachable`",
|
"`firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp -m multiport --dports http -m set --match-set f2b-j-w-fwcmd-ipset src -j REJECT --reject-with icmp-port-unreachable`",
|
||||||
),
|
),
|
||||||
'ip6-start': (
|
'ip6-start': (
|
||||||
"`ipset create f2b-j-w-fwcmd-ipset6 hash:ip timeout 0 family inet6`",
|
"`ipset -exist create f2b-j-w-fwcmd-ipset6 hash:ip timeout 0 family inet6`",
|
||||||
"`firewall-cmd --direct --add-rule ipv6 filter INPUT_direct 0 -p tcp -m multiport --dports http -m set --match-set f2b-j-w-fwcmd-ipset6 src -j REJECT --reject-with icmp6-port-unreachable`",
|
"`firewall-cmd --direct --add-rule ipv6 filter INPUT_direct 0 -p tcp -m multiport --dports http -m set --match-set f2b-j-w-fwcmd-ipset6 src -j REJECT --reject-with icmp6-port-unreachable`",
|
||||||
),
|
),
|
||||||
'flush': (
|
'flush': (
|
||||||
|
@ -1969,27 +1969,27 @@ class ServerConfigReaderTests(LogCaptureTestCase):
|
||||||
"`ipset destroy f2b-j-w-fwcmd-ipset6`",
|
"`ipset destroy f2b-j-w-fwcmd-ipset6`",
|
||||||
),
|
),
|
||||||
'ip4-ban': (
|
'ip4-ban': (
|
||||||
r"`ipset add f2b-j-w-fwcmd-ipset 192.0.2.1 timeout 0 -exist`",
|
r"`ipset -exist add f2b-j-w-fwcmd-ipset 192.0.2.1 timeout 0`",
|
||||||
),
|
),
|
||||||
'ip4-unban': (
|
'ip4-unban': (
|
||||||
r"`ipset del f2b-j-w-fwcmd-ipset 192.0.2.1 -exist`",
|
r"`ipset -exist del f2b-j-w-fwcmd-ipset 192.0.2.1`",
|
||||||
),
|
),
|
||||||
'ip6-ban': (
|
'ip6-ban': (
|
||||||
r"`ipset add f2b-j-w-fwcmd-ipset6 2001:db8:: timeout 0 -exist`",
|
r"`ipset -exist add f2b-j-w-fwcmd-ipset6 2001:db8:: timeout 0`",
|
||||||
),
|
),
|
||||||
'ip6-unban': (
|
'ip6-unban': (
|
||||||
r"`ipset del f2b-j-w-fwcmd-ipset6 2001:db8:: -exist`",
|
r"`ipset -exist del f2b-j-w-fwcmd-ipset6 2001:db8::`",
|
||||||
),
|
),
|
||||||
}),
|
}),
|
||||||
# firewallcmd-ipset (allports) --
|
# firewallcmd-ipset (allports) --
|
||||||
('j-w-fwcmd-ipset-ap', 'firewallcmd-ipset[name=%(__name__)s, actiontype=<allports>, protocol="tcp", chain="<known/chain>"]', {
|
('j-w-fwcmd-ipset-ap', 'firewallcmd-ipset[name=%(__name__)s, actiontype=<allports>, protocol="tcp", chain="<known/chain>"]', {
|
||||||
'ip4': (' f2b-j-w-fwcmd-ipset-ap ',), 'ip6': (' f2b-j-w-fwcmd-ipset-ap6 ',),
|
'ip4': (' f2b-j-w-fwcmd-ipset-ap ',), 'ip6': (' f2b-j-w-fwcmd-ipset-ap6 ',),
|
||||||
'ip4-start': (
|
'ip4-start': (
|
||||||
"`ipset create f2b-j-w-fwcmd-ipset-ap hash:ip timeout 0 `",
|
"`ipset -exist create f2b-j-w-fwcmd-ipset-ap hash:ip timeout 0 `",
|
||||||
"`firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp -m set --match-set f2b-j-w-fwcmd-ipset-ap src -j REJECT --reject-with icmp-port-unreachable`",
|
"`firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp -m set --match-set f2b-j-w-fwcmd-ipset-ap src -j REJECT --reject-with icmp-port-unreachable`",
|
||||||
),
|
),
|
||||||
'ip6-start': (
|
'ip6-start': (
|
||||||
"`ipset create f2b-j-w-fwcmd-ipset-ap6 hash:ip timeout 0 family inet6`",
|
"`ipset -exist create f2b-j-w-fwcmd-ipset-ap6 hash:ip timeout 0 family inet6`",
|
||||||
"`firewall-cmd --direct --add-rule ipv6 filter INPUT_direct 0 -p tcp -m set --match-set f2b-j-w-fwcmd-ipset-ap6 src -j REJECT --reject-with icmp6-port-unreachable`",
|
"`firewall-cmd --direct --add-rule ipv6 filter INPUT_direct 0 -p tcp -m set --match-set f2b-j-w-fwcmd-ipset-ap6 src -j REJECT --reject-with icmp6-port-unreachable`",
|
||||||
),
|
),
|
||||||
'flush': (
|
'flush': (
|
||||||
|
@ -2005,16 +2005,16 @@ class ServerConfigReaderTests(LogCaptureTestCase):
|
||||||
"`ipset destroy f2b-j-w-fwcmd-ipset-ap6`",
|
"`ipset destroy f2b-j-w-fwcmd-ipset-ap6`",
|
||||||
),
|
),
|
||||||
'ip4-ban': (
|
'ip4-ban': (
|
||||||
r"`ipset add f2b-j-w-fwcmd-ipset-ap 192.0.2.1 timeout 0 -exist`",
|
r"`ipset -exist add f2b-j-w-fwcmd-ipset-ap 192.0.2.1 timeout 0`",
|
||||||
),
|
),
|
||||||
'ip4-unban': (
|
'ip4-unban': (
|
||||||
r"`ipset del f2b-j-w-fwcmd-ipset-ap 192.0.2.1 -exist`",
|
r"`ipset -exist del f2b-j-w-fwcmd-ipset-ap 192.0.2.1`",
|
||||||
),
|
),
|
||||||
'ip6-ban': (
|
'ip6-ban': (
|
||||||
r"`ipset add f2b-j-w-fwcmd-ipset-ap6 2001:db8:: timeout 0 -exist`",
|
r"`ipset -exist add f2b-j-w-fwcmd-ipset-ap6 2001:db8:: timeout 0`",
|
||||||
),
|
),
|
||||||
'ip6-unban': (
|
'ip6-unban': (
|
||||||
r"`ipset del f2b-j-w-fwcmd-ipset-ap6 2001:db8:: -exist`",
|
r"`ipset -exist del f2b-j-w-fwcmd-ipset-ap6 2001:db8::`",
|
||||||
),
|
),
|
||||||
}),
|
}),
|
||||||
# firewallcmd-rich-rules --
|
# firewallcmd-rich-rules --
|
||||||
|
|
Loading…
Reference in New Issue