🚫 Module L10 – Fail2ban

📘 Cours complet ⏱️ 3h 🎯 Bloc 2 – SISR
Objectifs : installer et configurer Fail2ban pour protéger les services contre les attaques par force brute, personnaliser les jails et analyser les logs.

📖 Introduction

Fail2ban est un outil de prévention des intrusions qui analyse les logs des services et bannit automatiquement les adresses IP qui échouent trop de fois. Il est particulièrement efficace contre les attaques par force brute sur SSH, HTTP, FTP, etc.

🎯

À l'issue de ce module, vous serez capable de :

  • Installer et configurer Fail2ban.
  • Créer et personnaliser des jails.
  • Analyser les logs et bannir des IP.
  • Vérifier l'état de Fail2ban.

⚙️ Installation de Fail2ban

🔧 Fonctionnement de Fail2ban

🔐 Configurer une jail SSH

Activer la jail SSH dans jail.local :

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
  • enabled = true : active la jail.
  • port = 22 : port SSH (à adapter si modifié).
  • filter = sshd : utilise le filtre sshd (défini dans filter.d/sshd.conf).
  • logpath : fichier de logs à surveiller.
  • maxretry = 3 : nombre d'échecs avant bannissement.
  • bantime = 3600 : durée du bannissement en secondes (1 heure).
  • findtime = 600 : fenêtre de temps en secondes (10 min).

📋 Commandes Fail2ban

CommandeDescription
fail2ban-client statusAffiche l'état global.
fail2ban-client status sshdAffiche l'état de la jail SSH.
fail2ban-client set sshd banip 192.168.1.100Bannir manuellement une IP.
fail2ban-client set sshd unbanip 192.168.1.100Débannir une IP.
fail2ban-client reloadRecharger la configuration.

🛠️ Personnalisation avancée

6.1 – Ajouter une jail pour un service web

Protéger un site web contre les attaques HTTP (ex: Wordpress) :

[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 1800
findtime = 300
  • port = http,https : surveille les ports 80 et 443.
  • filter = wordpress : filtre personnalisé (à créer).
  • logpath : logs du serveur web.

6.2 – Créer un filtre personnalisé

Fichier /etc/fail2ban/filter.d/wordpress.conf :

[Definition]
failregex = ^<HOST> .* "POST /wp-login.php.* HTTP.* 200.*$
ignoreregex =
  • failregex : expression régulière pour détecter les échecs.
  • <HOST> : remplacé par l'adresse IP.
  • Adaptez les regex en fonction des logs de votre serveur.

📝 Exercices d'application

Exercice 1 – Configuration

Quel fichier utilise-t-on pour personnaliser les jails Fail2ban ?

/etc/fail2ban/jail.local

Exercice 2 – Commande

Quelle commande permet de voir l'état de la jail SSH ?

fail2ban-client status sshd

🎯 Quiz d'auto‑évaluation

1. Fail2ban analyse les fichiers de logs pour :

2. La directive maxretry définit :

3. Pour débannir manuellement une IP, on utilise :

4. Le fichier de configuration principal de Fail2ban est :

5. La directive bantime est exprimée en :

📚 Ressources et liens utiles


← Retour au portail
BTS SIO – Lycée NDLP Avranches – Module L10 v1.0