Fail2Ban est un programme pour Linux qui détecte et bloque les attaques par force brute.

Fail2ban surveille les entrées dans les fichiers journaux (log) des différents services (par exemple SSH, FTP). Trop de tentatives échouées entraînent le blocage de l'adresse IP attaquante pendant un certain temps, si bien qu'aucune autre connexion n'est établie.

Conditions préalables

Pour utiliser Fail2ban, un serveur racine avec système d'exploitation Linux est requis (Serveur Cloud, Serveur Dédié, VPS).

Remarque : Pour les serveurs avec Plesk, les applications telles que Fail2Ban doivent toujours être installées et gérées via l'interface Plesk.

Installer Fail2ban

Ubuntu 16.04 / 18.04 / 20.04 / 22.04

Actualiser les listes de paquets :

sudo apt update

Installer Fail2ban :

sudo apt install fail2ban

Démarrer Fail2ban :

sudo systemctl start fail2ban

Démarrer Fail2ban automatiquement lors du démarrage du système :

sudo systemctl enable fail2ban

 
CentOS 7 / Stream 8 / Stream 9

Actualiser les listes de paquets :

sudo yum update

Installer le dépôt EPEL :

sudo yum install epel-release

Installer Fail2ban :

sudo yum install fail2ban

Démarrer Fail2ban :

sudo systemctl start fail2ban

Démarrer Fail2ban automatiquement lors du démarrage du système :

sudo systemctl enable fail2ban

Configurer Fail2ban

Les fichiers de configuration de Fail2Ban sont stockés dans le répertoire /etc/fail2ban. Dans ce répertoire, le fichier jail.conf contient les paramètres par défaut.

Si vous voulez écraser certains paramètres par défaut, ils doivent être inclus dans un fichier jail.local pour éviter les conflits. Il suffit de faire une copie de jail.conf et de la nommer jail.local :

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Vous pouvez alors ouvrir et éditer le fichier jail.local :

sudo nano /etc/fail2ban/jail.local

Pour éviter toute confusion à l'avenir, vous pouvez supprimer le premier bloc de texte qui vous avertit de ne pas modifier le fichier jail.conf :

# WARNING: heavily refactored in 0.9.0 release.  Please review and
#          customize settings for your setup.
#
# Changes:  in most of the cases you should not modify this
#           file, but provide customizations in jail.local file,
#           or separate .conf files under jail.d/ directory, e.g.:
#
# HOW TO ACTIVATE JAILS:
#
# YOU SHOULD NOT MODIFY THIS FILE.
#
# It will probably be overwritten or improved in a distribution update.
#
# Provide customizations in a jail.local file or a jail.d/customisation.local.
# For example to change the default bantime for all jails and to enable the
# ssh-iptables jail the following (uncommented) would appear in the .local file.
# See man 5 jail.conf for details.
#

 
Augmenter la durée de blocage

Une modification recommandée est d'augmenter la durée de blocage (ban time), qui est fixée par défaut à seulement 10 minutes (600 secondes).

Pour augmenter la durée de blocage, recherchez le paragraphe suivant :

# "bantime" is the number of seconds that a host is banned.
bantime  = 600

Remplacez 600 par le nombre de secondes désiré. Par exemple, pour bloquer les hôtes pendant deux heures, modifiez ce bloc de commandes comme suit :

# "bantime" is the number of seconds that a host is banned.
bantime  = 7200

Enregistrez le fichier et redémarrez Fail2Ban pour que vos modifications prennent effet :

sudo systemctl restart fail2ban

fail2ban.log

Toutes les actions et mesures effectuées par Fail2Ban sont enregistrées dans le fichier /var/log/fail2ban.log :

sudo less /var/log/fail2ban.log