Sécuriser SSH : Clés d'authentification et Fail2ban
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.
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 `#`) :
# 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.
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 :
[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.