Comment sécuriser l'accès SSH d'un VPS LWS : clés uniquement et fail2ban

Procédure

Pour sécuriser l'accès SSH de votre VPS LWS, il est recommandé de désactiver totalement l'authentification par mot de passe au profit d'une clé SSH, puis d'installer fail2ban. Cette configuration protège votre serveur contre les attaques par force brute et élimine les risques liés aux mots de passe interceptés ou devinés. Dans ce tutoriel, vous allez copier votre clé SSH publique, ajuster la configuration SSH pour neutraliser les réglages par défaut de cloud-init, puis installer et vérifier la protection active de fail2ban.

Installer sa clé SSH

  1. Connectez-vous une première fois en SSH puis déconnectez-vous

    Ouvrez un terminal sur votre ordinateur et connectez-vous au serveur à l'aide du mot de passe root reçu dans votre e-mail de livraison. Lors de la première connexion, acceptez l'empreinte de la clé du serveur en tapant yes. Une fois connecté, quittez immédiatement la session en exécutant exit afin de revenir sur votre machine locale.

    ⌨ Sur votre ordinateur
    ssh root@203.0.113.10
    exit
  2. Copiez votre clé SSH publique sur le VPS

    Depuis votre ordinateur, utilisez la commande ssh-copy-id pour copier votre clé publique sur le serveur. Saisissez votre mot de passe root une dernière fois lorsque le terminal vous y invite. Si vous aviez déjà ajouté votre clé SSH lors de la commande ou de la réinstallation depuis le panel KVM, cette étape n'est pas nécessaire.

    ⌨ Sur votre ordinateur
    ssh-copy-id root@203.0.113.10
    Résultat attendu
    Number of key(s) added: 1
    
    Now try logging into the machine, with: "ssh 'root@203.0.113.10'"
    and check to make sure that only the key(s) you wanted were added.
  3. Vérifiez la connexion par clé SSH

    Reconnectez-vous à votre VPS en SSH depuis votre ordinateur. La connexion doit s'établir instantanément sans réclamer le mot de passe root du serveur, confirmant que votre clé publique a bien été installée.

    ⌨ Sur votre ordinateur
    ssh root@203.0.113.10

Désactiver la connexion par mot de passe

  1. Repérez le piège du fichier cloud-init

    Listez les fichiers présents dans le répertoire /etc/ssh/sshd_config.d/ et affichez le contenu de 50-cloud-init.conf. Ce fichier active l'authentification par mot de passe. Le serveur SSH conservant la première directive rencontrée lors de la lecture des fichiers par ordre alphabétique, votre propre configuration doit obligatoirement être lue avant lui.

    ⌨ Sur le serveur
    ls /etc/ssh/sshd_config.d/
    cat /etc/ssh/sshd_config.d/50-cloud-init.conf
    Résultat attendu
    PasswordAuthentication yes
  2. Créez le fichier de configuration SSH prioritaire

    Ouvrez l'éditeur nano pour créer le fichier 00-cles-uniquement.conf. Le préfixe 00 garantit que ce fichier sera traité avant 50-cloud-init.conf. Inscrivez-y les directives désactivant les mots de passe et limitant l'accès root aux clés, puis sauvegardez avec Ctrl+X, confirmez avec O (ou Y selon la langue) et appuyez sur Entrée.

    ⌨ Sur le serveur
    nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    📄 /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    # Connexion SSH par clé uniquement
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PermitRootLogin prohibit-password
  3. Testez la syntaxe et appliquez la configuration

    Exécutez sshd -t pour vérifier l'absence d'erreurs de syntaxe, puis contrôlez les valeurs actives avec sshd -T. Notez que permitrootlogin affiche without-password, ce qui correspond à prohibit-password. Si tout est correct, rechargez le service SSH pour appliquer les nouveaux paramètres sans interrompre votre session.

    ⌨ Sur le serveur
    sshd -t
    sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
    systemctl reload ssh
    Résultat attendu
    permitrootlogin without-password
    passwordauthentication no
    kbdinteractiveauthentication no

Tester l'accès SSH

  1. Validez le refus du mot de passe et l'accès par clé

    Sans fermer votre session active, ouvrez une seconde fenêtre de terminal sur votre ordinateur. Tentez d'abord une connexion en forçant le refus des clés avec l'option PubkeyAuthentication=no : le serveur doit refuser l'accès. Lancez ensuite une connexion normale : l'authentification par clé s'effectue avec succès.

    ⌨ Sur votre ordinateur
    ssh -o PubkeyAuthentication=no root@203.0.113.10
    ssh root@203.0.113.10
    Résultat attendu
    root@203.0.113.10: Permission denied (publickey).

Installer et vérifier fail2ban

  1. Installez fail2ban

    Depuis votre session connectée au VPS, mettez à jour la liste des dépôts Debian avec apt update, puis installez le paquet fail2ban. Sur les versions récentes de Debian, fail2ban active automatiquement la protection du service SSH dès la fin de l'installation.

    ⌨ Sur le serveur
    apt update
    apt install -y fail2ban
  2. Vérifiez le statut de fail2ban et fermez la session

    Assurez-vous que le service fail2ban est actif avec systemctl, puis interrogez la prison sshd pour confirmer que le filtrage fonctionne et surveille les connexions. Vous pouvez ensuite vous déconnecter en toute sérénité.

    ⌨ Sur le serveur
    systemctl is-active fail2ban
    fail2ban-client status sshd
    exit
    Résultat attendu
    active
    Status for the jail: sshd
    |- Filter
    |  |- Currently failed: 1
    |  |- Total failed:     3
    |  `- Journal matches:  _SYSTEMD_UNIT=ssh.service + _COMM=sshd
    `- Actions
       |- Currently banned: 0
       |- Total banned:     0
       `- Banned IP list:

Lexique

SSH (Secure Shell)
Protocole de communication sécurisé permettant de se connecter et d'administrer un serveur distant en ligne de commande.
Clé publique
Fichier de clé déposé sur le serveur distant pour vérifier l'identité de l'utilisateur sans transmettre de mot de passe.
Clé privée
Fichier de clé strictement confidentiel conservé sur votre ordinateur local servant à prouver votre identité au serveur.
Cloud-init
Outil d'automatisation utilisé lors du déploiement initial des machines virtuelles pour initialiser leur réseau et leurs accès.
fail2ban
Logiciel de sécurité qui surveille les journaux système et bloque temporairement au niveau du pare-feu les adresses IP suspectes.
Jail (prison)
Dans fail2ban, ensemble associant un filtre de détection de tentatives abusives et une règle de bannissement pour un service donné.

Questions fréquentes

Pourquoi nommer le fichier 00-cles-uniquement.conf plutôt que modifier sshd_config ?

Le démon OpenSSH lit les fichiers du dossier sshd_config.d par ordre alphabétique et applique la première valeur qu'il rencontre. En utilisant le préfixe 00, vos directives sont traitées avant celles de 50-cloud-init.conf, ce qui garantit la prise en compte de l'interdiction des mots de passe.

Que faire si je me retrouve bloqué hors de mon VPS ?

Si vous perdez votre accès SSH, connectez-vous à votre espace client LWS et ouvrez la console KVM / VNC disponible pour votre VPS. Cette console simule un écran et un clavier physiques branchés au serveur et permet de corriger vos fichiers de configuration sans passer par SSH.

Quelle est la différence entre prohibit-password et without-password ?

Il s'agit exactement du même paramètre dans OpenSSH. prohibit-password est la syntaxe moderne recommandée, mais la commande sshd -T affiche son équivalent historique without-password dans la liste des directives actives.

Faut-il configurer fail2ban après son installation sur Debian ?

Sur les distributions récentes comme Debian 13, fail2ban configure et démarre automatiquement la prison pour le service SSH dès l'installation du paquet. Vous pouvez personnaliser les durées de bannissement ultérieurement dans un fichier jail.local si vous le souhaitez.

aide.lws.fr/a/7926
Cet article vous a-t-il aidé ?

Oui

Non

Lu 1 fois

Merci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.

Articles similaires

Une question sur cet article ?

Posez-la à l'équipe LWS et à la communauté. Réponse publiée après modération.

Poser une question à l'équipe LWS et à sa communauté

RGPD : Responsable : LWS-Ligne Web Services. Finalité : modération et publication publique de votre question, notification éventuelle d'une réponse. Base légale : consentement (art. 6.1.a RGPD). Conservation des emails : 90 jours après notification, 12 mois maximum sans réponse. Pour exercer vos droits, consultez la section RGPD de nos CGV.