Commande Linux fail2ban
Liste complète des commandes Linux
fail2ban est un outil de prévention d'intrusion open source utilisé pour protéger les serveurs Linux contre les attaques par force brute. Il détecte les comportements malveillants, tels que de multiples tentatives de connexion SSH échouées, en surveillant les fichiers journaux système (par exemple, /var/log/auth.log), puis met automatiquement à jour les règles du pare-feu pour bloquer les adresses IP de ces attaquants.
Fonctionnalités principales de fail2ban
Surveillance des journaux en temps réel
fail2ban surveille en continu les fichiers journaux spécifiés pour rechercher des modèles prédéfinis de comportement malveillant.
Bannissement automatique d'IP
Lorsque plusieurs tentatives échouées provenant de la même IP sont détectées (seuil configurable), fail2ban ajoute automatiquement cette IP à la liste de blocage du pare-feu.
Durée de bannissement configurable
Les administrateurs peuvent définir une durée de bannissement initiale et une durée de bannissement incrémentielle après des violations répétées.
Prise en charge multi-services
Il prend en charge non seulement SSH, mais aussi la protection de plusieurs services tels qu'Apache, Nginx, FTP et les services de messagerie.
Notification par e-mail
Il peut être configuré pour envoyer des notifications par e-mail aux administrateurs lorsqu'une IP est bannie.
Installation et configuration de fail2ban
Méthodes d'installation
Sur les systèmes basés sur Debian/Ubuntu :
Exemple
sudo apt install fail2ban
Sur les systèmes basés sur RHEL/CentOS :
Exemple
sudo yum install fail2ban
Configuration de base
Les principaux fichiers de configuration de fail2ban se trouvent à :
/etc/fail2ban/jail.conf- Fichier de configuration principal (modification directe non recommandée)/etc/fail2ban/jail.local- Configuration personnalisée de l'utilisateur (modification recommandée ici)
Créer un fichier de configuration personnalisé :
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Commandes courantes de fail2ban
Démarrer/Arrêter/Redémarrer le service
Exemple
sudo systemctl stop fail2ban # Arrêter le service
sudo systemctl restart fail2ban # Redémarrer le service
sudo systemctl enable fail2ban # Activer le lancement automatique au démarrage
Afficher l'état du service
sudo systemctl status fail2ban
Afficher les adresses IP bannies
sudo fail2ban-client status sshd
Débannir une adresse IP spécifique
sudo fail2ban-client set sshd unbanip 192.168.1.100
Bannir manuellement une adresse IP
sudo fail2ban-client set sshd banip 192.168.1.100
Détails du fichier de configuration fail2ban
Paramètres de configuration principaux
Exemple
# Adresses IP ignorées (liste blanche)
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
# Durée de bannissement (secondes)
bantime = 600
# Fenêtre temporelle de détection (secondes)
findtime = 600
# Nombre maximal de tentatives
maxretry = 3
# Backend de pare-feu à utiliser
banaction = iptables-multiport
[sshd]
# Activer ou non la protection SSH
enabled = true
# Chemin du fichier journal
logpath = %(sshd_log)s
# Nom du filtre
filter = sshd
# Numéro de port
port = ssh
Filtres personnalisés
Les filtres sont définis dans/etc/fail2ban/filter.d/répertoire. Par exemple, créez un filtre SSH personnalisé :
-
Copiez le filtre SSH par défaut :
sudo cp /etc/fail2ban/filter.d/sshd.conf /etc/fail2ban/filter.d/sshd-custom.conf
-
Modifiez le filtre personnalisé et changez l'expression régulière pour correspondre à des motifs d'échec spécifiques.
Exemples pratiques fail2ban
Protéger le service SSH
-
Modifiez le fichier jail.local :
sudo nano /etc/fail2ban/jail.local
-
Ajoutez ou modifiez le contenu suivant :
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600 findtime = 600
-
Redémarrez le service fail2ban :
sudo systemctl restart fail2ban
Protéger le service Apache
-
Assurez-vous que jail.local contient le contenu suivant :
[apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/error.log maxretry = 3 bantime = 86400
-
Redémarrez le service pour appliquer la configuration.
Utilisation avancée de fail2ban
Utiliser fail2ban pour protéger des services personnalisés
-
Créer un fichier de filtre personnalisé :
sudo nano /etc/fail2ban/filter.d/myapp.conf
-
Ajouter des règles de filtre (exemple) :
[Definition] failregex = ^.* .* "POST /login.php.* 401 ignoreregex =
-
Ajouter la jail correspondante dans jail.local :
enabled = true port = http,https filter = myapp logpath = /var/log/myapp/access.log maxretry = 5 bantime = 3600
Configurer les notifications par e-mail
-
Modifiez le fichier jail.local :
[DEFAULT] destemail = admin@example.com sender = fail2ban@example.com mta = sendmail action = %(action_mwl)s
-
Assurez-vous qu'un outil de livraison de courrier (tel que sendmail ou postfix) est installé et configuré sur le système.
Journaux et dépannage de fail2ban
Afficher les journaux de fail2ban
sudo tail -f /var/log/fail2ban.log
Résolution des problèmes courants
fail2ban ne fonctionne pas
- Vérifier si le service est en cours d'exécution :
sudo systemctl status fail2ban - Vérifiez les journaux pour les erreurs :
sudo journalctl -u fail2ban
IP non bannie
- Confirmez que le chemin du journal est correct
- Vérifiez si l'expression régulière du filtre correspond aux entrées du journal
- Augmentez le niveau de journalisation pour le débogage : définissez-le dans jail.local
loglevel = DEBUG
Bannissement d'IP par faux positif
- Ajoutez les IP de confiance à la liste ignoreip
- Réduisez maxretry ou augmentez findtime
Bonnes pratiques fail2ban
-
Mettez à jour régulièrement: Gardez fail2ban à jour pour obtenir les derniers correctifs de sécurité et améliorations de fonctionnalités.
-
Configuration raisonnable:
- Définissez des valeurs appropriées pour maxretry et bantime
- Ne définissez pas bantime sur une valeur trop longue, afin d'éviter de bannir par erreur des utilisateurs légitimes
- Ne définissez pas non plus une valeur trop courte, sinon l'effet de protection sera limité
-
Surveillance et revue:
- Vérifiez régulièrement la liste des IP bannies
- Analysez les journaux pour comprendre les schémas d'attaque
-
Protection multicouche:
- Combinez fail2ban avec d'autres mesures de sécurité (comme les pare-feu et des politiques de mots de passe robustes)
- Envisagez de changer le port SSH par défaut
-
Sauvegarde de la configuration:
- Sauvegardez les fichiers de configuration et les filtres personnalisés
- Consignez toutes les modifications pour la reprise après sinistre
Résumé
fail2ban est un outil important pour la sécurité des systèmes Linux. En détectant et en bloquant automatiquement les comportements malveillants, il empêche efficacement les attaques par force brute. Configurer et utiliser correctement fail2ban peut considérablement améliorer la sécurité du serveur tout en réduisant la charge d'intervention manuelle des administrateurs. Grâce à cet article, vous devriez avoir maîtrisé l'utilisation de base et les techniques de configuration avancées de fail2ban, et être capable de personnaliser votre propre stratégie de protection de sécurité selon les besoins réels.
Autres extensions