Je suis sous Ubuntu 16.04 avec ssh activé via ufw et j'ai configuré fail2ban pour activer les jails [sshd] et [sshd-ddos] avec un maxretry de 3 (c'est-à-dire que je veux interdire les adresses IP qui échouent à s'authentifier 3 fois). Lorsque je regarde le journal d'authentification, je vois quelques adresses IP différentes qui ont échoué à s'authentifier 5 fois et ont donc été déconnectées pour trop d'échecs d'authentification. Pourquoi ces adresses IP ne sont-elles pas interdites? Je m'attends totalement à ce que j'ai mal configuré fail2ban ou que je ne comprenne pas son comportement prévu, mais d'après les tutoriels que j'ai lus (DigitalOcean, autres résultats de recherche), cette configuration devrait faire ce que j'attends. Veuillez noter également que fail2ban interdit avec succès certaines adresses IP, car je peux voir des interdictions (et des débannissements) dans le journal fail2ban.
Voici les lignes de journal pertinentes pour l'une des adresses IP avec le problème (adresse IP et hôte redactés):
"/var/log/fail2ban.log"
2017-02-17 13:23:36,148 fail2ban.filter [24793]: INFO [sshd] Found [adresse IP]
2017-02-17 13:23:38,153 fail2ban.filter [24793]: INFO [sshd] Found [adresse IP]
"/var/log/auth.log"
Feb 17 13:23:36 [hôte] sshd[15498]: pam_unix(sshd:auth): échec d'authentification; logname= uid=0 euid=0 tty=ssh ruser= rhost=[adresse IP] us
er=root
Feb 17 13:23:38 [hôte] sshd[15498]: Mot de passe incorrect pour root depuis [adresse IP] port 9498 ssh2
Feb 17 13:23:49 [hôte] sshd[15498]: message répété 5 fois: [ Mot de passe incorrect pour root depuis [adresse IP] port 9498 ssh2]
Feb 17 13:23:49 [hôte] sshd[15498]: erreur: dépassement de la limite d'essais d'authentification pour root depuis [adresse IP] port 9498 ssh2 [preauth]
Feb 17 13:23:49 [hôte] sshd[15498]: Déconnexion : Trop d'échecs d'authentification [preauth]
Feb 17 13:23:49 [hôte] sshd[15498]: PAM 5 autres échecs d'authentification; logname= uid=0 euid=0 tty=ssh ruser= rhost=[adresse IP] user=root
Feb 17 13:23:49 [hôte] sshd[15498]: Le service PAM(sshd) ignore les tentatives maximales ; 6 > 3
Voici les lignes de configuration de fail2ban pertinentes (hors commentaires), qui sont principalement une copie directe de jail.conf avec les valeurs par défaut de bantime, findtime et maxretry modifiées, et les jails [sshd], [sshd-ddos] et [recidive] activées :
"/etc/fail2ban/jail.local"
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 21600
findtime = 3600
maxretry = 3
backend = auto
usedns = warn
logencoding = auto
enabled = false
filter = %(__name__)s
destemail = root@localhost
sender = root@localhost
mta = sendmail
protocol = tcp
chain = INPUT
port = 0:65535
banaction = iptables-multiport
action_ = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
action_mw = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]
action_mwl = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]
action_xarf = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
xarf-login-attack[service=%(__name__)s, sender="%(sender)s", logpath=%(logpath)s, port="%(port)s"]
action_cf_mwl = cloudflare[cfuser="%(cfemail)s", cftoken="%(cfapikey)s"]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]
action_blocklist_de = blocklist_de[email="%(sender)s", service=%(filter)s, apikey="%(blocklist_de_apikey)s"]
action_badips = badips.py[category="%(name)s", banaction="%(banaction)s"]
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
[sshd-ddos]
# Cette prison correspond à la configuration standard de Fail2ban.
# L'action mail-whois envoie un e-mail de notification avec une demande whois
# dans le corps.
enabled = true
port = ssh
logpath = %(sshd_log)s
[recidive]
enabled = true
logpath = /var/log/fail2ban.log
banaction = iptables-allports
bantime = 604800 ; 1 semaine
findtime = 86400 ; 1 jour
maxretry = 5
Investigation supplémentaire :
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d
le fichier journal est correct comme /var/log/auth.log Lignes : 1127 lignes, 0 ignorées, 125 correspondant, 1002 manquées [traitées en 1,77 sec]
sudo iptables -L -n | less
Je peux voir certaines adresses IP interdites (avec REJET) sous "Chaîne f2b-sshd (1 référence)""