Désactiver le préchargeur
Explorez, Apprenez et Maîtrisez

Documentation et Tutoriels - Hébergement Web Caramania.Ca

avec Nos Documentation et Tutoriels

Découvrez notre vaste bibliothèque de documentation et de tutoriels conçus pour vous aider à tirer le meilleur parti des services Caramania.Ca. Que vous soyez un débutant cherchant à configurer votre premier site web ou un utilisateur avancé désireux d'explorer des fonctionnalités plus complexes, nos guides pas à pas vous accompagneront à chaque étape. Simplifiez la gestion de vos services, trouvez des solutions rapides à vos problèmes, et approfondissez vos connaissances grâce à notre centre de ressources complet.

Documentation / Tutoriels Linux / Sécurité / Installer Fail2Ban sur Ubuntu, Debian et AlmaLinux
Bahanos
09/01/2025
Débutant
15 minutes

Prérequis

  • Un serveur Ubuntu/Debian ou AlmaLinux 9/Rocky Linux 9
  • Accès root ou sudo

Fail2Ban protège votre serveur contre les attaques par force brute en bannissant automatiquement les IP qui échouent trop souvent à s'authentifier.

1. Installer Fail2Ban

Installation (Ubuntu/Debian)
apt update
apt install -y fail2ban

# Vérifier
systemctl status fail2ban
Installation (AlmaLinux/Rocky Linux)
# Fail2Ban est dans le dépôt EPEL
dnf install -y epel-release
dnf install -y fail2ban

# Activer et démarrer
systemctl enable fail2ban
systemctl start fail2ban

# Vérifier
systemctl status fail2ban

2. Configuration de base

Créer un fichier de configuration local
# Ne jamais modifier jail.conf directement !
# Créer jail.local qui surcharge jail.conf
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# Ou créer un fichier de configuration personnalisé
nano /etc/fail2ban/jail.local
Configuration jail.local (Ubuntu/Debian)
[DEFAULT]
# Durée du bannissement (10 minutes)
bantime = 10m

# Fenêtre de détection (10 minutes)
findtime = 10m

# Nombre de tentatives avant bannissement
maxretry = 5

# Email pour les notifications (optionnel)
# destemail = admin@votredomaine.com
# sender = fail2ban@votredomaine.com
# action = %(action_mwl)s

# Ignorer certaines IP (votre IP, réseau local...)
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24

# Backend de détection
backend = systemd

# Protection SSH
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1h
Configuration jail.local (AlmaLinux/Rocky Linux)
[DEFAULT]
# Durée du bannissement (10 minutes)
bantime = 10m

# Fenêtre de détection (10 minutes)
findtime = 10m

# Nombre de tentatives avant bannissement
maxretry = 5

# Ignorer certaines IP (votre IP, réseau local...)
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24

# Backend de détection
backend = systemd

# Protection SSH
# Note : sur AlmaLinux/Rocky Linux, le log SSH est dans /var/log/secure
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 1h

3. Protéger différents services

Ajouter dans jail.local
# Protection Nginx (erreurs HTTP)
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 5

# Protection Nginx (bots et scanners)
[nginx-botsearch]
enabled = true
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 2

# Protection Apache
[apache-auth]
enabled = true
port = http,https
logpath = /var/log/apache2/error.log
maxretry = 5

# Protection MySQL/MariaDB
[mysqld-auth]
enabled = true
port = 3306
logpath = /var/log/mysql/error.log
maxretry = 5

# Protection Postfix (email)
[postfix]
enabled = true
port = smtp,465,587
logpath = /var/log/mail.log
maxretry = 5

# Protection Dovecot (email IMAP/POP3)
[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps
logpath = /var/log/mail.log
maxretry = 5

# Protection WordPress (avec plugin log)
[wordpress]
enabled = false
port = http,https
filter = wordpress
logpath = /var/log/auth.log
maxretry = 3
bantime = 1d
Chemins des logs sur AlmaLinux/Rocky Linux

Sur AlmaLinux/Rocky Linux, certains chemins de logs diffèrent : Apache utilise /var/log/httpd/ au lieu de /var/log/apache2/. Ajustez les valeurs logpath en conséquence.

4. Redémarrer Fail2Ban

Appliquer la configuration
# Vérifier la configuration
fail2ban-client -t

# Redémarrer
systemctl restart fail2ban

# Vérifier le statut
fail2ban-client status

5. Commandes utiles

Gestion Fail2Ban
# Statut global
fail2ban-client status

# Statut d'une jail spécifique
fail2ban-client status sshd

# Voir les IP bannies
fail2ban-client status sshd | grep "Banned IP"

# Bannir manuellement une IP
fail2ban-client set sshd banip 123.45.67.89

# Débannir une IP
fail2ban-client set sshd unbanip 123.45.67.89

# Recharger la configuration
fail2ban-client reload

# Voir les logs
tail -f /var/log/fail2ban.log

6. Bannissement progressif

Augmentez la durée du bannissement pour les récidivistes :

Bannissement progressif (jail.local)
# Ajouter dans [DEFAULT]
[DEFAULT]
bantime.increment = true
bantime.factor = 24
bantime.formula = ban.Time * (1<<(ban.Count if ban.Count<20 else 20)) * banFactor
bantime.maxtime = 5w

# Explications :
# - 1ère infraction : 10 minutes
# - 2ème infraction : ~4 heures
# - 3ème infraction : ~4 jours
# - Maximum : 5 semaines

7. Créer un filtre personnalisé

Filtre pour WordPress
# Créer le filtre
cat > /etc/fail2ban/filter.d/wordpress.conf << 'EOF'
[Definition]
failregex = ^<HOST> .* "POST /wp-login.php
            ^<HOST> .* "POST /xmlrpc.php
ignoreregex =
EOF

# Activer dans jail.local
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 1h

8. Notifications par email

Configuration email (jail.local)
[DEFAULT]
# Email de destination
destemail = admin@votredomaine.com

# Email d'envoi
sender = fail2ban@votredomaine.com

# Action avec email et logs
action = %(action_mwl)s

# Alternatives :
# action = %(action_)s     # Bannir seulement
# action = %(action_mw)s   # Bannir + email avec whois
# action = %(action_mwl)s  # Bannir + email avec whois et logs

9. Intégration avec le pare-feu

Utiliser UFW au lieu d'iptables (Ubuntu/Debian)
# Dans jail.local, section [DEFAULT]
[DEFAULT]
banaction = ufw
banaction_allports = ufw
Utiliser firewalld au lieu d'iptables (AlmaLinux/Rocky Linux)
# Dans jail.local, section [DEFAULT]
[DEFAULT]
banaction = firewallcmd-rich-rules
banaction_allports = firewallcmd-rich-rules

10. Surveiller les attaques

Analyser les logs
# Voir les IP les plus bannies
zgrep 'Ban' /var/log/fail2ban.log* | awk '{print $NF}' | sort | uniq -c | sort -rn | head -20

# Tentatives SSH échouées
grep 'Failed password' /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -20

# Résumé des bannissements par jour
grep 'Ban' /var/log/fail2ban.log | awk '{print $1}' | sort | uniq -c
Logs SSH sur AlmaLinux/Rocky Linux

Sur AlmaLinux/Rocky Linux, remplacez /var/log/auth.log par /var/log/secure pour les analyses de tentatives SSH échouées.

Attention à votre IP

Ajoutez toujours votre propre IP dans ignoreip pour éviter de vous bloquer vous-même en cas d'erreur de mot de passe !

Fail2Ban actif !

Votre serveur est maintenant protégé contre les attaques par force brute. Les IP malveillantes seront automatiquement bannies.

💬 Écrivez-nous sur Messenger !