Call-Informatique
Call-Informatique
Le média tech
Proteger son serveur SSH avec Fail2ban : le guide pas a pas
CybersécuritéGuides7 min de lecture

Proteger son serveur SSH avec Fail2ban : le guide pas a pas

Installez et configurez Fail2ban pour bloquer automatiquement les attaques par force brute sur votre serveur SSH. Guide complet pour debutants.

Proteger son serveur SSH avec Fail2ban : le guide pas a pas

Vous avez un serveur Linux ? Alors quelqu'un essaie probablement de s'y connecter en ce moment meme. Pas de panique, c'est normal. Et c'est exactement pour ca que Fail2ban existe.

C'est quoi Fail2ban, concretement ?

Imaginez un videur de boite de nuit poste devant la porte de votre serveur. Quelqu'un se trompe de mot de passe trois fois ? Le videur le met dehors et lui interdit de revenir pendant un moment. Voila, vous avez compris Fail2ban.

Plus techniquement, Fail2ban surveille les fichiers de logs de votre serveur. Quand il detecte trop de tentatives de connexion ratees depuis une meme adresse IP, il ajoute une regle au pare-feu pour bloquer cette IP. Automatiquement, sans que vous ayez a lever le petit doigt.

Pourquoi c'est indispensable

Un serveur SSH expose sur internet recoit en moyenne plusieurs milliers de tentatives de connexion par jour. Des robots scannent toutes les adresses IP du web et testent des combinaisons login/mot de passe a la chaine. C'est ce qu'on appelle une attaque par force brute.

Sans protection, c'est comme laisser la porte ouverte en esperant que personne n'essaie d'entrer.

Ce qu'il vous faut avant de commencer

  • Un serveur sous Ubuntu 22.04/24.04 ou Debian 11/12 (ca marche aussi sur d'autres distributions, mais les commandes peuvent varier)
  • Un acces root ou un compte avec les droits sudo
  • Une connexion SSH fonctionnelle
  • 15 minutes devant vous

> Attention : gardez toujours une deuxieme session SSH ouverte quand vous faites des modifs de securite. Si vous vous enfermez dehors par erreur, vous aurez un plan B.

Etape 1 : Mettre a jour votre systeme

Avant d'installer quoi que ce soit, on met a jour la liste des paquets disponibles.

bash
## Mise a jour de la liste des paquets
sudo apt update

## Installation des mises a jour de securite
sudo apt upgrade -y

Le -y dit "oui" automatiquement a toutes les questions. Pratique.

Etape 2 : Installer Fail2ban

L'installation tient en une seule commande.

bash
## Installation de fail2ban depuis les depots officiels
sudo apt install fail2ban -y

Sur Ubuntu 24.04 et Debian 12, vous obtiendrez Fail2ban 1.0.2 depuis les depots. La version la plus recente est la 1.1.0 (sortie en avril 2024, avec le support de Python 3.12 et 3.13), mais la version des depots fait parfaitement le travail.

Verifions que l'installation s'est bien passee.

bash
## Verifier la version installee
fail2ban-client version

Vous devriez voir un numero de version s'afficher. Si c'est le cas, on continue.

Etape 3 : Comprendre la structure des fichiers

Fail2ban utilise plusieurs fichiers de configuration, et c'est la que beaucoup de debutants se perdent. Voici la regle d'or : ne modifiez jamais les fichiers par defaut.

Pourquoi ? Parce qu'une mise a jour de Fail2ban ecrasera vos modifications. A la place, on cree des fichiers .local qui ont priorite sur les fichiers .conf.

  • /etc/fail2ban/jail.conf : configuration par defaut (on n'y touche pas)
  • /etc/fail2ban/jail.local : nos reglages personnalises (c'est ici qu'on travaille)
  • /etc/fail2ban/jail.d/ : dossier pour des configurations modulaires

C'est un peu comme les parametres d'usine d'un telephone versus vos reglages perso. Les reglages perso prennent le dessus, et une reinitialisation ne touche que les parametres d'usine.

Etape 4 : Creer notre configuration

On va creer le fichier jail.local avec une configuration adaptee a la protection SSH.

bash
## Creer le fichier de configuration personnalise
sudo nano /etc/fail2ban/jail.local

Collez le contenu suivant dans l'editeur :

ini
## Configuration personnalisee Fail2ban
## Fichier : /etc/fail2ban/jail.local

[DEFAULT]
## Duree du bannissement : 1 heure
bantime = 3600

## Fenetre d'observation : 10 minutes
findtime = 600

## Nombre de tentatives avant bannissement
maxretry = 5

## Adresses IP a ne jamais bannir (mettez la votre !)
## Remplacez 1.2.3.4 par votre IP publique
ignoreip = 127.0.0.1/8 ::1

## Backend de detection
backend = systemd

[sshd]
## Activer la protection SSH
enabled = true

## Port SSH (changez si vous utilisez un port custom)
port = ssh

## Filtre utilise pour analyser les logs
filter = sshd

## Nombre de tentatives avant ban pour SSH specifiquement
maxretry = 3

## Duree du ban pour SSH : 6 heures
bantime = 21600

Quelques explications :

  • bantime = 3600 : une IP bannie est bloquee pendant 1 heure par defaut (6 heures pour SSH)
  • findtime = 600 : Fail2ban regarde les 10 dernieres minutes pour compter les echecs
  • maxretry = 3 : au bout de 3 mots de passe rates en 10 minutes, c'est le ban
  • ignoreip : mettez votre propre IP ici pour ne jamais vous bannir vous-meme
  • backend = systemd : sur les systemes recents, les logs passent par systemd/journald

Pour sauvegarder dans nano : Ctrl+O puis Entree, et Ctrl+X pour quitter.

> Astuce : Pour connaitre votre IP publique, tapez curl ifconfig.me dans un terminal.

Etape 5 : Demarrer Fail2ban

On active le service pour qu'il demarre automatiquement au boot, puis on le lance.

bash
## Activer le demarrage automatique
sudo systemctl enable fail2ban

## Demarrer le service
sudo systemctl start fail2ban

Verification rapide :

bash
## Verifier que le service tourne
sudo systemctl status fail2ban

Vous devriez voir active (running) en vert. Si ce n'est pas le cas, un message d'erreur vous indiquera le probleme.

Etape 6 : Verifier que la protection SSH est active

Maintenant, verifions que la jail SSH fonctionne.

bash
## Voir la liste des jails actives
sudo fail2ban-client status

Vous devriez voir :

terminal
Status
|- Number of jail:      1
`- Jail list:   sshd

Pour avoir les details de la jail SSH :

bash
## Details de la jail sshd
sudo fail2ban-client status sshd

Ca affiche le nombre d'IP bannies, le nombre d'echecs detectes, etc.

Etape 7 : Tester que ca marche

Depuis un autre ordinateur (ou votre telephone en 4G pour avoir une IP differente), tentez de vous connecter a votre serveur avec un mauvais mot de passe 3 fois de suite.

> Attention : ne faites PAS ce test depuis votre connexion habituelle si vous n'avez pas ajoute votre IP dans ignoreip. Vous risqueriez de vous enfermer dehors.

Apres 3 echecs, la connexion devrait etre refusee. Verifiez sur le serveur :

bash
## Voir les IP bannies
sudo fail2ban-client status sshd

L'IP de test devrait apparaitre dans la liste "Banned IP".

Pour debannir une IP manuellement (au cas ou) :

bash
## Debannir une IP specifique
sudo fail2ban-client set sshd unbanip 1.2.3.4

Remplacez 1.2.3.4 par l'IP a debannir.

Etape 8 : Recevoir des alertes par email (optionnel)

Si vous voulez etre prevenu quand quelqu'un se fait bannir, ajoutez ces lignes dans votre jail.local, dans la section [DEFAULT] :

ini
## Notifications email (necessite un MTA comme postfix)
destemail = votre@email.com
sender = fail2ban@votre-serveur.com
action = %(action_mwl)s

Ca necessite qu'un service d'envoi d'emails (comme Postfix) soit configure sur votre serveur. C'est un sujet a part entiere, mais l'option est la si vous en avez besoin.

Les commandes a retenir

Voici un petit memento des commandes utiles au quotidien :

bash
## Etat general de Fail2ban
sudo fail2ban-client status

## Details d'une jail specifique
sudo fail2ban-client status sshd

## Debannir une IP
sudo fail2ban-client set sshd unbanip 1.2.3.4

## Recharger la configuration apres modification
sudo fail2ban-client reload

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

En resume

Fail2ban est un outil simple mais redoutablement efficace. En 15 minutes, vous avez mis en place une protection automatique contre les attaques par force brute sur SSH. Votre serveur ne se fera pas pirater par un robot qui teste "admin/password" en boucle.

Pour aller plus loin, vous pouvez consulter notre version technique de ce tutoriel, qui couvre le bannissement incremental, les filtres regex personnalises et l'integration avec des outils comme Telegram pour les alertes en temps reel.

—-

Publie sur call-informatique.fr | Categorie : Cybersecurite
Sur le même sujet

À lire aussi

#tutoriel#fail2ban#ssh#securite-serveur#linux