skip to content

Recherche

Syspirit
FR

Fail2Ban

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

Linux
Publié le
Karl Certa

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