Parution d'OpenSSH 8.0
-
OpenSSH 8.0 est disponible depuis le 17 avril 2019. Ce projet, démarré par des développeurs d’OpenBSD, vise à proposer une alternative libre, sécurisée et moderne à des logiciels d’administration distante comme telnet et rlogin. Le but est d’ailleurs atteint, puisque ces deux derniers logiciels ont été relégués au rang d’antiquités depuis bien des années maintenant.
Vous trouverez en deuxième partie de cet article une sélection des changements apportés, reprenant grandement les notes de version.
- lien n°1 : OpenSSH
- lien n°2 : Notes de version de la 8.0 (texte)
- lien n°3 : Notes de version (historique jusqu’à la version 1.2.2p1)
- lien n°4 : OpenBSD
- lien n°5 : Annonce d’OpenSSH 8.0 sur la liste de diffusion openssh-unix-announce
- lien n°6 : DLFP : OpenSSH 7.9
Sommaire
Sécurité
Cette nouvelle version corrige en particulier une faiblesse dans scp (le programme ainsi que le protocole), identifiée par le numéro CVE-2019-6111 : en cas de copie de fichiers d’une machine distante dans un répertoire local, scp ne vérifiait pas si le nom des fichiers envoyés par le serveur correspondait à ceux demandés par le client. Cela permettait à un serveur malveillant de créer ou de modifier des fichiers sur le système du client.
Dans les notes de version, les développeurs ajoutent que le protocole scp est dépassé, rigide et difficile à corriger. Ils continuent en recommandant l’utilisation d’un protocole plus moderne comme sftp et rsync pour le transfert de fichiers.
Changements pouvant casser la compatibilité ascendante
Comme à chaque note de version, les développeurs mettent en garde les utilisateurs à propos de changements qui pourraient poser problème sur des configurations existantes. Pour cette version, deux changements sont à surveiller de près :
- pour scp, des vérifications ont été ajoutées afin de refuser des fichiers si l’expansion de caractères spéciaux diffère entre le client et le serveur ; au cas où, l’argument “-T” désactive ce comportement ;
- pour sshd, la syntaxe “hôte/port”, jugée obsolète, n’est plus utilisable pour les directives ListenAddress et PermitOpen ; elle avait été ajoutée en 2001 en tant qu’alternative à la syntaxe “hôte:port”, mais elle est souvent confondue avec une syntaxe de type CIDR.
Changements depuis OpenSSH 7.9
Nouvelles fonctionnalités
Parmi les nouveautés d’OpenSSH 8.0, on peut trouver :
- ssh(1), ssh-agent(1), ssh-add(1) : ajout de la prise en charge de clefs ECDS dans les jetons PKCS#11 ;
- ssh(1), sshd(8) : ajout d’une méthode expérimentale d’échange de clefs résistante à l’informatique quantique, basée sur une combinaison de Streamlined NTRU Prime 4591761 et X25519 ;
- ssh-keygen(1) : augmentation de la taille par défaut des clefs RSA à 3072 bits, cela suit une recommandation du NIST, émise dans la publication spéciale 800-57 ;
- ssh(1) : en cas de demande d’enregistrement d’une nouvelle clef d’hôte, il est possible d’entrer une empreinte de clef à la place de yes ou no, ce qui permet d’en coller une provenant par exemple d’un accès “hors ligne” et faire en sorte que le client ssh compare (et accepte ou refuse) à la place de l’utilisateur ;
- l’argument -J est disponible en tant qu’alias de l’option ProxyJump dans les outils scp et sftp ;
- ssh-agent(1), ssh-pkcs11-helper(8), ssh-add(1) : l’argument “-v” augmente la verbosité de la sortie, mais passe aussi cette augmentation dans les sous-processus, comme dans le cas où ssh-pkcs11-helper est démarré depuis ssh-agent ;
- sshd(8) : la variable d’environnement $SSH_CONNECTION est exposée à l’environnement PAM ; cela permet aux modules PAM d’utiliser le “connection 4-tuple”.
À noter, pour ce qui est des tailles de clefs, qu’en France celles-ci font l’objet d’une recommandation de l’ANSSI par le biais du Référentiel Général de Sécurité (RGS), et en particulier de son annexe B1.
Corrections de bogues
Cette nouvelle version apporte entre autres les corrections suivantes :
- sshd(8) n’envoie plus de keepalive en double quand la directive ClientAliveCount est activée ;
- deux race conditions (« situation de compétition, situation de concurrence, accès concurrent, concurrence critique, course critique, séquencement critique ») ont été corrigées dans sshd(8), elles sont liées à son redémarrage via SIGHUP ; la première concernant des descripteurs de fichiers restant pouvant empêcher sshd d’écouter sur l’adresse configurée, et l’autre concernant le sshd parent qui redémarre, car il pouvait se fermer avant la fin de la lecture par tous les processus enfants en attente de leur état de ré-exécution, les laissant ainsi dans un chemin de secours ;
- correction d’une mauvaise interaction entre les directives ConnectTimeout et ConnectionAttempts dans le fichier ssh_config, les tentatives de connexion faites après la première ignoraient le timeout configuré ;
- ssh-keyscan(1) a maintenant un code de retour autre que 0 quand il ne trouve aucune clef ;
- scp va dorénavant nettoyer les noms de fichier pour autoriser des caractères UTF-8 sans séquence de contrôle de terminal ;
- la documentation de l’option ProxyJump (et de l’argument -J) clarifie que la configuration locale ne s’applique pas aux hôtes de rebond ;
- autre clarification, cette fois-ci pour l’argument -e de ssh-keygen qui n’écrit que des clefs publiques, et non privées ;
- ssh et sshd sont maintenant plus stricts sur le traitement des bannières de protocole, n’autorisant
\r
qu’immédiatement après\n
; - un certain nombre de fuites de mémoires ont été corrigées, voir les bogues bz#2942 et bz#2938 ;
- le calcul de débit initial a été corrigé dans scp et sftp : il prend maintenant en compte les octets écrits avant que le timer démarre et ajuste la programmation des recalculs de débit, ce qui évite un burst de trafic et applique mieux la limite ;
- encore une clarification du manuel, cette fois concernant les arguments -F et -R de ssh-keygen : ils acceptent soit juste le nom d’hôte soit la syntaxe [nom d’hôte]:port ;
- ssh n’essaie plus de se connecter lorsque la variable d’environnement SSH_AUTH_SOCK est vide (bz#2936) ;
- ssh conservait un socket redondant de ssh-agent (un reste de l’authentification) pendant toute la connexion, ce n’est plus le cas maintenant (bz#2912) ;
Portabilité
Il existe deux versions d’OpenSSH : une dédiée à OpenBSD et une deuxième contenant des correctifs de compatibilité pour les autres systèmes d’exploitation, appelée version portable.
Pour cette version 8.0, les améliorations concernent avant tout l’utilisation dans Cygwin :
- sshd est lancé en tant qu’utilisateur SYSTEM autant que possible, en utilisant S4U pour la création de jeton si cela prend en charge le logon MsV1_0 S4U ;
- toujours pour sshd, du code spécifique a été ajouté pour respecter l’insensibilité à la casse des utilisateurs et groupes ;
- sshd n’initialise pas la variable d’environnement $MAIL si la configuration spécifie UsePAM=yes car PAM s’en charge (bz#2937) ;
- le nom du service sshd se nomme dorénavant cygsshd pour éviter une collision avec le portage Microsoft d’OpenSSH ;
- la compilation avec la branche -dev d’OpenSSL (3.x) est dorénavant autorisée ;
- divers problèmes de compilation suivant les versions de configuration et d’OpenSSL ont été corrigés (bz#2931 et bz#2921) ;
- amélioration des messages d’avertissement dans la mise en place du service Cygwin et retrait du codage en dur du nom du service (bz#2922).
Télécharger ce contenu au format Epub
Commentaires : voir le flux atom ouvrir dans le navigateur
Sauf mention contraire, le site est placé sous double licence Creative Commons BY-SA et GNU Free Documentation License propulsé par NodeBB