Fail2Ban est un service de protection qui analyse les logs système pour détecter les tentatives d’intrusion et bannit automatiquement les adresses IP suspectes via en appliquant des règles de pare-feu (iptables, nftables, firewalld, etc.) ou d’autres actions configurables.
⚙️ Gestion du service
📌 Action 🧠 Commande ▶️ Démarrer le service sudo systemctl start fail2ban
⏹️ Arrêter le service sudo systemctl stop fail2ban
🔁 Redémarrer le service sudo systemctl restart fail2ban
🔄 Recharger la config sudo fail2ban-client reload
📊 Statut du service sudo systemctl status fail2ban
🚀 Activer au démarrage sudo systemctl enable fail2ban
🔍 Voir les logs système sudo journalctl -u fail2ban -f
📋 Surveillance et status
📌 Action 🧠 Commande 📊 État général sudo fail2ban-client status
🔍 Détail d’une jail sudo fail2ban-client status sshd
📋 Liste des jails actives sudo fail2ban-client status | grep "Jail list"
📊 Statistiques jail sudo fail2ban-client status <jail>
🔢 Version de Fail2Ban sudo fail2ban-client version
📜 Logs en temps réel sudo tail -f /var/log/fail2ban.log
🚫 Gestion des bannissements
📌 Action 🧠 Commande 👁️ Voir les IPs bannies sudo fail2ban-client status <jail>
🚫 Bannir une IP sudo fail2ban-client set <jail> banip <IP>
🔓 Débannir une IP sudo fail2ban-client set <jail> unbanip <IP>
🗑️ Débannir toutes les IPs sudo fail2ban-client unban --all
🔍 Rechercher bannissements sudo grep "Ban " /var/log/fail2ban.log
🔓 Rechercher débannissements sudo grep "Unban " /var/log/fail2ban.log
📂 Configuration
📌 Fichier 🧠 Description /etc/fail2ban/jail.conf
Configuration par défaut (ne pas modifier) /etc/fail2ban/jail.local
Configuration personnalisée (recommandé) /etc/fail2ban/filter.d/
Filtres pour analyser les logs /etc/fail2ban/action.d/
Actions à exécuter lors du bannissement /var/log/fail2ban.log
Logs de Fail2Ban
🔒 Configuration des jails
📌 Paramètre 🧠 Description 📊 Exemple enabled
Activer/désactiver la jail true
port
Port(s) à protéger ssh,22
filter
Filtre à utiliser sshd
logpath
Chemin vers le fichier de log /var/log/auth.log
maxretry
Nombre max de tentatives 5
bantime
Durée de bannissement (secondes) 3600
findtime
Fenêtre de temps pour compter les tentatives 600
📝 Exemples de configuration
Configuration SSH basique (protéger connexions SSH)
[sshd]
enabled = true # Activer cette jail
port = ssh # Protéger le port SSH (22)
filter = sshd # Utiliser le filtre SSH intégré
logpath = /var/log/auth.log # Analyser ce fichier de log
maxretry = 5 # 5 tentatives max avant bannissement
bantime = 3600 # Bannir pendant 1 heure (3600 sec)
findtime = 600 # Dans une fenêtre de 10 minutes
Configuration web simple (protéger serveur web)
[apache-auth]
enabled = true
port = http,https # Protéger ports 80 et 443
filter = apache-auth # Filtre pour Apache
logpath = /var/log/apache2/error.log
maxretry = 3 # Plus strict : 3 tentatives seulement
bantime = 7200 # Bannir 2 heures
🛡️ Jails courantes
📌 Service 🧠 Jail 📊 Port(s) 🔐 SSH sshd
ssh,22
🌐 Apache apache-auth
http,https
🌐 Nginx nginx-http-auth
http,https
📧 Postfix postfix
smtp,465,587
📧 Dovecot dovecot
pop3,imap,993,995
📡 FTP vsftpd
ftp,21
🗄️ MySQL mysqld-auth
3306
🔍 Tests et dépannage
📌 Action 🧠 Commande ✅ Tester un filtre sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
🔄 Recharger une jail sudo fail2ban-client reload <jail>
⏹️ Arrêter une jail sudo fail2ban-client stop <jail>
▶️ Démarrer une jail sudo fail2ban-client start <jail>
🔍 Vérifier règles iptables sudo iptables -L -n | grep fail2ban
🗑️ Nettoyer règles iptables sudo iptables -F fail2ban-<jail>
🛠️ Dépannage courant
🆘 Problème 🧠 Solution ❌ Service ne démarre pas Vérifier la syntaxe du fichier de config 📜 Logs non analysés Vérifier le chemin logpath
🚫 IP non bannies Tester le filtre avec fail2ban-regex
🔧 Problème iptables Redémarrer fail2ban 💾 Trop de mémoire utilisée Réduire findtime
et nettoyer les logs 📊 Statistiques vides Vérifier que les logs sont générés