Sécurité Intermédiaire 6 min de lecture

Installer et configurer Fail2Ban sur Linux

Guide complet pour protéger votre serveur Linux contre les attaques par force brute avec Fail2Ban

Installer et configurer Fail2Ban sur Linux

Support Technique

Besoin d'aide ? Notre équipe est disponible 24/7 pour vous assister.

Installer Fail2Ban sur un VPS Linux

🛡️ Qu’est-ce que Fail2Ban ?

Fail2Ban analyse les logs du serveur et bannit automatiquement les adresses IP qui tentent des connexions suspectes (force brute, scans, etc.).

📦 Installation

Ubuntu/Debian

sudo apt update
sudo apt install fail2ban -y

CentOS/RHEL

sudo yum install epel-release -y
sudo yum install fail2ban -y

Vérifier l’installation

sudo systemctl status fail2ban

⚙️ Configuration de base

1️⃣ Créer le fichier de configuration local

IMPORTANT : Ne jamais modifier directement jail.conf !

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

2️⃣ Éditer la configuration

sudo nano /etc/fail2ban/jail.local

3️⃣ Configuration recommandée

Trouvez la section [DEFAULT] et modifiez :

[DEFAULT]
# Durée de bannissement (10 minutes)
bantime = 10m

# Période d'observation (10 minutes)
findtime = 10m

# Nombre de tentatives avant bannissement
maxretry = 5

# Ignorer certaines IP (la vôtre par exemple)
ignoreip = 127.0.0.1/8 ::1 VOTRE.IP.ICI

# Action par défaut
banaction = iptables-multiport

4️⃣ Activer la protection SSH

Trouvez la section [sshd] et modifiez :

[sshd]
enabled = true
port = ssh
# Si vous avez changé le port SSH, indiquez-le ici :
# port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1h
findtime = 10m

🚀 Démarrer Fail2Ban

# Activer au démarrage
sudo systemctl enable fail2ban

# Démarrer le service
sudo systemctl start fail2ban

# Vérifier le statut
sudo systemctl status fail2ban

📊 Commandes utiles

Vérifier les prisons actives

sudo fail2ban-client status

Voir les détails d’une prison

sudo fail2ban-client status sshd

Résultat attendu :

Status for the jail: sshd
|- Filter
|  |- Currently failed: 2
|  |- Total failed:     12
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     3
   `- Banned IP list:   192.168.1.100

Débannir une IP manuellement

sudo fail2ban-client set sshd unbanip 192.168.1.100

Bannir une IP manuellement

sudo fail2ban-client set sshd banip 192.168.1.100

Recharger la configuration

sudo fail2ban-client reload

🔒 Protections supplémentaires

Protéger contre les scans de ports

[port-scan]
enabled = true
filter = port-scan
logpath = /var/log/syslog
maxretry = 3
bantime = 1d

Créer le filtre :

sudo nano /etc/fail2ban/filter.d/port-scan.conf

Ajouter :

[Definition]
failregex = ^.*Possible port scan.*from <HOST>.*$
ignoreregex =

📧 Notifications par email (optionnel)

Installer sendmail

sudo apt install sendmail -y

Configurer les notifications

Dans /etc/fail2ban/jail.local :

[DEFAULT]
destemail = [email protected]
sendername = Fail2Ban
action = %(action_mwl)s

📝 Consulter les logs

Logs Fail2Ban

sudo tail -f /var/log/fail2ban.log

Voir les bannissements récents

sudo grep 'Ban' /var/log/fail2ban.log | tail -20

Voir les débannissements

sudo grep 'Unban' /var/log/fail2ban.log | tail -20

🚨 Dépannage

Fail2Ban ne démarre pas

# Tester la configuration
sudo fail2ban-client -t

# Voir les erreurs
sudo journalctl -u fail2ban -n 50

Vérifier les règles iptables

sudo iptables -L -n

Réinitialiser les bannissements

sudo fail2ban-client unban --all

⚡ Configuration optimisée pour SSH

Créer un fichier dédié :

sudo nano /etc/fail2ban/jail.d/ssh-custom.conf

Ajouter :

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 5m
bantime = 24h

Redémarrer :

sudo systemctl restart fail2ban

📊 Statistiques avancées

Nombre total de bannissements

sudo zgrep 'Ban' /var/log/fail2ban.log* | wc -l

Top 10 des IP bannies

sudo zgrep 'Ban' /var/log/fail2ban.log* | \
  grep -oP '\d+\.\d+\.\d+\.\d+' | sort | uniq -c | sort -rn | head -10

IP actuellement bannies

sudo fail2ban-client status sshd | grep "Banned IP"

💡 Bonnes pratiques

  1. Surveiller les logs régulièrement
  2. Ajuster les seuils selon vos besoins
  3. Combiner avec clés SSH pour une sécurité maximale
  4. Backup de la config avant modifications
  5. Tester après chaque changement

✅ Vérification finale

# Vérifier que Fail2Ban est actif
sudo systemctl is-active fail2ban

# Vérifier les prisons actives
sudo fail2ban-client status

# Simuler une attaque (depuis un autre serveur)
# ssh wrong-user@votre-ip -p 2222
# Répéter 4 fois, l'IP sera bannie

🔗 Ressources

  • Documentation officielle : https://www.fail2ban.org
  • Filtres personnalisés : /etc/fail2ban/filter.d/
  • Actions personnalisées : /etc/fail2ban/action.d/

Votre serveur est maintenant protégé contre les attaques par bruteforce ! 🛡️