skip to content

Recherche

Fail2Ban

Protection serveur avec Fail2Ban - configuration, surveillance et gestion des bannissements !

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 servicesudo systemctl start fail2ban
⏹️ Arrêter le servicesudo systemctl stop fail2ban
🔁 Redémarrer le servicesudo systemctl restart fail2ban
🔄 Recharger la configsudo fail2ban-client reload
📊 Statut du servicesudo systemctl status fail2ban
🚀 Activer au démarragesudo systemctl enable fail2ban
🔍 Voir les logs systèmesudo journalctl -u fail2ban -f

📋 Surveillance et status

📌 Action🧠 Commande
📊 État généralsudo fail2ban-client status
🔍 Détail d’une jailsudo fail2ban-client status sshd
📋 Liste des jails activessudo fail2ban-client status | grep "Jail list"
📊 Statistiques jailsudo fail2ban-client status <jail>
🔢 Version de Fail2Bansudo fail2ban-client version
📜 Logs en temps réelsudo tail -f /var/log/fail2ban.log

🚫 Gestion des bannissements

📌 Action🧠 Commande
👁️ Voir les IPs banniessudo fail2ban-client status <jail>
🚫 Bannir une IPsudo fail2ban-client set <jail> banip <IP>
🔓 Débannir une IPsudo fail2ban-client set <jail> unbanip <IP>
🗑️ Débannir toutes les IPssudo fail2ban-client unban --all
🔍 Rechercher bannissementssudo grep "Ban " /var/log/fail2ban.log
🔓 Rechercher débannissementssudo grep "Unban " /var/log/fail2ban.log

📂 Configuration

📌 Fichier🧠 Description
/etc/fail2ban/jail.confConfiguration par défaut (ne pas modifier)
/etc/fail2ban/jail.localConfiguration 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.logLogs de Fail2Ban

🔒 Configuration des jails

📌 Paramètre🧠 Description📊 Exemple
enabledActiver/désactiver la jailtrue
portPort(s) à protégerssh,22
filterFiltre à utilisersshd
logpathChemin vers le fichier de log/var/log/auth.log
maxretryNombre max de tentatives5
bantimeDurée de bannissement (secondes)3600
findtimeFenêtre de temps pour compter les tentatives600

📝 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)
🔐 SSHsshdssh,22
🌐 Apacheapache-authhttp,https
🌐 Nginxnginx-http-authhttp,https
📧 Postfixpostfixsmtp,465,587
📧 Dovecotdovecotpop3,imap,993,995
📡 FTPvsftpdftp,21
🗄️ MySQLmysqld-auth3306

🔍 Tests et dépannage

📌 Action🧠 Commande
✅ Tester un filtresudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
🔄 Recharger une jailsudo fail2ban-client reload <jail>
⏹️ Arrêter une jailsudo fail2ban-client stop <jail>
▶️ Démarrer une jailsudo fail2ban-client start <jail>
🔍 Vérifier règles iptablessudo iptables -L -n | grep fail2ban
🗑️ Nettoyer règles iptablessudo iptables -F fail2ban-<jail>

🛠️ Dépannage courant

🆘 Problème🧠 Solution
❌ Service ne démarre pasVérifier la syntaxe du fichier de config
📜 Logs non analysésVérifier le chemin logpath
🚫 IP non banniesTester le filtre avec fail2ban-regex
🔧 Problème iptablesRedémarrer fail2ban
💾 Trop de mémoire utiliséeRéduire findtime et nettoyer les logs
📊 Statistiques videsVérifier que les logs sont générés