Optimiser l'utilisation de Fail2Ban : Guide de Sécurité Basé sur des Cas Pratiques

1. Introduction

Lorsque vous gérez un serveur Linux, vous êtes susceptible de constater de nombreuses tentatives de connexion simplement en laissant le port SSH ouvert. L'outil que beaucoup utilisent pour y remédier est Fail2Ban. Cependant, se contenter de l'installer et de le configurer ne suffit pas. À long terme, les listes de bannissement peuvent s'accumuler par centaines ou milliers, ce qui peut nuire aux performances du serveur.

Dans cet article, je partage des méthodes pour utiliser Fail2Ban de manière plus efficace et efficiente en m'appuyant sur mon expérience réelle de gestion de serveurs.

Pour ceux qui souhaitent en savoir plus sur l'installation et la configuration de base de Fail2Ban, n'hésitez pas à consulter l'article précédent ! Le Gardien de votre Serveur Linux, Fail2Ban


2. Expérience Pratique : 1 113 IP Bannis en 3 Semaines

Après avoir configuré fail2ban sur un serveur Linux test pendant environ 3 semaines, un jour, j'ai exécuté la commande suivante :

sudo fail2ban-client status sshd

Le résultat était le suivant :

Currently failed: 1
Total failed: 5330
Currently banned: 1110
Total banned: 1113

En 3 semaines, 1 113 IP avaient été bannies, et 1 110 d'entre elles étaient toujours en état de bannissement. C'était configuré pour être bloqué de manière permanente grâce à bantime = -1.

Au début, j'avais l'état d'esprit de "pas de pardon pour quiconque a tenté au moins une fois !", mais lorsque des milliers d'IP sont devenues bloquées dans iptables, j'ai commencé à m'inquiéter pour la consommation des ressources système et l'efficacité de la gestion.

Finalement, j'ai dû réfléchir à une méthode durable et stratégique pour utiliser Fail2Ban.


Tux protégeant la prison des récidivistes

3. Stratégies d'Amélioration de la Configuration de Fail2Ban

✅ Ajuster la durée de bannissement de manière dynamique

  • Il est plus réaliste d'utiliser un bannissement basé sur le temps plutôt que de bloquer indéfiniment.
  • Exemple :
  • bantime = 86400        # bannissement d'une journée
    findtime = 600         # dans les 10 minutes
    maxretry = 3           # après 3 échecs

Diagramme de flux de bannissement de Fail2Ban

✅ Utiliser la prison des récidivistes

🔎 Qu'est-ce que la prison des récidivistes ?

C'est une fonctionnalité avancée qui surveille le fichier fail2ban.log géré par fail2ban, et si une IP est bloquée à plusieurs reprises dans différentes prisons, elle sera bannie sur le long terme. En d'autres termes, c'est un système de surveillance des récidives qui inflige des sanctions plus sévères aux "récidivistes".

Habituellement, les prisons individuelles comme sshd, nginx, ftp ne bloquent que pour de courtes périodes, mais la prison recidive identifie uniquement les IP avec des antécédents criminels cumulés pour les bloquer plus longtemps.

  • Appliquer un blocage à long terme uniquement pour les IP réapparaissant fréquemment
  • Les attaquants ordinaires disparaissent en un jour, mais ceux qui tentent à nouveau peuvent être filtrés
  • Exemple de configuration :
  • [recidive]
    enabled = true
    logpath = /var/log/fail2ban.log
    bantime = 604800        # une semaine
    findtime = 86400
    maxretry = 5

✅ Automatiser la gestion des logs

  • Configurer logrotate pour nettoyer automatiquement /var/log/fail2ban.log avant qu'il ne devienne trop volumineux
  • Utiliser cron ou un timer systemd pour résumer et envoyer par mail les résultats de fail2ban-client status

4. Exemple de Script Utilitaire

#!/bin/bash
fail2ban-client status sshd > /tmp/sshd-status.log
echo "Nombre de Blocs Actuels : $(grep 'Currently banned' /tmp/sshd-status.log)" | mail -s "État de Fail2Ban SSHD" your@email.com

5. Conclusion : Fail2Ban est un Outil, pas une Arme

Fail2Ban est un outil très utile pour empêcher les attaques aléatoires, mais un usage excessif peut devenir une source de surcharge serveur au lieu d'atteindre son but de blocage.

En combinant des politiques de blocage réalistes et des outils de gestion automatisés, Fail2Ban devient un partenaire de sécurité fiable plutôt qu'un casse-tête.


Aperçu de l'Article Suivant

Je prévois d'aborder la configuration de logrotate pour éviter que le fichier de log de Fail2Ban, /var/log/fail2ban.log, ne devienne trop volumineux. Si cela vous intéresse, n'hésitez pas à vous abonner !