Connexion sécurisée à Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Secure Shell (SSH) est un protocole réseau cryptographique utilisé pour accéder en toute sécurité à des serveurs distants sur un réseau non sécurisé. En tant que professionnel du domaine informatique, comprendre comment établir des connexions sécurisées aux serveurs Linux est une compétence essentielle.

Dans ce laboratoire (LabEx), vous apprendrez à générer des paires de clés SSH, à gérer vos clés et à configurer SSH pour une authentification sécurisée. Cette connaissance est fondamentale pour les administrateurs systèmes, les développeurs et les professionnels de la cybersécurité qui ont besoin d'accéder et de gérer en toute sécurité des systèmes distants.

En terminant ce laboratoire (LabEx), vous aurez une expérience pratique avec SSH, qui est la méthode standard de l'industrie pour l'administration à distance sécurisée des serveurs Linux et les transferts de fichiers sécurisés.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("Secure Connecting") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/ls -.-> lab-271389{{"Connexion sécurisée à Linux"}} linux/cat -.-> lab-271389{{"Connexion sécurisée à Linux"}} linux/chmod -.-> lab-271389{{"Connexion sécurisée à Linux"}} linux/cd -.-> lab-271389{{"Connexion sécurisée à Linux"}} linux/mkdir -.-> lab-271389{{"Connexion sécurisée à Linux"}} linux/ssh -.-> lab-271389{{"Connexion sécurisée à Linux"}} linux/nano -.-> lab-271389{{"Connexion sécurisée à Linux"}} end

Comprendre les bases de SSH

SSH (Secure Shell) est un protocole qui offre un moyen sécurisé d'accéder à des ordinateurs distants. Contrairement aux protocoles plus anciens comme Telnet, SSH chiffre toutes les communications entre le client et le serveur, protégeant vos données des écoutes clandestines.

SSH présente plusieurs avantages :

  • Communications chiffrées
  • Méthodes d'authentification robustes
  • Vérification de l'intégrité des données
  • Transferts de fichiers sécurisés

Commençons par vérifier si SSH est installé sur votre système. Ouvrez votre terminal et exécutez :

ssh -V

Vous devriez voir une sortie similaire à celle-ci, indiquant la version de SSH installée :

OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022

Maintenant, naviguons jusqu'au répertoire de notre projet où nous allons travailler :

cd ~/project

Cette commande change votre répertoire actuel en /home/labex/project, qui est l'endroit où nous effectuerons toutes nos opérations dans ce laboratoire (LabEx).

Générer des paires de clés SSH

SSH prend en charge plusieurs méthodes d'authentification, mais l'authentification basée sur les clés est la plus sûre et la plus pratique. Dans cette étape, vous allez générer une paire de clés SSH.

Une paire de clés SSH se compose de :

  • Une clé privée : C'est comme votre mot de passe secret et ne doit jamais être partagée.
  • Une clé publique : Elle peut être partagée en toute sécurité avec les serveurs distants auxquels vous souhaitez vous connecter.

Pour générer une nouvelle paire de clés SSH, utilisez la commande ssh-keygen :

ssh-keygen -t rsa -b 4096

Cette commande spécifie :

  • -t rsa : Utilisez l'algorithme RSA pour la génération de clés
  • -b 4096 : Créez une clé de 4096 bits, ce qui offre une forte sécurité

Lorsque vous exécutez cette commande, vous serez invité à :

  1. Entrer un chemin de fichier pour enregistrer la clé (appuyez sur Entrée pour accepter le chemin par défaut ~/.ssh/id_rsa)
  2. Entrer une phrase de passe (vous pouvez laisser ce champ vide pour ce laboratoire (LabEx) en appuyant deux fois sur Entrée)

Voici un exemple de ce que vous devriez voir :

Generating public/private rsa key pair.
Enter file in which to save the key (/home/labex/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/labex/.ssh/id_rsa
Your public key has been saved in /home/labex/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890 labex@hostname
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|       . .       |
|      . + .      |
|     . = + .     |
|    . = S = .    |
|   . . = = + .   |
|    . . + = + .  |
|     . . + + .   |
|      .. . .     |
+----[SHA256]-----+

Maintenant, examinons les clés qui ont été générées. Pour afficher votre clé publique, utilisez :

cat ~/.ssh/id_rsa.pub

Cela affichera votre clé publique, qui ressemble à ceci :

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ... (long string of characters) ...labex@hostname

N'oubliez pas que la clé publique peut être partagée, mais la clé privée (~/.ssh/id_rsa) doit être conservée en sécurité et ne doit jamais être partagée avec quiconque.

Comprendre les autorisations des clés SSH

Pour des raisons de sécurité, SSH est très strict en matière d'autorisations de fichiers. Dans cette étape, vous allez apprendre quelles sont les autorisations correctes pour les clés SSH et comment les définir.

Vérifions les autorisations actuelles de vos clés SSH :

ls -la ~/.ssh/

Vous devriez voir une sortie similaire à celle-ci :

total 16
drwx------ 2 labex labex 4096 Jan 1 12:00 .
drwxr-xr-x 3 labex labex 4096 Jan 1 12:00 ..
-rw------- 1 labex labex 3381 Jan 1 12:00 id_rsa
-rw-r--r-- 1 labex labex  741 Jan 1 12:00 id_rsa.pub

Les autorisations correctes sont les suivantes :

  • Clé privée (id_rsa) : 600 (seulement vous pouvez la lire et l'écrire)
  • Clé publique (id_rsa.pub) : 644 (tout le monde peut la lire, seulement vous pouvez l'écrire)
  • Répertoire .ssh : 700 (seulement vous y avez accès)

Si vos autorisations sont différentes, vous pouvez les définir correctement avec :

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

Vérifions que les autorisations ont été correctement définies :

ls -la ~/.ssh/

La sortie devrait maintenant afficher les autorisations correctes :

total 16
drwx------ 2 labex labex 4096 Jan 1 12:00 .
drwxr-xr-x 3 labex labex 4096 Jan 1 12:00 ..
-rw------- 1 labex labex 3381 Jan 1 12:00 id_rsa
-rw-r--r-- 1 labex labex  741 Jan 1 12:00 id_rsa.pub

Ces autorisations sont essentielles pour la sécurité - SSH refusera de fonctionner si les autorisations sont trop permissives, car cela risquerait d'exposer votre clé privée.

Configurer l'authentification SSH

Dans cette étape, vous allez apprendre à configurer l'authentification SSH basée sur les clés. Cela vous permet de vous connecter à des serveurs distants sans avoir à taper votre mot de passe à chaque fois.

Pour que l'authentification par clé SSH fonctionne, vous devez copier votre clé publique dans le fichier ~/.ssh/authorized_keys du serveur. Dans un scénario réel, vous utiliseriez la commande ssh-copy-id pour ce faire :

## Example for reference (Do not run this)
## ssh-copy-id username@remote_host

Comme nous n'avons pas de serveur distant réel pour ce laboratoire (LabEx), nous allons simuler ce processus en créant un fichier local authorized_keys.

Tout d'abord, créons le répertoire .ssh s'il n'existe pas déjà :

mkdir -p ~/.ssh

La commande mkdir -p crée le répertoire s'il n'existe pas et ne fait rien s'il existe déjà.

Maintenant, créons ou ajoutons à la fin du fichier authorized_keys :

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Cette commande ajoute votre clé publique à la fin du fichier authorized_keys. Dans un environnement réel, ce fichier serait sur le serveur distant.

Vérifions le contenu du fichier authorized_keys :

cat ~/.ssh/authorized_keys

Vous devriez voir votre clé publique dans la sortie, qui devrait ressembler à ceci :

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ... (long string of characters) ...labex@hostname

Enfin, assurons-nous que le fichier authorized_keys a les autorisations correctes :

chmod 600 ~/.ssh/authorized_keys

Cela définit les autorisations pour que seul le propriétaire puisse lire et écrire dans le fichier, ce qui est une exigence de sécurité pour le fichier authorized_keys.

Comprendre le fichier de configuration SSH

SSH vous permet de personnaliser son comportement grâce au fichier de configuration SSH. Cela est particulièrement utile lorsque vous vous connectez régulièrement à plusieurs serveurs.

Créons un fichier de configuration SSH pour voir comment cela fonctionne :

nano ~/.ssh/config

Cela ouvre l'éditeur de texte nano. Ajoutez le contenu suivant au fichier :

## Paramètres par défaut pour tous les hôtes
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

## Exemple de configuration de serveur
Host example
    HostName example.com
    User username
    Port 22
    IdentityFile ~/.ssh/id_rsa

Dans cette configuration :

  • ServerAliveInterval 60 envoie un signal de maintien de connexion toutes les 60 secondes
  • ServerAliveCountMax 3 déconnecte si le serveur ne répond pas à 3 signaux consécutifs
  • La section Host example crée un alias afin que vous puissiez vous connecter avec ssh example au lieu de ssh [email protected] -p 22

Pour enregistrer le fichier dans nano, appuyez sur Ctrl+O, puis Entrée pour confirmer, et Ctrl+X pour quitter.

Maintenant, définissons les autorisations correctes pour le fichier de configuration :

chmod 600 ~/.ssh/config

Cela garantit que seul vous pouvez lire et écrire dans ce fichier, ce qui est important pour la sécurité.

Dans un scénario réel, vous pourriez maintenant vous connecter au serveur simplement en tapant :

## Example for reference (Do not run this)
## ssh example

Au lieu de :

## Example for reference (Do not run this)
## ssh [email protected] -p 22

Le fichier de configuration SSH est un outil puissant qui peut vous faire gagner du temps et faciliter la gestion de multiples connexions SSH.

Résumé

Dans ce laboratoire (LabEx), vous avez appris les bases de SSH (Secure Shell) pour vous connecter en toute sécurité à des serveurs Linux. Voici un récapitulatif de ce que vous avez accompli :

  1. Vous avez compris le fonctionnement de SSH et son importance pour les connexions distantes sécurisées
  2. Vous avez généré une paire de clés SSH composée d'une clé privée et d'une clé publique
  3. Vous avez appris l'importance des autorisations de fichiers appropriées pour la sécurité de SSH
  4. Vous avez configuré l'authentification basée sur les clés SSH en configurant le fichier authorized_keys
  5. Vous avez créé un fichier de configuration SSH pour personnaliser et simplifier les connexions SSH

Ces compétences sont essentielles pour tous ceux qui travaillent avec des systèmes Linux, en particulier dans les domaines de l'informatique cloud, de l'administration système, du DevOps et de la cybersécurité. SSH est la méthode standard pour accéder en toute sécurité à des serveurs Linux distants et est utilisée quotidiennement par les professionnels de l'informatique du monde entier.

Grâce aux connaissances acquises dans ce laboratoire, vous êtes maintenant en mesure d'établir des connexions sécurisées à des serveurs Linux, ce qui est une compétence fondamentale pour approfondir vos connaissances en administration système Linux et en informatique cloud.