Files
2026-07-20 11:05:07 +02:00

31 lines
1.5 KiB
INI

[Definition]
# Throttle (RATE_LIMIT, Phase 4) plutôt qu'un blocage total : au lieu de
# DROP toutes les connexions de <ip>, ne DROP que celles au-delà du débit
# autorisé. --hashlimit-mode srcip fait déjà le bucketing par IP source
# dans une table hashlimit partagée (f2b-<name>) : pas besoin d'un nom de
# table distinct par IP bannie, une seule table suffit pour toute la jail.
actionstart = iptables -N fail2ban-<name>
iptables -A fail2ban-<name> -j RETURN
iptables -I <chain> -p <protocol> -j fail2ban-<name>
actionstop = iptables -D <chain> -p <protocol> -j fail2ban-<name> || true
iptables -F fail2ban-<name> || true
iptables -X fail2ban-<name> || true
actioncheck = iptables -n -L <chain> | grep -q fail2ban-<name>
# actionunban doit reprendre EXACTEMENT la même spec de règle que
# actionban (seul -I vs -D change) : iptables -D échoue silencieusement
# ("Bad rule") si les deux ne correspondent pas au caractère près.
actionban = iptables -I fail2ban-<name> 1 -s <ip> -m hashlimit --hashlimit-above <hashlimit_rate> --hashlimit-burst <hashlimit_burst> --hashlimit-mode srcip --hashlimit-name f2b-<name> -j DROP
actionunban = iptables -D fail2ban-<name> -s <ip> -m hashlimit --hashlimit-above <hashlimit_rate> --hashlimit-burst <hashlimit_burst> --hashlimit-mode srcip --hashlimit-name f2b-<name> -j DROP
[Init]
name = default
protocol = tcp
chain = INPUT
hashlimit_rate = 10/sec
hashlimit_burst = 20