
Exposer un serveur Linux sur le réseau revient à attirer les bots comme un aimant. Sans mesures de sécurité, vos journaux contiennent probablement déjà des milliers de tentatives de connexion infructueuses : des systèmes automatisés testent en permanence différentes combinaisons d'identifiants et de mots de passe pour tenter de prendre le contrôle de votre machine. attaques par force brute.
C’est là qu’intervient Fail2ban, un outil qui agit comme un chien de garde infatigable. Il ne s’agit pas d’un pare-feu au sens strict, mais plutôt… analyse les journaux système Et lorsqu'il détecte une tentative d'intrusion, il bloque l'accès en bloquant l'adresse IP de l'utilisateur grâce à des outils comme iptables ou nftables. Voyons comment l'optimiser pour rendre votre serveur inviolable.
Qu'est-ce que Fail2ban exactement et comment ça fonctionne ?
En résumé, Fail2ban est un service qui surveille en permanence les fichiers journaux de vos services. Lorsqu'il détecte des comportements suspects correspondant à des règles prédéfinies, il effectue des requêtes. filtresLe programme commence à comptabiliser les échecs. Si une adresse IP atteint la limite de tentatives autorisées dans un délai donné, le programme exécute une… actionce qui implique généralement d'ajouter cette adresse IP à la liste noire du pare-feu.
Ces configurations sont organisées en ce que l'on appelle prisons ou prisonsUne jail est fondamentalement un ensemble de règles appliquées à un service spécifique (comme SSH, Apache ou MySQL). Ainsi, vous pouvez définir une politique très stricte pour l'accès distant et une politique plus permissive pour le serveur web, garantissant que Les intrus sont bloqués automatiquement, sans que vous ayez à vérifier manuellement les journaux toutes les cinq minutes.

Installation selon votre distribution Linux
Selon le système que vous utilisez, la commande pour l'installer varie légèrement, mais elle est généralement disponible dans presque tous les dépôts officiels.
- Sur Ubuntu et Debian : C'est très simple, il suffit de courir
sudo apt updatesuivi desudo apt install fail2ban. - Sur Rocky Linux ou AlmaLinux : Comme il s'agit de distributions Enterprise, vous devez d'abord activer le référentiel EPEL avec
sudo dnf install epel-releasepuis installez le paquet avecsudo dnf install fail2ban fail2ban-firewalld. - Sous Alpine Linux : Utilisez le gestionnaire APK avec
sudo apk add fail2banEt, puisqu'il utilise OpenRC, vous devez l'activer avecsudo rc-update add fail2ban defaultet commencez parsudo rc-service fail2ban start.

Configuration principale : Le secret du fichier .local
Une erreur très fréquente consiste à modifier directement le fichier. jail.confNe le faites pas ! Ce fichier risque d'être écrasé lors de la mise à jour du système. La règle d'or est d'en créer une copie. prison.localTous les paramètres que vous ajouterez à ce deuxième fichier auront priorité sur l'original, et vos modifications seront écrasées. À l'abri des mises à jour.
Pour commencer, vous pouvez cloner le fichier original avec sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local Ouvrez-le ensuite avec votre éditeur préféré, tel que nano ou vim. Dans la section [DÉFAUT] C’est ici que vous définissez le comportement global du système :
- bantime : El tiempo que la IP maliciosa se quedará en el congelador. Puede ser en segundos o usando ‘m’ para minutos (ej. 10m).
- trouver du temps : L'intervalle de temps pendant lequel Fail2ban vérifie les erreurs. Si un utilisateur échoue 5 fois en une heure, mais que le temps de recherche est de 10 minutes, il ne sera pas banni.
- maxretry : Le nombre de tentatives infructueuses autorisées avant que le système n'indique Ça suffit, bloquez l'adresse IP.
- ignoreip : Indispensable pour éviter votre propre bannissement. Vous devez saisir ici votre adresse IP publique ou votre plage VPN.
Protection des services spécifiques étape par étape
Une fois les paramètres généraux configurés, il est temps d'activer les jails pour les services qui vous préoccupent le plus. Pour qu'une protection fonctionne, vous devez définir enabled = true dans sa section respective au sein jail.local.
Accès SSH (Le point le plus critique)
Le port 22 est la cible principale. Une configuration robuste permettrait de définir maxretry = 3 est notre valeur principale. bantime = 3600 (une heure). Fail2ban lira le fichier. /var/log/auth.log (sur Debian/Ubuntu) ou / var / log / secure (sur CentOS/RHEL) pour détecter les échecs d'authentification et fermer l'accès à l'attaquant.
Serveurs Web (Apache et Nginx)
Si vous possédez un site web ou une boutique en ligne, des robots tenteront d'accéder à des routes sensibles telles que : /wp-admin o /login.phpVous pouvez créer des filtres personnalisés dans /etc/fail2ban/filter.d/ pour détecter ces schémas. Par exemple, pour Protéger WordPressLes erreurs 403 ou les tentatives infructueuses sont surveillées dans wp-login.php, en bloquant l'adresse IP si elle dépasse les limites fixées dans la prison Apache ou Nginx.
Bases de données et FTP
Pour MySQL, vous pouvez surveiller le journal des erreurs pour la phrase Accès refusé à l'utilisateurDans le cas du FTP (comme ProFTPD), il est essentiel de s'assurer que le logpath Assurez-vous de faire correspondre le chemin d'accès exact à vos journaux, car si Fail2ban ne trouve pas le fichier journal, la protection ne fonctionnera tout simplement pas.
Gestion avancée avec fail2ban-client
Il n'est pas toujours nécessaire de modifier des fichiers et de redémarrer le service pour effectuer des modifications rapides. La commande fail2ban-client Il vous permet de gérer le système à la volée depuis la console.
Pour voir quelles prisons sont actives et combien d'adresses IP sont bloquées, utilisez sudo fail2ban-client statusSi vous souhaitez explorer plus en détail un service, tel que SSH, exécutez sudo fail2ban-client status sshdDe plus, si par erreur Vous avez bloqué un collègue Vous pouvez également libérer rapidement l'adresse IP vous-même à l'aide de la commande. sudo fail2ban-client set sshd unbanip IP_A_DESBLOQUEAR.
Gestion et résolution des problèmes
Si vous constatez que Fail2ban ne bloque pas comme il le devrait, commencez par consulter le fichier journal de l'outil. /var/log/fail2ban.log. En utilisant tail -f Vous pouvez voir en temps réel qui est banni et pourquoi.
N'oubliez pas que Fail2ban stocke l'état du verrou dans une base de données SQLite. /var/lib/fail2ban/fail2ban.sqlite3Par conséquent, si vous redémarrez le serveur, les adresses IP qui avaient été bannies seront débloquées. restera bloqué jusqu'à l'expiration de votre période de pénalité. Lorsque vous modifiez des fichiers de configuration, n'oubliez pas d'appliquer les modifications avec sudo systemctl restart fail2ban.
L'implémentation de cet outil transforme votre serveur, d'une cible facile, en une forteresse automatisée, réduisant la charge du processeur grâce au blocage du trafic malveillant au niveau du réseau. Vous pouvez ainsi dormir sur vos deux oreilles, sachant que les bots ne pourront pas s'y introduire par force brute. En combinant l'utilisation de fichiers .local, la gestion de jails spécifiques et la surveillance constante des journaux, vous obtenez un résultat optimal. défense en profondeur Indispensable pour tout administrateur système Linux.
