diff --git a/HowtoFail2Ban.md b/HowtoFail2Ban.md index 7a166be0..2273866e 100644 --- a/HowtoFail2Ban.md +++ b/HowtoFail2Ban.md @@ -159,10 +159,29 @@ The following regular expression are defined: [...] ~~~ +## Ajouter ses propres jails -## Règles de filtrage +On peut bien sûr ajouter ses propres _jails_ en ajoutant dans le fichier `jail.local`, un exemple : -Un certain nombre de règles de filtrage sont définies dans `/etc/fail2ban/filter.d/` : +~~~ +[custom-1234] + +enabled = true +port = http,https +filter = accesslog-custom-1234 +logpath = /var/log/access.log +maxretry = 5 +findtime = 180 +bantime = 86400 +ignoreip = 127.0.0.1/8 192.0.2.42 +action = iptables-multiport,sendmail[dest=jdoe@example.com] +~~~~ + +> *Attention* : en cas d'action liée à iptables (ce qui est le défaut), le nom de la jail ne doit pas excéder 20 caractères ! + +### Règles de filtrage + +Les règles de filtrage sont définies dans `/etc/fail2ban/filter.d/` : ~~~ 3proxy.conf apache-noscript.conf couriersmtp.conf exim.conf lighttpd-auth.conf openwebmail.conf proftpd.conf selinux-ssh.conf squid.conf webmin-auth.conf @@ -173,7 +192,7 @@ apache-modsecurity.conf common.conf ejabberd-auth.conf gssftpd.conf apache-nohome.conf courierlogin.conf exim-common.conf horde.conf nsd.conf postfix-sasl.conf selinux-common.conf solid-pop3d.conf vsftpd.conf ~~~ -On peut écrire ses propres règles en s'appuyant sur [les expressions régulières Python](https://docs.python.org/3/library/re.html) pour détecter la variable __. +On peut écrire ses propres règles de filtrage en s'appuyant sur [les expressions régulières Python](https://docs.python.org/3/library/re.html) pour détecter la variable __. Exemple d'une règle : @@ -202,12 +221,11 @@ $ fail2ban-regex auth.log /etc/fail2ban/filter.d/evolix-test.conf [...] ~~~ -## Actions +### Actions -Les actions se trouvent par défaut dans /etc/fail2ban/action.d/ +Les actions sont définies dans `/etc/fail2ban/action.d/` : ~~~ -# ls /etc/fail2ban/action.d/ apf.conf firewallcmd-ipset.conf iptables.conf iptables-xt_recent-echo.conf osx-ipfw.conf sendmail-whois-lines.conf badips.conf firewallcmd-new.conf iptables-ipset-proto4.conf mail-buffered.conf pf.conf shorewall.conf blocklist_de.conf hostsdeny.conf iptables-ipset-proto6-allports.conf mail.conf route.conf ufw.conf @@ -217,17 +235,16 @@ dshield.conf iptables-allports.conf iptables-multiport-log.conf dummy.conf iptables-blocktype.conf iptables-new.conf osx-afctl.conf sendmail-whois.conf ~~~ -Par défaut dans le jail.conf est définis l'action par défaut si non indiqué pour chaque jail (services) configurés : +Si l'on ne précise pas d'action, l'action sera par défaut _iptables-multiport_ (définie dans `jail.conf`) : ~~~ banaction = iptables-multiport ~~~ -Exemple pour jail ssh avec envoie de mail vers user@example.com : +Exemple pour bannir et déclencher l'envoi d'un email : ~~~ -action = iptables[name=ssh,port=22,protocol=tcp] - sendmail[name=ssh,dest=user@example.com] +action = iptables-multiport,sendmail[dest=jdoe@example.com] ~~~ @@ -565,3 +582,19 @@ Pour mettre en whitelist certaines adresses IP, il faut utiliser le paramètre _ ~~~ ignoreip = 127.0.0.1/8 192.0.2.42 ~~~ + +### Erreur "fail2ban.actions.action: ERROR" avec jail au nom trop long + +Si le nom de votre jail dépasse 20 caractères, vous obtiendrez des erreurs du type : + +~~~ +fail2ban.actions.action: ERROR iptables -N fail2ban-accesslog-custom-12345 +fail2ban.actions.action: ERROR iptables -n -L INPUT | grep -q fail2ban-accesslog-custom-12345 returned 100 +~~~ + +la raison est que Fail2Ban utilise le nom de la jail pour ajouter une chaîne IPTables et elle ne doit pas dépasser une certaine longueur : + +~~~ +22:52 < reg> iptables v1.4.14: chain name `fail2ban-accesslog-custom-12345' too long (must be under 29 chars) +~~~ +