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:
CentOS / Rocky Linux:
Pour un bon fonctionnement, un pare‑feu doit être installé. Vous pouvez, par exemple, installeriptables: Ubuntu / Debian:
CentOS / Rocky Linux:
Après l'installation, activez le démarrage automatique de 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
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 :
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]: -
Si vous utilisez UFW ou firewalld à la place d'iptables, indiquez :
- Pour UFW :
action = ufw - Pour firewalld :
action = firewallcmd-ipset
- Pour UFW :
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 :
Comment vérifier que tout fonctionne¶
- Vérifiez le statut de bannissement SSH :
- Affichez les journaux Fail2ban :
- Vérifiez les blocs iptables (si utilisés) :
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.