Protégez SSH avec Fail2ban sur Ubuntu 24.04: guide étape par étape

Comment installer et configurer Fail2ban sur Ubuntu 24.04 pour bloquer automatiquement les attaques de force brute contre SSH : prison dédiée, interdiction des tests et déblocage d'une IP.

Protégez SSH avec Fail2ban sur Ubuntu 24.04: guide étape par étape

Toute personne qui gère un serveur Linux accessible depuis Internet le sait : dès que le port SSH est exposé, l'accès automatisé au bot tente d'arriver à des combinaisons de noms d'utilisateur et à des mots de passe répétés. C'est classique.Attaque de force brute. Un mot de passe robuste ou une authentification clé réduit déjà le risque, mais n'empêche pas les robots de continuer à frapper, à occuper des ressources et à remplir des journaux. La solution la plus courante pour réduire le problème est appeléeFail2ban, et dans ce guide nous voyons comment l'installer et le configurer étape par étapeUbuntu 24.04 LTS (Noble Numbat).

Qu'est-ce que Fail2ban et comment il fonctionne

Fail2ban est un service (démon) qui analyse les fichiers de log système en temps réel — dans notre cas ceux relatifs à l'accès SSH — à la recherche de modèles qui indiquent des tentatives de connexion échouées. Lorsque la même adresse IP dépasse un certain nombre de tentatives ratées à un intervalle de temps donné, Fail2ban intervient automatiquement en créant une règle de pare-feu qui bloque cette IP pour une période déterminée. Ce mécanisme de surveillance et de blocage s'appelle prison(littéralement "prison"): chaque prison est dédiée à un service spécifique (SSH, un serveur web, un serveur de messagerie, etc.) et a ses propres règles.

Sur Ubuntu 24.04, Fail2ban est disponible comme paquet officiel dans le dépôtunivers univers(version 1.0.2 au moment de l'écriture), vous n'avez donc pas besoin d'ajouter des dépôts externes : tant que le dépôt universel est activé, ce qui se passe par défaut dans les installations standard de Ubuntu Server et Desktop.

Préalables

  • Un serveur Ubuntu 24.04avec un accès SSH et un utilisateur avec des privilègessudo.
  • Accès à la ligne de commande, localement ou via SSH (attention à ne pas fermer la session en cours avant de vérifier que les nouvelles règles ne vous bloquent pas trop : plus tard, nous verrons comment l'éviter).
  • Facultatif mais recommandé: aPare-feu actif(UFW est celui inclus par défaut sur Ubuntu), que Fail2ban utilisera comme "bras armé" pour appliquer les blocs.

1. Installer Fail2ban

Mettre à jour la liste des paquets et installer Fail2ban avec :

sudo apt update
sudo apt install fail2ban

À la fin de l'installation, le service commence déjà actif avec la configuration par défaut, mais il est bon de vérifier l'état immédiatement:

sudo systemctl status fail2ban

Si le système n'est pas déjà activé, activez-le avec :

sudo systemctl enable fail2ban

2. Créer une configuration personnalisée (jail.local)

Fail2ban lit ses paramètres à partir de différents fichiers. Le principal,/etc/fail2ban/jail.conf, est écrasé à chaque mise à jour du paquet: pour cette raisonne doit jamais être modifié directement. Les personnalisations doivent être écrites dans un fichier séparé,jail.local, que Fail2ban lit après et qu'il précède toujours les paramètres par défaut. Créez le fichier en recopiant le fichier original comme base :

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

Chapitre[DEFAULT], qui s'applique à toutes les prisons sauf indication contraire, trouver trois paramètres clés qu'il est utile de comprendre avant de les éditer:

  • interdictions: combien de temps une IP reste bloquée une fois le seuil de tentative dépassé (par exemple :10mpendant dix minutes,1hpendant une heure).
  • trouver le temps: la fenêtre de temps dans laquelle les tentatives manquées sont comptées (par défaut 10 minutes).
  • Maximum: le nombre de tentatives ratées autorisées avant le bloc (par défaut 5).

Pour une prison SSH plus agressive vers les robots, sans risquer trop de faux positifs pour un utilisateur humain qui fait erreur de mot de passe une fois, des valeurs commemaxretry = 4,findtime = 10metbantime = 1hJe suis un bon point de départ. Si votre IP fixe est connu, vous pouvez également l'exclure des contrôles en l'ajoutant à la ligneignoreip(déjà présent dans la section[DEFAULT]), en le séparant des autres par un espace: cela évite l'auto-exclusion par erreur lors des essais.

3. Configurer la prison pour SSH

En utilisant le fichier, vous trouverez la section dédiée à SSH, qui commence par[sshd]. Assurez-vous que ceci est réglé:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 4
findtime = 10m
bantime = 1h

Le paramètreenabled = trueest ce qui active réellement la protection pour SSH: dans la configuration par défaut de nombreuses prisons sont présentes mais désactivées, juste pour laisser l'administrateur choisir quels services à protéger. Si vous avez déplacé SSH sur un port différent de 22 (une pratique courante pour réduire le bruit de fond des robots), n'oubliez pas de l'indiquer dans le champport.

Enregistrer le fichier et redémarrer le service parce que les changements ont effet:

sudo systemctl restart fail2ban

4. Assurez-vous que la prison est active

La commande principale pour dialoguer avec Fail2ban C'estfail2ban-client. Pour voir la liste des prisons actuellement actives:

sudo fail2ban-client status

Pour les détails de la prison SSH en particulier — combien de tentatives ratées il a enregistrées et quelles IP sont actuellement bloquées:

sudo fail2ban-client status sshd

Il est également utile de garder un œil sur le journal dédié, en particulier dans les premiers jours après l'activation, pour comprendre comment la prison se comporte dans la pratique:

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

5. Essai du bloc

La façon la plus réaliste de tester la prison est d'essayer de se connecter à SSH à partir d'une autre machine (ou d'un autre terminal) en entrant volontairement un mauvais mot de passe plusieurs fois ci-dessous, jusqu'à ce que vous passiez le seuilmaxretryPrêt. Après la dernière tentative ratée, l'IP à partir de laquelle les liens sont venus devrait apparaître comme bandit dans la sortie defail2ban-client status sshd, et d'autres tentatives pour se connecter de cette même adresse tomberont dans le vide jusqu'à la fin de labantime.

Sinon, si vous préférez ne pas risquer de bloquer votre session de travail par erreur, vous pouvez forcer manuellement une interdiction de test sur une IP de test (comme une adresse de votre réseau local inutilisé):

sudo fail2ban-client set sshd banip 192.0.2.10

6. Déverrouiller une IP

Il peut arriver qu'une IP légitime soit par erreur interdite, par exemple après que vous ayez échoué à vous connecter. Pour supprimer manuellement le bloc sans avoir à attendre l'expiration dubantime, utilisé:

sudo fail2ban-client set sshd unbanip 192.0.2.10

En remplaçant bien sûr l'adresse exemple par la vraie à débloquer. La commande a un effet immédiat : vous n'avez pas besoin de redémarrer le service.

Quelques autres avis

  • Ne jamais désactiver le courant actuel de la session SSHavant de vérifier que les nouvelles règles fonctionnent : si possible, testez par un second terminal tout en gardant une session authentifiée ouverte, afin que vous puissiez corriger toutes les erreurs de configuration sans perdre l'accès au serveur.
  • Intégration avec UFWSi vous utilisez UFW comme pare-feu, Fail2ban le détecte automatiquement et s'appuie dessus pour appliquer les blocs, sans avoir besoin de configurations supplémentaires dans la plupart des cas.
  • Authentification avec clé SSH: Fail2ban réduit l'impact des attaques automatisées, mais reste un niveau de défense supplémentaire. Désactiver le login avec le mot de passe pour les seules clés SSH, si possible, reste la mesure de sécurité la plus efficace jamais.
  • Interdictions croissantes: Pour ceux qui veulent un niveau de protection plus avancé, Fail2ban prend également en charge uneinterdictionsqui augmente progressivement pour les IP de rechute, par l'optionbantime.increment: un aperçu utile une fois la confiance dans la configuration de base.

Avec ces étapes, vous avez une protection de base mais efficace contre les tentatives d'accès automatisé à SSH, sans avoir à intervenir manuellement chaque fois qu'un bot frappe à la porte de votre serveur.

Sources officielles

Partager

Quelle est votre réaction ?

Aimer Aimer 0
Je n'aime pas Je n'aime pas 0
Amour Amour 0
Drôle Drôle 0
En colère En colère 0
Triste Triste 0
Waouh Waouh 0