La sécurisation d’un serveur est une priorité absolue pour toute entreprise ou organisation. L’un des outils les plus importants de la boîte à outils d’un administrateur système est Fail2Ban. Ce guide explique ce qu’est Fail2Ban et comment vous pouvez l’utiliser pour protéger votre serveur Linux contre les attaques.
Conseil: en plus de Fail2Ban, découvrez ces outils open-source pour sécuriser votre serveur.
Qu’est-ce que Fail2Ban ?
Fail2Ban est un outil de prévention des intrusions qui surveille les fichiers journaux et interdit les adresses IP qui montrent des signes d’activité malveillante. Pour ce faire, il crée des «filtres» qui correspondent à certains modèles dans les fichiers journaux et exécutent des actions, telles que l’interdiction de l’adresse IP incriminée.
Pourquoi utiliser Fail2Ban ?
Il y a plusieurs raisons d’utiliser fail2ban. Ça peut:
- vous faire gagner du temps en bannissant automatiquement les adresses IP malveillantes.
- aider à sécuriser votre serveur en réduisant les chances d’une attaque réussie.
- vous donne la tranquillité d’esprit en sachant que votre serveur est surveillé et protégé.
Installation de Fail2Ban
Par défaut, Fail2Ban est disponible dans les référentiels Ubuntu. Installez-le en utilisant apt.
sudo add-apt-repository universe sudo apt update && sudo apt install fail2ban -y
Fail2Ban définira son service en arrière-plan, mais systemd le désactivera par défaut. Vous pouvez le démarrer et l’activer avec les commandes suivantes :
sudo systemctl start fail2ban sudo systemctl enable fail2ban
Vérifiez que Fail2Ban est en cours d’exécution avec la commande suivante :
sudo systemctl status fail2ban
Vous verrez une sortie similaire à l’image ci-dessous.

Configuration de Fail2Ban
Le répertoire « /etc/fail2ban » contient les fichiers de configuration de Fail2Ban. Par défaut, Fail2Ban est livré avec un fichier « jail.conf » qui contient des paramètres qui s’appliqueront à tous les services.

Cependant, il est recommandé de créer un fichier « jail.local » local et de remplacer les paramètres dans « jail.conf », car vous perdrez toutes les modifications apportées à « jail.conf » à chaque mise à jour du programme.
Vous pouvez créer votre fichier « jail.local » avec les commandes suivantes :
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ouvrez le fichier jail.local pour le modifier :
sudo nano /etc/fail2ban/jail.local

Bon à savoir: apprenez à créer un pot de miel SSH pour attraper les pirates sur votre serveur.
Explorer le fichier jail.local
Vous verrez une sortie similaire à celle ci-dessous et vous serez peut-être dépassé par le nombre d’options disponibles. Mais ne vous inquiétez pas, nous vous expliquons les options les plus importantes.

Vous verrez le symbole « # » au début d’une ligne, indiquant qu’il s’agit d’un commentaire. Fail2Ban les utilise pour expliquer ce que fait un paramètre particulier. Vous pouvez activer certains paramètres ici en supprimant ce symbole.
Le « [DEFAULT]” contient les options appliquées à toutes les prisons. Il s’agit de la configuration globale de Fail2Ban. La capture d’écran suivante en montre un exemple.

Il existe également d’autres sections qui commencent par le nom d’un service. Cette prison s’applique à un service spécifique au-dessus des prisons globales.
Par exemple, il y a une section pour la prison « sshd ». Cette section contient les options spécifiques au service sshd.

Conseil: vous pouvez également en savoir plus sur le renforcement des serveurs en sécurisant votre serveur SSH.
Activation de la fonction d’interdiction automatique
Accédez au paramètre « bantime = 1h » et supprimez le symbole « # » au début de la ligne pour l’activer. Cette ligne définit la durée pendant laquelle Fail2Ban désactivera une adresse IP. L’unité par défaut est une heure. Vous pouvez également utiliser d’autres unités, telles que les minutes (m), les jours (d) ou même les semaines (w).

Vous pouvez augmenter ou diminuer cette valeur comme bon vous semble. Par exemple, vous pouvez modifier cette valeur à 30 m pour réduire la durée de l’interdiction à 30 minutes.

Modification de la longueur de la fenêtre de connexion par défaut
Les paramètres suivants sont « maxretry » et « findtime ». Ils déterminent combien de tentatives de connexion un attaquant peut faire avant que Fail2Ban ne bannisse son adresse IP.
Les valeurs par défaut pour « maxretry » et « findtime » sont 5 et 10m. Si une adresse IP ne parvient pas à s’authentifier cinq fois en dix minutes, Fail2Ban l’interdira pour la durée spécifiée par le paramètre bantime.

Vous pouvez modifier ces valeurs comme bon vous semble. Par exemple, vous pouvez définir « maxretry » sur 3 et « findtime » sur 5m : Fail2Ban désactivera une adresse IP si elle ne parvient pas à s’authentifier trois fois en cinq minutes.

Activation de la fonction de notification de Fail2Ban
Les paramètres suivants sont destemail, sendername et mta. Ces paramètres sont ce que Fail2Ban utilisera pour configurer les notifications par e-mail.
- Le
destemailparamètre est l’adresse e-mail à laquelle le programme enverra ses notifications.
- Le
sendernameest le nom qui apparaîtra dans le champ « De » de l’e-mail de notification. - Le
mtaest l’agent de transfert de courrier que Fail2Ban utilisera pour envoyer des e-mails. Le mta par défaut est sendmail, mais vous pouvez le changer en quelque chose d’autre comme mail.
Si vous souhaitez recevoir des notifications par e-mail, vous devez décommenter ces lignes et saisir les valeurs appropriées, comme indiqué.

Lorsqu’une interdiction se produit, vous recevrez une notification par e-mail avec des détails sur l’interdiction, comme indiqué.

Création de commandes d’interdiction personnalisées
Le paramètre suivant est « action_ = ». Cela détermine l’action que Fail2ban prend lorsqu’il interdit une adresse IP. L’action par défaut consiste à utiliser iptables pour bloquer l’IP jusqu’à ce que le « bantime » soit passé.
Vous pouvez également utiliser d’autres actions, comme indiqué ci-dessous. Ce tutoriel s’en tient à la valeur par défaut pour des raisons de simplicité.
- action_mw : envoie une notification par e-mail lorsqu’une adresse IP est interdite, accompagnée des informations WHOIS pertinentes.
- action_mwl : envoie une notification par e-mail lorsqu’une adresse IP est interdite, jointe avec les informations WHOIS pertinentes et les entrées du fichier journal qui ont déclenché l’interdiction.
- action_xarf : envoie une notification par e-mail au format X-ARF lorsqu’une adresse IP est interdite avec les entrées du fichier journal qui ont déclenché l’interdiction.
De nombreuses autres actions sont disponibles, mais il est impossible de toutes les couvrir dans ce tutoriel. Tu peux en savoir plus sur toutes les actions disponibles dans la documentation Fail2ban.

Activation de la configuration spécifique au service
Outre la configuration du comportement par défaut de Fail2ban, il est également possible d’utiliser des « fichiers de filtre » prédéfinis pour certains des services Internet courants. Ce sont de petits fichiers que les développeurs ont écrits pour rechercher une sortie de journal spécifique d’un démon de serveur particulier.
Par exemple, le fichier « apache-shellshock.conf » contient tous les paramètres nécessaires pour permettre à Fail2ban de vérifier toute tentative malveillante de créer le bogue shellshock.

Vous pouvez trouver tous les fichiers de filtre disponibles pour votre système en listant le répertoire « /etc/fail2ban/filter.d » :
ls /etc/fail2ban/filter.d

Une fois que vous connaissez les filtres que vous souhaitez utiliser, dites à Fail2ban de les charger au démarrage en ouvrant votre fichier « jail.local » :
sudo nano /etc/fail2ban/jail.local
Créez un espace dans « jail.local » où vous pourrez activer vos nouveaux filtres. Je crée le mien entre l’en-tête du commentaire et le [INCLUDES] bloc.

Ajoutez les filtres que vous souhaitez activer. Par exemple, voici un extrait que j’utilise dans ma configuration :
# Comments: use '#' for comment lines and ';' (following a space) for inline comments [sshd] enabled = true [nginx-bad-request] enabled = true [bitwarden] enabled = true [INCLUDES]

Une fois terminé, enregistrez et fermez le fichier. Redémarrez fail2ban pour appliquer les modifications.
sudo systemctl restart fail2ban
Test de votre configuration
Maintenant que vous avez configuré fail2ban, il est temps de le tester.
Le moyen le plus simple de tester votre configuration est d’essayer de vous connecter plusieurs fois de suite avec un mot de passe incorrect. Vous pouvez utiliser une connexion SSH pour ce faire.
Sur une machine d’élimination, essayez de vous connecter en SSH à votre serveur Fail2ban en utilisant un nom d’utilisateur « admin ». Remplacez « your_server_ip_address » par l’adresse IP réelle de votre serveur Fail2ban.
ssh admin@your_server_ip_address
Entrez un mot de passe aléatoire lorsque vous y êtes invité et répétez-le plusieurs fois. Après quelques tentatives, vous verrez un message indiquant que le serveur a refusé votre tentative de connexion.

En plus d’utiliser ssh, vous pouvez également tester les autres fichiers de filtre dans Fail2ban en déclenchant leur « état d’échec ». Dans mon cas, j’utilise le filtre « nginx-bad-request » qui détecte s’il y a un hôte qui inonde le serveur avec des requêtes invalides.

Sachant cela, vous pouvez tester cette fonctionnalité en envoyant délibérément des requêtes vides à votre serveur Web à l’aide de curl :
curl -H "User-Agent:" -H "Host:" https://yourwebsite.com -v

Bon à savoir: tandis que Fail2ban fonctionne brillamment avec Nginx, vous pouvez également utiliser ce programme pour protéger votre serveur Apache.
Vérification des actions de Fail2ban
Enfin, exécutez la commande ci-dessous sur votre serveur Fail2ban pour vérifier que fail2ban a ajouté les règles nécessaires à iptables.
Le grep La commande filtre la sortie de la iptables commande. Le -S indique à iptables d’imprimer les règles dans un format facilement parsable.
sudo iptables -S | grep f2b
Vous verrez une sortie similaire à celle illustrée ci-dessous. L’argument « –reject-with icmp-port-unreachable » indique à iptables de renvoyer un message ICMP port unreachable au client lorsqu’il essaie de se connecter. Vous pouvez également voir les adresses IP des machines que le serveur a bannies.

Conseil: vous devez également utiliser SELinux pour sécuriser votre serveur Linux.
Questions fréquemment posées
Pourquoi est-ce que je reçois une notification par e-mail vide lorsque Fail2ban bannit une adresse IP ?
Si vous recevez une notification par e-mail vide, il est probable que vous n’ayez pas correctement configuré votre serveur de messagerie. Vérifiez la configuration de votre serveur de messagerie et assurez-vous qu’il est capable d’envoyer des e-mails.
Comment débannir une adresse IP ?
Tout d’abord, trouvez la prison où l’adresse IP est actuellement interdite : sudo fail2ban-client status <jail_name>puis débloquez l’adresse IP en exécutant la commande suivante : sudo fail2ban-client set <jail_name> unbanip <ip_address>.
Comment afficher le fichier journal fail2ban ?
Vous pouvez consulter le fichier journal fail2ban pour résoudre des problèmes ou pour voir pourquoi une adresse IP a été bannie. Le fichier « /var/log/fail2ban.log » contient tous les journaux générés par fail2ban. Utilisez le cat commande pour afficher le fichier journal fail2ban : cat /var/log/fail2ban.log.
J’ai activé plusieurs fichiers de filtre. Pourquoi ne fonctionnent-ils pas tous ?
Ce problème est très probablement causé par un filtre écrasant un autre fichier qui l’a précédé. Une façon de résoudre ce problème consiste à créer votre propre fichier de filtre en combinant plusieurs filtres ensemble.
Fail2ban protégera-t-il mon serveur d’une attaque DoS ?
Oui et non. Dans la plupart des cas, Fail2ban sera en mesure d’empêcher toute adresse IP qui spamme des demandes invalides sur votre serveur. Cependant, l’une des plus grandes limitations de ce programme est qu’il ne peut pas agir sur des événements qui ne produisent pas d’entrée de journal. En tant que tel, il est toujours important de sécuriser votre serveur Linux à l’aide d’autres outils pour ces formes d’attaques.
Soutenez notre effort ❤️
Si vous avez apprécié cet article, pensez à laisser un pourboire pour nous aider à continuer à publier du contenu de qualité.





















