Installer et configurer Fail2ban
Comment protéger votre serveur SSH contre les attaques par force brute avec Fail2ban.
Fail2ban est un daemon qui surveille vos fichiers de logs et bannit automatiquement les adresses IP au comportement suspect — trop de tentatives de connexion échouées, scans de ports et autres schémas similaires. C'est l'une des façons les plus simples et les plus efficaces de protéger votre serveur SSH contre les attaques par force brute.
Installation
Ubuntu / Debian :
apt-get install fail2ban
CentOS :
yum install fail2ban
Structure de la configuration
Fail2ban dispose de deux fichiers de configuration principaux :
/etc/fail2ban/fail2ban.conf— contrôle le démarrage et le fonctionnement du processus Fail2ban lui-même/etc/fail2ban/jail.conf— définit les règles de protection pour des services spécifiques, dont SSH
Le fichier jail.conf est divisé en sections appelées jails — chacune cible un service et un type d'attaque particuliers :
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 600
maxretry = 3
banaction = iptables-multiport
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Les paramètres de la section [DEFAULT] s'appliquent à tous les jails, sauf s'ils sont explicitement redéfinis dans une section spécifique.
Le jail [ssh] gère la protection contre les tentatives de connexion échouées répétées — le brute-force classique.
Description des paramètres clés
ignoreip— adresses IP qui ne seront jamais bannies. Accepte une liste d'IPs, de masques de sous-réseau ou de noms DNS séparés par des espaces.bantime— durée (en secondes) pendant laquelle une IP reste bannie avant d'être automatiquement libérée.maxretry— nombre d'événements correspondants qui déclenche un bannissement. Pour[ssh], il s'agit du nombre de tentatives de connexion échouées.findtime— la fenêtre de temps (en secondes) durant laquellemaxretryévénements doivent survenir pour qu'un bannissement soit appliqué. Par défaut : 600 secondes (10 minutes).enabled— mettre àtruepour activer un jail,falsepour le désactiver.port— le port sur lequel votre service écoute. Pour SSH, c'est22ou l'aliasssh.filter— le nom du fichier de filtre contenant les expressions régulières que Fail2ban utilise pour détecter les événements suspects. Le filtresshdse trouve dans/etc/fail2ban/filter.d/sshd.conf.logpath— le fichier de log que Fail2ban surveille. Toute l'activité de connexion (réussie ou échouée) est enregistrée par défaut dans/var/log/auth.log.
Bonnes pratiques de configuration
Ne modifiez jamais jail.conf directement. Fail2ban est conçu pour être personnalisé via des fichiers .local — ils sont chargés automatiquement et ont priorité sur les valeurs par défaut. Vos modifications survivront ainsi aux mises à jour du paquet.
Créez votre propre fichier de surcharge :
nano /etc/fail2ban/jail.local
Voici une configuration de départ solide :
[DEFAULT]
# L'IP statique de votre serveur — évite de vous bannir accidentellement vous-même.
# Si vous ne définissez pas ignoreip ici, commentez-le dans jail.conf.
ignoreip = 57.66.158.131
[ssh]
# Si en l'espace d'1 heure...
findtime = 3600
# ...6 tentatives de connexion échouées sont détectées...
maxretry = 6
# ...cette IP est bannie pour 24 heures.
bantime = 86400
Pourquoi modifier
ignoreip: la valeur par défaut127.0.0.1/8est une faille de sécurité sur les serveurs partagés. Si un attaquant compromet n'importe quel compte shell sur la machine, il peut lancer un outil de brute-force en local — et Fail2ban l'ignorera, car le trafic semble provenir de localhost.
Pourquoi augmenter
findtime: les botnets qui mènent des attaques par « brute-force lent » sont précisément conçus pour contourner la fenêtre par défaut de 10 minutes. Avecmaxretry = 6, un attaquant peut essayer 5 mots de passe, attendre 10 minutes, en essayer 5 autres et recommencer indéfiniment sans jamais être banni. Augmenterfindtimeà une heure ou plus ferme cette brèche.
Redémarrage de Fail2ban
Une fois votre configuration en place, redémarrez le service :
service fail2ban restart
Aide
Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !