Introduction à OpenSSH¶
1. Objectif du cours¶
Présenter le protocole SSH, son rôle dans les accès à distance sécurisés et l'implémentation OpenSSH (origine, composants et relations avec OpenSSL). Donner les bases nécessaires pour configurer et sécuriser des connexions SSH.
2. Notions et définitions essentielles¶
- SSH (Secure Shell) : protocole permettant des connexions réseau sécurisées vers un hôte distant.
- OpenSSH : implémentation Open Source de SSH, issue du projet OpenBSD, maintenue et distribuée dans la plupart des distributions Linux et intégrée à Windows depuis 2018.
- OpenSSL / libcrypto : OpenSSL fournit des bibliothèques de chiffrement ; OpenSSH utilise la bibliothèque libcrypto pour opérations cryptographiques.
- Chiffrement symétrique : clé unique générée (ex. via Diffie-Hellman) utilisée pour chiffrer la session.
- Chiffrement asymétrique : paire clé publique/clé privée, utilisée principalement pour sécuriser l’échange de clés et l’authentification par clé.
- Hachage : fonctions non réversibles assurant l’intégrité des données (empreinte).
3. Fonctionnement et principes¶
- Architecture client/serveur : le serveur SSH écoute (par défaut port 22) et gère l’authentification et la création de l’environnement de session ; le client initie la connexion TCP, vérifie l’identité du serveur puis fournit ses informations d’authentification.
- Trois phases d’une connexion SSH :
- Transport (SSH Transport Layer Protocol) : identification mutuelle, négociation des algorithmes (chiffrement et hachage) et établissement d’une clé symétrique de session.
- Authentification (SSH User Authentication Protocol) : le client prouve son identité (mot de passe ou clé publique).
- Connexion (SSH Connection Protocol) : multiplexage de flux (canaux) distincts sur la même session chiffrée.
- Sécurité : SSH-2 corrige les faiblesses de SSH-1 (meilleurs algorithmes, clés renouvelées périodiquement, hachages robustes).
4. Commandes et manipulations¶
(Seules commandes présentes dans le document) - Outils de transfert et client - scp : copie sécurisée de fichiers via SSH (package openssh-clients). - sftp : transfert de fichiers via un tunnel SSH (package openssh-clients). FTP-SERVEUR : sous‑système SFTP côté serveur (openssh-server). - ssh : client principal pour se connecter et exécuter des commandes à distance (openssh-clients). - Gestion des clés et agent - ssh-keygen : générer, gérer et convertir des clés d’authentification (openssh-server). - ssh-copyid : installe une clé publique sur une machine distante pour activer l’authentification par clé (openssh-clients). - ssh-agent : processus gardant en mémoire les clés privées pour l’authentification par clé (openssh-clients). - ssh-add : ajoute des identités à ssh-agent (openssh-clients). - ssh-keyscan : collecte les clés d’hôtes publiques (openssh-clients). - Serveur et configuration - sshd : démon serveur SSH qui permet de démarrer le service (openssh-server). - ssh_config / sshd_config : fichiers de configuration du client et du daemon.
5. Sécurité et bonnes pratiques¶
- Favoriser SSH-2 (corrige failles de SSH-1 et utilise algorithmes modernes).
- Préconiser l’authentification par clé publique plutôt que par simple mot de passe (résistance aux attaques par force brute).
- Vérifier côté client que les informations liées au serveur correspondent aux enregistrements avant d’authentifier.
- Maintenir OpenSSH à jour : correctifs et patchs de sécurité publiés régulièrement par la communauté.
- Protéger les clés privées (usage de ssh-agent pour éviter de retaper la passphrase tout en limitant l’exposition).
6. Points essentiels à retenir pour le TSSR¶
- SSH remplace Telnet pour des accès distants sécurisés ; Telnet envoyait les identifiants en clair.
- Une connexion SSH s’effectue en trois phases : transport (négociation + clé symétrique), authentification utilisateur, puis multiplexage de canaux.
- Deux méthodes de chiffrement sont employées pour la sécurité : asymétrique (sécuriser l’échange de clés / authentification) et symétrique (chiffrement des données de session).
- Le hachage garantit l’intégrité des données ; SSH-2 utilise des algorithmes plus robustes que SSH-1.
- OpenSSH est l’implémentation libre courante ; elle repose sur libcrypto d’OpenSSL pour les opérations cryptographiques.
- OpenSSH est présent dans la plupart des distributions Linux et intégré à Windows (ajouté en 2018, inclus sur Windows 10 / Server 2019).
- Les connexions par clé publique sont préférables en contexte professionnel exigeant (télétravail, administration de serveurs).
- Le serveur SSH écoute par défaut sur le port 22 et prend en charge la création de l’environnement utilisateur après authentification réussie.
7. Tableau récapitulatif¶
| Élément | SSH-1 | SSH-2 |
|---|---|---|
| Sécurité générale | vulnérable (ex. RSA ancien) | renforcé (algorithmes modernes) |
| Échange de clés | sessions non renouvelées | clés renouvelées périodiquement |
| Intégrité | CRC4 (failles) | MD5 / SHA1 (options + variantes) |
| Usage courant | obsolète | standard actuel |
| Comparaison OpenSSH / OpenSSL |
|---|
| OpenSSH = implémentation SSH (client/serveur) ; OpenSSL = bibliothèques cryptographiques. |
| OpenSSH importe libcrypto d’OpenSSL pour fonctions de chiffrement et hachage. |
8. Vérifications pratiques¶
- Vérifier que le client reconnaît l’hôte distant : le client doit reconnaître les informations du serveur avant authentification (correspondance avec les enregistrements).
- Vérifier l’authentification : obtention d’un shell distant ou création de l’environnement de session indique réussite de l’authentification.
- Vérifier la présence/activation d’OpenSSH sur un poste Windows : inclusion depuis 2018 (Windows 10 / Server 2019) — présence des binaires/services associés.
9. Flashcards Anki¶
Que signifie l'acronyme SSH ? :: Secure Shell Combien de méthodes de chiffrement sont utilisées par le protocole SSH selon les solutions du cours ? :: Deux Combien d'étapes sont associées à une connexion SSH ? :: Trois Quel est le port par défaut sur lequel le serveur SSH écoute ? :: 22 Comment s'appelle la phase qui gère l'identification mutuelle et la négociation des algorithmes ? :: SSH Transport Layer Protocol Quelle bibliothèque d'OpenSSL est utilisée par OpenSSH pour les opérations de chiffrement ? :: libcrypto Nommez un protocole de transfert de fichiers qui fonctionne via un tunnel SSH. :: SFTP Quelle phase correspond à l'authentification utilisateur dans SSH ? :: SSH User Authentication Protocol Pourquoi préférer l'authentification par clé publique plutôt que par mot de passe ? :: Moins vulnérable aux attaques par force brute Depuis quelle année OpenSSH a-t-il été ajouté dans les distributions Windows ? :: 2018