Fail2Ban est une application qui analyse les logs de divers services (SSH, Apache, FTP…) en cherchant des correspondances entre des motifs définis dans ses filtres et les entrées des logs. Lorsqu'une correspondance est trouvée une ou plusieurs actions sont exécutées. Typiquement, Fail2Ban cherche des tentatives répétées de connexions infructueuses dans les fichiers journaux et procède à un bannissement en ajoutant une règle au pare-feu iptables ou nftables pour bannir l'adresse IP de la source.
Distribution utilisée pour l'écriture de la documentation : Debian 10 "Buster"
Fail2Ban n'est pas a proprement parler un outil de sécurité. L'objectif principal est d'éviter de surcharger les logs du système avec des milliers de tentatives de connexion. Un serveur avec un accès SSH sur le port standard, par exemple, recevra très rapidement des centaines, voire des milliers de tentatives de connexions provenant de différentes machines. Ce sont généralement des attaques par force brute lancées par des robots. Fail2ban en analysant les logs permet de bannir les IP au bout d'un certain nombre de tentatives ce qui limitera le remplissage des logs et l'utilisation de la bande passante.
Mais cela n'améliore en rien la sécurité du service concerné. Si l'accès SSH n'est pas suffisamment sécurisé (mot de passe faible par exemple) fail2ban n'empêchera pas un attaquant d'arriver à ses fins. Autrement dit, utilisez votre temps de travail pour analyser vos configurations et sécuriser vos services plutôt que d''installer et paramétrer des outils d'analyse de logs plus ou moins gourmands en ressources système.
Installation du paquet "Fail2Ban"
apt install fail2ban
Après l'installation, vous retrouverez les paramètres par défaut de Fail2Ban dans le fichier suivant
nano /etc/fail2ban/jail.conf
Création d'un nouveau fichier de configuration de Fail2Ban
nano /etc/fail2ban/jail.d/custom.conf
Vous pouvez insérer la configuration suivante
[DEFAULT]
ignoreip = 127.0.0.1 monip
findtime = 3600
bantime = 86400
maxretry = 3
La configuration suivante fonctionne comme ci-dessous
ignoreip = Permet de "whitelist" votre adresse pour enfeindre les règles déposées
findtime = Définit l'intervalle de recherche du nombre d'occurences (maxretry)
bantime = Le temps de bannissement de l'adresse IP ayant tentée plus de 3 essais, ici 86400 correspond à 24h en seconde
maxretry = Permet de définir le nombre de tentative avant bannissement
Pour redémarrer/stopper/lancer ou voir le status du service
systemctl restart fail2ban
systemctl stop fail2ban
systemctl start fail2ban
systemctl status fail2ban
Vous retrouverez les logs du paquet via ce fichier
tail -f /var/log/fail2ban.log
Il faudra ajouter la commande suivante dans votre fichier .bashrc (être à la racine pour trouver le fichier)
nano .bashrc
Ajouter la ligne suivante en bas de votre fichier
#FAIL2BAN
alias logs_fail2ban="tail -f /var/log/fail2ban.log"
Appliquer les changements sur le fichier .bashrc
source .bashrc
Commandes utiles
- Pour consulter vos jails actifs :
fail2ban-client status
- Pour savoir si une de vos jails de votre fail2ban a bannis une ou plusieurs IP, taper cette commande :
fail2ban-client status [Nom du jail]
- Pour bannir une adresse manuellement :
fail2ban-client set [nom du jail] unbanip [IP concerné]
- Pour débannir une adresse :
fail2ban-client set [nom du jail] banip [IP à bannir]
Il est possible également de configurer Fail2Ban pour les services actifs ou encore recevoir les logs sur une adresse mail spécifique, pour cela je vous invite à consulter la documentation technique de Fail2Ban
https://doc.ubuntu-fr.org/fail2ban
Ce tutoriel est basé justement sur cette fiche technique
vereecque.com