Aller au contenu

Protection contre les attaques par force brute sur le mot de passe avec Fail2ban

Dans cet article

Si vous vous connectez au serveur avec un mot de passe, les attaquants peuvent essayer de le deviner automatiquement — cela s'appelle une attaque par force brute. La meilleure protection consiste à utiliser l'authentification par clé (pas de mot de passe). Mais si, pour une raison quelconque, vous utilisez toujours un mot de passe, vous devez ajouter des mesures de sécurité supplémentaires. L'un des outils les plus simples et les plus efficaces pour cela est Fail2ban.

Fail2ban est un programme qui surveille les journaux (enregistrements de l'activité du serveur). Si quelqu'un tente de se connecter trop de fois de suite et échoue, Fail2ban bloque automatiquement l'adresse IP de cette personne pendant une période donnée.

Installation de Fail2ban

Ubuntu / Debian:

sudo apt update
sudo apt install fail2ban -y

CentOS / Rocky Linux:

sudo yum update
sudo yum install epel-release
sudo yum install fail2ban
Pour un bon fonctionnement, un pare‑feu doit être installé. Vous pouvez, par exemple, installer iptables:

Ubuntu / Debian:

sudo apt install iptables

CentOS / Rocky Linux:

sudo yum install iptables-services

Après l'installation, activez le démarrage automatique de Fail2ban:

sudo systemctl enable fail2ban

Sur Ubuntu, Fail2ban protégera immédiatement SSH : par défaut, il bloque une IP pendant 10 minutes s'il y a eu 5 tentatives de connexion échouées en 10 minutes.

Comment configurer correctement Fail2ban

Les paramètres principaux sont stockés dans /etc/fail2ban/jail.conf et sont divisés en sections.
La section [DEFAULT] définit les règles communes qui s’appliquent à tous les services par défaut.
Chaque service (par ex. SSH, serveur web Apache ou FTP) possède ses propres paramètres dans sa propre section — comme [sshd], [apache‑auth], [vsftpd], etc.

Nous ne recommandons pas de modifier les paramètres de base dans ce fichier. Au lieu de cela, créez votre propre fichier de configuration — jail.local

sudo nano /etc/fail2ban/jail.local

Vous pouvez le créer vide — Fail2ban remplira les options non spécifiées avec les valeurs par défaut.

Exemple de configuration pour la protection SSH

Voici un exemple simple de fichier jail.local :

[DEFAULT]
ignoreip = 123.45.67.89

[sshd]
enabled = true
maxretry = 3
findtime = 120
bantime = 43200

Ce que cela signifie :

  • ignoreip — votre adresse IP « whitelistée ». Fail2ban ne la bloquera jamais, même si vous tapez votre mot de passe incorrectement. Spécifiez votre IP ici (si elle est statique). Vous pouvez ajouter plusieurs adresses séparées par des espaces.
  • enabled = true — activer la protection pour SSH.
  • maxretry = 3 — maximum de 3 tentatives de connexion échouées.
  • findtime = 120 — dans les 120 dernières secondes (2 minutes).
  • bantime = 43200 — bloquer pendant 12 heures (43200 secondes).

En d’autres termes : si une IP (autre que la vôtre) échoue à se connecter 3 fois en 2 minutes, elle sera bloquée pendant 12 heures.

Note

En fonction du système utilisé, la section peut être [sshd], [ssh] ou [ssh‑iptables] — confirmez ceci dans jail.conf.

Paramètres supplémentaires

  • Si vous avez changé le port SSH (par ex. de 22 à 2222), ajoutez dans la section [sshd] :

    port = 2222
    
  • Si vous utilisez UFW ou firewalld à la place d'iptables, indiquez :

    • Pour UFW : action = ufw
    • Pour firewalld : action = firewallcmd-ipset

Mais dans la plupart des cas, vous pouvez laisser tout à la valeur par défaut — Fail2ban choisira automatiquement la méthode de blocage appropriée.

Appliquer les paramètres

Après avoir enregistré le fichier, redémarrez Fail2ban :

sudo systemctl restart fail2ban

Comment vérifier que tout fonctionne

  1. Vérifiez le statut de bannissement SSH :
    sudo fail2ban-client status sshd
    
  2. Affichez les journaux Fail2ban :
    sudo tail /var/log/fail2ban.log
    
  3. Vérifiez les blocs iptables (si utilisés) :
    sudo iptables -L
    

Astuce : ne pas tester la protection en entrant délibérément un mauvais mot de passe depuis votre propre IP — vous pourriez accidentellement vous bloquer ! Il vaut mieux attendre un peu : les bots commencent généralement à attaquer les serveurs dans la première heure après le lancement.

Note

Fail2ban est une mesure de sécurité supplémentaire, mais il vaut mieux ne pas utiliser de mot de passe pour SSH du tout. Configurez la connexion par clé SSH — c’est plus sûr et plus pratique. Ajoutez toujours votre IP à ignoreip pour ne pas vous bloquer accidentellement.