top of page
cloud-vds.png
  • 2 Base de données

  • 2 VPS AMD

  • 4 instances ARM

  • Stockage 100 Go

  • 50k appels API

theme-light-dark-white.png

Accès à distance sécurisé avec SSH

Dernière mise à jour : 8 févr. 2022

L'accès aux machines à distance est devenu une nécessité il y a longtemps et nous pouvons à peine imaginer ce que ce serait si nous ne pouvions pas contrôler les ordinateurs à distance. Il existe de nombreuses façons d'établir une connexion avec une machine distante en fonction du système d'exploitation que vous exécutez, mais les deux protocoles les plus utilisés sont:

  • Protocole RDP (Remote Desktop Protocol) pour les machines Windows

  • Secure Shell (SSH) majoritairement avec Linux mais aussi utilisable avec Windows.

Les deux protocoles utilisent des applications client et serveur pour établir une connexion à distance. Ces outils vous permettent d'accéder et de gérer à distance d'autres ordinateurs, de transférer des fichiers et de faire pratiquement tout ce que vous pouvez faire en étant physiquement assis devant la machine.


Conditions préalables


Avant de pouvoir établir une connexion sécurisé avec une machine distante, vous devez répondre à quelques exigences de base:

  • L'ordinateur distant doit être allumé à tout moment et disposer d'une connexion réseau.

  • Vous avez besoin de l'adresse IP ou du nom de la machine distante à laquelle vous souhaitez vous connecter.

  • Vous devez disposer des autorisations nécessaires pour accéder à l'ordinateur distant.

  • Les paramètres du pare-feu doivent autoriser la connexion à distance.

  • Les applications client et serveur doivent être installées et opérationnelles.


Qu'est-ce que SSH ?

Secure Shell, parfois appelé Secure Socket Shell, est un protocole qui vous permet de vous connecter en toute sécurité à un ordinateur distant ou à un serveur à l'aide d'une interface textuelle.

Lorsqu'une connexion SSH sécurisée est établie, une session shell sera lancée et vous pourrez manipuler le serveur en tapant des commandes dans le client sur votre ordinateur local.

Les administrateurs système et réseau utilisent le plus ce protocole, ainsi que toute autre personne ayant besoin de gérer un ordinateur à distance de manière hautement sécurisée.


Comment fonctionne SSH ?

Pour établir une connexion SSH, vous avez besoin de deux composants: un client et le composant côté serveur correspondant. Un client SSH est une application que vous installez sur l'ordinateur que vous utiliserez pour vous connecter à un autre ordinateur ou à un serveur.


Le client utilise les informations d'hôte distant fournies pour lancer la connexion et, si les informations d'identification sont vérifiées, établit la connexion cryptée.




1. Le client initie la connexion au serveur SSH.

2. Le serveur envoie sa clé publique au client.

3. La clé publique du serveur est enregistrée dans le fichier d'hôtes connus du client.

4. Le client et le serveur négocient les paramètres de connexion et établissent la connexion.

Du côté du serveur, il existe un composant appelé démon SSH qui écoute constamment un port TCP/IP spécifique pour d'éventuelles demandes de connexion client. Une fois qu'un client initie une connexion, le démon SSH répondra avec le logiciel et les versions de protocole qu'il prend en charge et les deux échangeront leurs données d'identification. Si les informations d'identification fournies sont correctes, SSH crée une nouvelle session pour l'environnement approprié.

La version par défaut du protocole SSH pour la communication entre le serveur SSH et le client SSH est la version 2.

Comment effectuer une connexion SSH

Étant donné que la création d'une connexion SSH nécessite à la fois un client et un composant serveur, vous devez vous assurer qu'ils sont installés respectivement sur la machine locale et la machine distante. Un outil SSH open source - largement utilisé pour les distributions Linux - est OpenSSH. L'installation d'OpenSSH est relativement simple.

Il nécessite l'accès au terminal sur le serveur et à l'ordinateur que vous utilisez pour vous connecter. Notez qu'Ubuntu n'a pas forcement de serveur SSH installé par défaut.


A. Comment installer un serveur OpenSSH


Pour accepter les connexions SSH, une machine doit disposer de la partie côté serveur de la boîte à outils logicielle SSH.

Pour vérifier si le serveur OpenSSH est déjà installé sur le système Linux de l'ordinateur distant qui doit accepter les connexions SSH, vous pouvez essayer de vous connecter à l'hôte local lui même:

  1. Ouvrez un terminal sur la machine serveur.

  2. Tapez ssh localhost et appuyez sur Entrée.

  3. Pour les systèmes sans serveur SSH installé, la réponse ressemblera à ceci:

username@host:~$ ssh 
ssh: connect to host localhost port 22: Connection refused

Si tel est le cas, vous devrez installer le serveur OpenSSH. Laissez le terminal ouvert et exécutez la commande suivante pour installer le serveur SSH:

sudo apt-get install openssh-server

Les fichiers requis seront installés, vous pourrez ensuite vérifier si le serveur SSH est en cours d'exécution sur la machine en tapant cette commande:

sudo systemctl status ssh

La réponse devrait ressembler à ceci si le service SSH fonctionne correctement:

Une autre façon de tester si le serveur OpenSSH est correctement installé et accepte les connexions est d'essayer d'exécuter à nouveau la commande ssh localhost dans l'invite de votre terminal.

ssh localhost

Il est nécessaire de valider la première connexion à un hôte non connu.


"Are you sure you want to continue connecting?"

Tapez yes pour continuer puis entrez le mot de passe de votre utilisateur.

Le résultat ressemblera à ceci lorsque vous exécuterez la commande pour la première fois :

Ici vous vous êtes connecté à votre propre serveur en connexion dites "localhost", soit à l'hôte local lui même. Nous verrons bientôt comment accéder au serveur à distance, donc depuis un autre hôte !


Toutes nos félicitations! Vous avez configuré votre serveur pour accepter les demandes de connexion SSH.


B. Comment installer un client SSH


Avant de procéder à l'installation d'un client SSH, assurez-vous qu'il n'est pas déjà installé. De nombreuses distributions Linux ont déjà un client SSH par défaut.


Pour les systèmes Windows, vous pouvez installer PuTTY ou tout autre client de votre choix pour accéder à un serveur. Lien de téléchargement officiel pour PuTTY.

Pour les système Linux, vous pouvez vérifier si le client est déjà installé :

  1. Tapez ssh dans un terminal et appuyez sur Entrée.

  2. Si le client est installé, vous recevrez une réponse qui ressemble à ceci:

Cela signifie que vous êtes prêt à vous connecter à distance à une machine physique ou virtuelle. Sinon, vous devrez installer le client OpenSSH en éxécutant la commande suivante:

sudo apt-get install openssh-client

Vous pourrez désormais utiliser SSH pour vous connecter sur n'importe quelle machine avec l'application serveur, à condition que vous disposiez des privilèges nécessaires pour y accéder, ainsi que du nom d'hôte ou de l'adresse IP.


Comment se connecter via SSH


Maintenant que le client et le serveur SSH sont installés, vous pouvez établir une connexion à distance sécurisée avec votre serveur. Voici comment procéder :


Deux choix pour vous connecter A ou B.


A. Depuis un client Windows tel que PuTTY

  1. Relevez l'adresse IP de votre serveur. Pour Ubuntu avec la commande : ip address

  2. Ouvrez PuTTY ou tout autre logiciel émulateur de terminal.

  3. Sélectionnez le type de connections SSH et assurez d'être sur le port 22

  4. Renseignez l'adresse IP ou le nom d'hôte du serveur distant.

  5. Cliquez sur "Open" pour ouvrir la connction


B. Depuis un terminal

  1. Ouvrez le terminal SSH sur votre machine et exécutez la commande suivante: ssh your_username@host_ip_address Si le nom d'utilisateur sur votre ordinateur local correspond à celui du serveur auquel vous essayez de vous connecter, vous pouvez simplement taper: ssh host_ip_address Et appuyez sur Entrée.

  2. Tapez votre mot de passe et appuyez sur Entrée . Notez que vous n'obtiendrez aucun commentaire à l'écran lors de la saisie. Si vous collez votre mot de passe, assurez-vous qu'il est stocké en toute sécurité et non dans un fichier texte.

  3. Lorsque vous vous connectez à un serveur pour la toute première fois, il vous demandera si vous souhaitez continuer à vous connecter. Tapez simplement oui et appuyez sur Entrée . Ce message n'apparaît que cette fois car le serveur distant n'est pas identifié sur votre machine locale.

  4. Une empreinte digitale de clé ECDSA est maintenant ajoutée et vous êtes connecté au serveur distant.

Si l'ordinateur auquel vous essayez de vous connecter à distance se trouve sur le même réseau, il est préférable d'utiliser l'adresse IP privée au lieu de l'adresse IP publique. Sinon, vous devrez utiliser uniquement l'adresse IP publique. En outre, assurez-vous que vous connaissez le port TCP correct qu'OpenSSH écoute pour les demandes de connexion et que les paramètres de transfert de port sont corrects. Le port par défaut est 22 si personne n'a modifié la configuration dans le fichier sshd_config. Vous pouvez également simplement ajouter le numéro de port après l'adresse IP de l'hôte.


Configurer un serveur OpenSSH


Dans cette première étape, vous implémenterez certaines configurations de renforcement initiales pour améliorer la sécurité globale de votre serveur SSH.


La plupart des configurations pour OpenSSH que vous implémentez à l'aide du fichier de configuration de serveur OpenSSH standard se trouvent dans /etc/ssh/sshd_config.


En modifiant le fichier de configuration du deamon SSH, vous pouvez par exemple changer le port par défaut pour les connexions SSH.


Si vous devez installer nano, exécutez cette commande:

sudo apt-get install nano

Veuillez noter que vous devez pour rendre effectif, redémarrer le service SSH chaque fois que vous apporterez des modifications au fichier sshd_config en exécutant cette commande:


sudo service ssh restart

Avant de poursuivre, il est recommandé de faire une sauvegarde de votre fichier de configuration existant, afin de pouvoir le restaurer dans le cas où quelque chose n'irait pas.


Effectuez une sauvegarde du fichier à l'aide de la commande suivante:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Cela enregistrera une copie du fichier dans /etc/ssh/sshd_config.bak.


Dans l'invite du terminal, exécutez cette commande:

sudo nano /etc/ssh/sshd_config 

Le fichier de configuration s'ouvrira dans l'éditeur de votre choix. Ici nous avons utilisé nano.


Remarque: le fichier de configuration du serveur OpenSSH comprend de nombreuses options et configurations par défaut. Selon la configuration de votre serveur existante, certaines des options de renforcement recommandées peuvent déjà avoir été définies.

Lors de l'édition de votre fichier de configuration, certaines options peuvent être mises en commentaire par défaut en utilisant un seul caractère dièse ( #) au début de la ligne. Pour modifier ces options ou faire reconnaître l'option commentée, vous devrez les décommenter en supprimant le hachage.


Tout d'abord, désactivez la connexion via SSH en tant qu'utilisateur root en définissant l'option suivante:


PermitRootLogin no

Ceci est extrêmement bénéfique, car cela empêchera un attaquant potentiel de se connecter directement en tant que root. Il encourage également de bonnes pratiques de sécurité opérationnelle, telles que le fonctionnement en tant qu'utilisateur non privilégié et l'utilisation sudopour augmenter les privilèges uniquement lorsque cela est absolument nécessaire.

Ensuite, vous pouvez limiter le nombre maximum de tentatives d'authentification pour une session de connexion particulière en configurant les éléments suivants:


MaxAuthTries 3 

Une valeur standard de 3 est acceptable pour la plupart des configurations, mais vous souhaiterez peut-être la définir plus haut ou plus bas en fonction de votre propre seuil de risque.


Si nécessaire, vous pouvez également définir une période de grâce de connexion réduite, qui correspond au temps dont dispose un utilisateur pour terminer l'authentification après la connexion initiale à votre serveur SSH:


LoginGraceTime 20

Le fichier de configuration spécifie cette valeur en secondes.


La définition de cette valeur sur une valeur inférieure permet d'éviter certaines attaques par déni de service où plusieurs sessions d'authentification sont maintenues ouvertes pendant une période prolongée.


Si vous avez configuré des clés SSH pour l'authentification, plutôt que d'utiliser des mots de passe, désactivez l'authentification par mot de passe SSH pour empêcher les mots de passe utilisateur divulgués de permettre à un attaquant de se connecter. Nous allons laisser le paramètre sur yes tant que les clefs SSH ne sont pas utilisées.


PasswordAuthentication yes

Comme mesure de renforcement supplémentaire liée aux mots de passe, vous pouvez également désactiver l'authentification avec des mots de passe vides. Cela empêchera les connexions si le mot de passe d'un utilisateur est défini sur une valeur vide ou vide:


PermitEmptyPasswords no

Dans la majorité des cas d'utilisation, SSH sera configuré avec l'authentification par clé publique comme seule méthode d'authentification utilisée. Cependant, le serveur OpenSSH prend également en charge de nombreuses autres méthodes d'authentification, dont certaines sont activées par défaut. Si ceux-ci ne sont pas obligatoires, vous pouvez les désactiver pour réduire davantage la surface d'attaque de votre serveur SSH.


Titre

CONTENU

CONTENU

Chargement...

Chargement...

Chargement...

bottom of page