Docs Administration Système Sécuriser SSH
Intermédiaire Debian / Ubuntu

Sécuriser SSH : Clés d'authentification et Fail2ban

D
Par Dylan Pacques

L'accès SSH est la porte d'entrée principale de votre serveur. S'il est mal configuré, il devient la cible privilégiée des attaques par force brute. Ce guide vous montre comment verrouiller votre instance Cloud VPC en remplaçant les mots de passe par une paire de clés cryptographiques modernes (Ed25519) et en bannissant les attaquants avec Fail2ban.

Prérequis

  • Un serveur Linux (Debian ou Ubuntu) avec un accès `root` ou `sudo`.
  • Un terminal sur votre machine locale (macOS, Linux ou WSL sur Windows).
  • Avoir conservé l'accès VNC/Console via votre espace client Plennyx en cas de mauvaise manipulation.

Étape 1 : Générer et envoyer votre clé SSH

Sur votre ordinateur personnel (pas sur le serveur), nous allons générer une paire de clés utilisant l'algorithme Ed25519, beaucoup plus performant et sécurisé que l'ancien format RSA.

Terminal - Machine locale
ssh-keygen -t ed25519 -C "[email protected]"

Laissez le chemin par défaut en appuyant sur Entrée. Il est fortement recommandé d'ajouter une "passphrase" pour protéger votre clé privée.

Ensuite, copiez la clé publique générée vers votre serveur Plennyx :

ssh-copy-id -p 22 utilisateur@adresse_ip_du_serveur

Testez la connexion : ssh utilisateur@adresse_ip_du_serveur. Vous devriez vous connecter sans qu'on vous demande le mot de passe de l'utilisateur (seule la passphrase de la clé vous sera demandée).

Étape 2 : Durcir la configuration SSH

Maintenant que vous êtes connecté par clé, nous allons interdire purement et simplement les connexions par mot de passe. Ouvrez le fichier de configuration du démon SSH :

sudo nano /etc/ssh/sshd_config

Recherchez et modifiez les lignes suivantes (décommentez-les si nécessaire en enlevant le `#`) :

/etc/ssh/sshd_config
# Interdire l'authentification par mot de passe
PasswordAuthentication no

# Interdire la connexion directe en Root (utiliser un utilisateur standard + sudo)
PermitRootLogin no

# Désactiver les connexions vides
PermitEmptyPasswords no

Redémarrez le service pour appliquer les modifications : sudo systemctl restart ssh.

Attention !

Ne fermez pas votre terminal actuel. Ouvrez une nouvelle fenêtre et essayez de vous connecter. Si vous n'y arrivez pas, vous pourrez toujours annuler vos modifications depuis le premier terminal resté ouvert.

Étape 3 : Installer et configurer Fail2ban

Même si les mots de passe sont désactivés, les robots continueront d'essayer de se connecter, polluant vos logs et consommant des ressources. Fail2ban va analyser les logs et bloquer l'IP des attaquants dans le pare-feu.

sudo apt update && sudo apt install fail2ban -y

Il ne faut jamais modifier le fichier jail.conf directement. Créez plutôt une copie locale :

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

Dans la section [sshd], assurez-vous que la prison est activée et configurez le temps de bannissement :

/etc/fail2ban/jail.local
[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600  # Bannissement d'une heure (en secondes)
findtime = 600  # Cherche 3 erreurs dans une fenêtre de 10 minutes

Activez et démarrez le service :

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Étape 4 : Vérifier l'état de Fail2ban

Pour vérifier que votre protection est bien active et surveille le port SSH, exécutez la commande suivante :

sudo fail2ban-client status sshd

Cette commande vous renverra le nombre de tentatives échouées actuelles et la liste des adresses IP qui ont été bannies par votre serveur.