J'utilise un filtre personnalisé dans fail2ban pour rechercher dans son propre journal et bannir une IP après 5 bannissements à partir de n'importe lequel des filtres réguliers. J'utilise iptables-allports
comme action pour cela. Tous les autres filtres sont configurés avec iptables-multiport
.
Il s'agit de la configuration spécifique dans jail.conf
[fail2ban]
enabled = true
filter = fail2ban
action = iptables-allports[name=fail2ban]
logpath = /var/log/fail2ban.log
maxretry = 5
findtime = 604800
bantime = 2592000
Mon filtre fail2ban.conf
ressemble à ceci (commentaires redondants supprimés)
[Definition]
# Count all bans in the logfile
failregex = fail2ban.actions: WARNING \[(.*)\] Ban <HOST>
# Ignore our own bans, to keep our counts exact.
ignoreregex = fail2ban.actions: WARNING \[fail2ban\] Ban <HOST>
iptables-allports.conf
est la valeur par défaut fournie avec fail2ban 0.8.6-3 pour Ubuntu 12.04.2.
Le problème est que lorsqu'une adresse IP est bannie par l'un des filtres réguliers, par exemple sshd, elle est bannie pendant 10 minutes. Mais la cinquième fois que la même adresse est bannie, le filtre fail2ban est censé bannir cette IP pour 30 jours, mais comme elle est déjà bannie dans la chaîne fail2ban-sshd, il échoue.
Le problème est peut-être plus facile à comprendre si vous regardez ce journal.
2013-03-19 16:28:34,304 fail2ban.actions: WARNING [ssh] Ban 202.191.128.252
2013-03-19 16:38:34,992 fail2ban.actions: WARNING [ssh] Unban 202.191.128.252
2013-03-19 22:08:58,961 fail2ban.actions: WARNING [ssh] Ban 202.191.128.252
2013-03-19 22:18:59,675 fail2ban.actions: WARNING [ssh] Unban 202.191.128.252
2013-03-20 03:52:25,005 fail2ban.actions: WARNING [ssh] Ban 202.191.128.252
2013-03-20 04:02:25,672 fail2ban.actions: WARNING [ssh] Unban 202.191.128.252
2013-03-20 09:29:51,020 fail2ban.actions: WARNING [ssh] Ban 202.191.128.252
2013-03-20 09:39:51,734 fail2ban.actions: WARNING [ssh] Unban 202.191.128.252
2013-03-20 12:34:01,832 fail2ban.actions: WARNING [ssh] Ban 202.191.128.252
2013-03-20 12:34:03,718 fail2ban.actions: WARNING [fail2ban] 202.191.128.252 already banned
2013-03-20 12:44:02,545 fail2ban.actions: WARNING [ssh] Unban 202.191.128.252
Comme vous pouvez le voir, fail2ban considère que l'IP est déjà interdite, même si elle concerne un port différent (ou plutôt : un port spécifique, 22, au lieu du générique "tous les ports") et ne fait donc rien.
Je me demande si, et comment, vous pouvez faire en sorte que fail2ban interdise l'ip dans la chaîne fail2ban, même si elle est déjà interdite pour ssh ?
Tout conseil est le bienvenu. Merci.