Fail2Ban : Protéger son serveur des attaques Brute-Force
Tutoriel détaillé pour installer et configurer Fail2Ban, une solution de protection contre les attaques par force brute sur Linux.
Fail2Ban est un framework de prévention contre les intrusions qui protège les serveurs informatiques contre les attaques par force brute. Il fonctionne en analysant les logs de divers services (SSH, Apache, FTP, etc.) et en bloquant les adresses IP qui montrent des signes d'activité malveillante, comme de trop nombreuses tentatives de connexion infructueuses.
Pourquoi utiliser Fail2Ban ?
- Prévention des attaques par force brute : Bloque automatiquement les attaquants avant qu'ils ne réussissent à deviner un mot de passe.
- Réduction de la charge du serveur : Diminue le nombre de tentatives de connexion inutiles qui consomment des ressources.
- Amélioration de la sécurité globale : Ajoute une couche de défense proactive simple et efficace.
- Hautement configurable : Peut être adapté pour surveiller presque n'importe quel service qui produit des fichiers de log.
Prérequis
- Un serveur Linux (Ubuntu/Debian, CentOS/RHEL, etc.).
- Accès root ou privilèges sudo.
- Un pare-feu fonctionnel (comme UFW ou firewalld), bien que Fail2Ban puisse fonctionner directement avec iptables.
Installation
# Sur Debian / Ubuntu
sudo apt-get update
sudo apt-get install -y fail2ban
# Sur CentOS / RHEL (nécessite le dépôt EPEL)
sudo yum install -y epel-release
sudo yum install -y fail2ban
Une fois installé, le service démarre automatiquement et une configuration par défaut pour SSH est souvent déjà active.
Configuration
La configuration de Fail2Ban se fait principalement via des fichiers .conf et .local dans le répertoire /etc/fail2ban/.
Règle d'or : Ne modifiez jamais les fichiers .conf. Créez toujours un fichier .local pour vos surcharges. Les paramètres dans .local écrasent ceux de .conf.
Étape 1 : Créer un fichier de configuration local
Copiez le fichier de configuration principal pour créer votre fichier de configuration local.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Maintenant, modifiez /etc/fail2ban/jail.local.
sudo nano /etc/fail2ban/jail.local
Étape 2 : Configuration globale [DEFAULT]
Dans la section [DEFAULT], vous pouvez définir les paramètres par défaut pour toutes les "jails" (prisons).
[DEFAULT]
# IP à ignorer (localhost, et éventuellement votre IP fixe)
ignoreip = 127.0.0.1/8 ::1
# Durée de bannissement (ex: 1 heure)
bantime = 1h
# Période pendant laquelle les tentatives sont comptées (ex: 10 minutes)
findtime = 10m
# Nombre de tentatives avant bannissement
maxretry = 5
Étape 3 : Activer des "Jails"
Une "jail" est une configuration pour un service spécifique. Pour activer une jail, trouvez sa section dans `jail.local` et ajoutez `enabled = true`.
Exemple : Jail pour SSH (la plus importante)
Cette jail est si commune qu'elle est souvent activée par défaut. Vérifiez la configuration :
[sshd]
enabled = true
# Les autres paramètres (port, logpath) sont souvent détectés automatiquement.
# Vous pouvez les forcer si nécessaire :
# port = ssh
# logpath = /var/log/auth.log
Exemple : Jail pour un formulaire de connexion Apache
Si vous avez un formulaire de connexion sur votre site web qui logue les échecs dans /var/log/apache2/error.log, vous pouvez le protéger.
[apache-auth]
enabled = true
port = http,https
logpath = %(apache_error_log)s
maxretry = 6
Vous devrez aussi vous assurer que le filtre correspondant (/etc/fail2ban/filter.d/apache-auth.conf) existe et correspond à vos logs.
Étape 4 : Redémarrer Fail2Ban
Après chaque modification, redémarrez le service pour appliquer la nouvelle configuration.
sudo systemctl restart fail2ban
Votre service SSH est maintenant surveillé.
Gérer Fail2Ban
L'outil en ligne de commande fail2ban-client permet d'interagir avec le service.
# Vérifier le statut global et les jails actives
sudo fail2ban-client status
# Vérifier le statut d'une jail spécifique
sudo fail2ban-client status sshd
# Débannir manuellement une IP
sudo fail2ban-client set sshd unbanip 192.168.1.10
Assurez-vous d'ajouter votre propre adresse IP (si elle est fixe) à la directive
ignoreip pour éviter de vous bannir accidentellement.
Conclusion
Fail2Ban est un outil indispensable, facile à configurer et extrêmement efficace pour bloquer la grande majorité des attaques automatisées par force brute. C'est l'une des premières choses à installer sur un nouveau serveur exposé à Internet. En quelques minutes, il renforce considérablement la posture de sécurité de votre machine.