OpenSSH est un projet logiciel libre et distribué, une bibliothèque et un programme de ligne de commande qui fonctionne en arrière-plan de votre système d'exploitation GNU / Linux et protège votre réseau contre les intrus et les pirates. C'est la version open source de la spécification SSH (Secure Shell), spécialement conçue pour
Caractéristiques en un coup d'oeil
OpenSSH est un projet open source distribué sous licence libre. Il offre une authentification forte basée sur les normes de clé publique, d'authentification Kerberos et de mot de passe à usage unique, un cryptage fort basé sur les algorithmes AES, Blowfish, Arcfour et 3DES, des transferts X11 en cryptant tout le trafic du système X Window, ainsi que AFS et Passage de ticket Kerberos.
De plus, la fonction de transfert de port de fonctionnalités logicielles crypte les canaux pour les protocoles hérités, la compression des données, le transfert d'agent en utilisant la norme d'authentification Single-Sign-On (SSO) et le support SFTP (Secure FTP) Protocoles SSH2 ou SSH1.
Une autre caractéristique intéressante est l'interopérabilité, ce qui signifie que le projet est conforme aux versions 1.3, 1.5 et 2.0 du protocole SSH (Secure Shell) d'origine. Après l'installation, OpenSSH remplacera automatiquement les programmes FTP, Telnet, RCP et rlogin standard par des versions sécurisées, telles que SFTP, SCP et SSH.
Sous le capot, disponibilité et OS pris en charge
Le projet OpenSSH est entièrement écrit dans le langage de programmation C. Il comprenait l'implémentation SSH principale et le démon SSH, qui s'exécute en arrière-plan. Le logiciel est distribué principalement sous la forme d'une archive de sources universelles, qui fonctionnera avec n'importe quel système d'exploitation GNU / Linux sur des architectures 32 bits et 64 bits.
OpenSSH portable
Une version portable du protocole OpenSSH est également disponible en téléchargement sur Softoware, gratuitement, appelée Portable OpenSSH. Il s'agit d'une implémentation Open Source des protocoles SSH version 1 et SSH version 2 pour les systèmes d'exploitation Linux, BSD et Solaris.
Nouveautés dans cette version:
- Modifications potentiellement incompatibles:
- Cette version inclut un certain nombre de modifications susceptibles d'affecter les configurations existantes:
- Cette version supprime le support du serveur pour le protocole SSH v.1.
- ssh (1): Supprime 3des-cbc de la proposition par défaut du client. Les chiffrements par blocs de 64 bits ne sont pas sûrs en 2016 et nous ne voulons pas attendre que les attaques comme SWEET32 soient étendues à SSH. Comme 3des-cbc était le seul chiffrement obligatoire des RFC SSH, cela peut causer des problèmes de connexion aux périphériques plus anciens en utilisant la configuration par défaut, mais il est fort probable que ces périphériques aient déjà besoin d'une configuration explicite. sshd (8): supprime le support pour la compression de pré-authentification. Faire de la compression au début du protocole semblait probablement raisonnable dans les années 1990, mais aujourd'hui c'est clairement une mauvaise idée à la fois en termes de cryptographie (cf attaques multiples de compression d'Oracle en TLS) et de surface d'attaque. La prise en charge de la compression pré-autorisation a été désactivée par défaut pour & gt; 10 ans. Le soutien reste dans le client. ssh-agent refusera de charger les modules PKCS # 11 en dehors d'une liste blanche de chemins approuvés par défaut. La liste blanche des chemins peut être spécifiée au moment de l'exécution.
- sshd (8): Lorsqu'une commande forcée apparaît à la fois dans un certificat et dans une commande / clé = restriction autorisée, sshd refuse maintenant d'accepter le certificat à moins qu'ils ne soient identiques. Le comportement précédent (documenté) de l'écrasement de la commande forcée par le certificat pourrait être un peu confus et sujet aux erreurs. sshd (8): supprime la directive de configuration UseLogin et prend en charge la gestion des sessions de connexion par / bin / login.
- Modifications depuis OpenSSH 7.3:
- Sécurité:
- ssh-agent (1): refusera désormais de charger les modules PKCS # 11 à partir de chemins situés en dehors d'une liste blanche approuvée (configurable au moment de l'exécution). Les demandes de chargement de modules peuvent être transmises via le transfert d'agent et un attaquant peut tenter de charger un module PKCS # 11 hostile sur le canal de l'agent transféré: les modules PKCS # 11 sont des bibliothèques partagées, ce qui entraîne l'exécution de code sur le système. -agent si l'attaquant a le contrôle du socket-agent transféré (sur l'hôte exécutant le serveur sshd) et la possibilité d'écrire dans le système de fichiers de l'hôte exécutant ssh-agent (généralement l'hôte exécutant le client ssh). Rapporté par Jann Horn de Project Zero.
- sshd (8): Lorsque la séparation des privilèges est désactivée, les sockets Unix-domain transférés seront créés par sshd (8) avec les privilèges de 'root' au lieu de l'utilisateur authentifié. Cette version refuse le transfert de socket Unix-domain lorsque la séparation de privilèges est désactivée (la séparation de privilèges a été activée par défaut pendant 14 ans). Rapporté par Jann Horn de Project Zero.
- sshd (8): Évitez les fuites théoriques de matériel de clé privée hôte vers des processus enfants séparés par des privilèges via realloc () lors de la lecture des clés. Aucune fuite de ce type n'a été observée dans la pratique pour les clés de taille normale, pas plus qu'une fuite vers les processus enfants n'a pour effet d'exposer directement les éléments clés aux utilisateurs non privilégiés. Rapporté par Jann Horn de Project Zero.
- sshd (8): Le gestionnaire de mémoire partagée utilisé par la prise en charge de la compression de pré-authentification comportait des vérifications de limites qui pouvaient être élidées par certains compilateurs d'optimisation. En outre, ce gestionnaire de mémoire était incorrectement accessible lorsque la compression de pré-authentification a été désactivée. Cela pourrait potentiellement permettre des attaques contre le processus de surveillance privilégié à partir du processus de séparation de privilèges en sandbox (un compromis de ce dernier serait requis en premier). Cette version supprime la prise en charge de la compression de pré-authentification à partir de sshd (8). Rapporté par Guido Vranken à l'aide de l'outil d'identification d'optimisation instable Stack (http://css.csail.mit.edu/stack/)
- sshd (8): Correction d'une condition de déni de service où un attaquant qui envoie plusieurs messages KEXINIT peut consommer jusqu'à 128 Mo par connexion. Rapporté par Shi Lei de Gear Team, Qihoo 360.
- sshd (8): Valide les plages d'adresses pour les directives AllowUser et DenyUsers au moment du chargement de la configuration et refuse d'accepter celles qui sont invalides. Il était auparavant possible de spécifier des plages d'adresses CIDR non valides (par exemple, utilisateur@127.1.2.3/55) et celles-ci correspondraient toujours, ce qui pourrait aboutir à accorder un accès là où il n'était pas prévu. Rapporté par Laurence Parry.
- Nouvelles fonctionnalités:
- ssh (1): Ajouter un mode de multiplexage proxy à ssh (1) inspiré de la version de PuTTY par Simon Tatham. Cela permet à un client de multiplexage de communiquer avec le processus maître en utilisant un sous-ensemble du protocole de paquets et de canaux SSH sur un socket de domaine Unix, le processus principal agissant comme un proxy traduisant les ID de canal, etc. les systèmes dépourvus de passage de descripteur de fichier (utilisé par le code de multiplexage actuel) et potentiellement, en conjonction avec le transfert de socket Unix-domain, avec le processus maître client et de multiplexage sur des machines différentes. Le mode proxy de multiplexage peut être appelé en utilisant "ssh -O proxy ..."
- sshd (8): Ajoutez une option DisableForwarding sshd_config qui désactive X11, l'agent, TCP, le tunnel et le transfert de socket de domaine Unix, ainsi que tout ce que nous pourrions implémenter dans le futur. Comme l'indicateur 'restrict' authorized_keys, ceci est destiné à être un moyen simple et futur de restreindre un compte.
- sshd (8), ssh (1): supporte la "courbe25519-sha256". méthode d'échange de clé. Ceci est identique à la méthode actuellement supportée nommée & quot; curve25519-sha256@libssh.org & quot;.
- sshd (8): Améliorez la gestion de SIGHUP en vérifiant si sshd est déjà démonisé au démarrage et en ignorant l'appel à daemon (3) si c'est le cas. Cela garantit qu'un redémarrage SIGHUP de sshd (8) conservera le même ID de processus que l'exécution initiale. sshd (8) désolidarise maintenant le PidFile avant le redémarrage de SIGHUP et le recrée après un redémarrage réussi, plutôt que de laisser un fichier périmé en cas d'erreur de configuration. bz # 2641
- sshd (8): Autoriser les directives ClientAliveInterval et ClientAliveCountMax à apparaître dans les blocs de correspondance sshd_config.
- sshd (8): Ajoutez% -escapes à AuthorizedPrincipalsCommand pour qu'il corresponde à ceux pris en charge par AuthorizedKeysCommand (clé, type de clé, empreinte digitale, etc.) et un peu plus pour donner accès au contenu du certificat offert.
- Ajout de tests de régression pour les fonctions de correspondance de chaînes, de correspondance d'adresses et de nettoyage de chaîne.
- Amélioration du faisceau de fuzzer d'échange de clés.
- Corrections de bogues:
- ssh (1): Autoriser IdentityFile à charger et à utiliser avec succès les certificats qui n'ont pas de clé publique nue correspondante. bz # 2617 certificat id_rsa-cert.pub (et non id_rsa.pub).
- ssh (1): Corrige l'authentification par clé publique lorsque plusieurs authentifications sont utilisées et que publickey n'est pas seulement la première méthode essayée. bz # 2642
- régress: Autoriser les tests d'interopérabilité PuTTY à s'exécuter sans surveillance. bz # 2639
- ssh-agent (1), ssh (1): améliorez les rapports lorsque vous tentez de charger des clés à partir de jetons PKCS # 11 avec moins de messages de journal inutiles et plus de détails dans les messages de débogage. bz # 2610
- ssh (1): Lors de la suppression des connexions ControlMaster, ne polluez pas stderr lorsque LogLevel = quiet.
- sftp (1): Sur ^ Z, attendez que ssh (1) sous-jacent soit suspendu avant de suspendre sftp (1) pour que ssh (1) restaure correctement le mode terminal s'il est suspendu pendant une invite de mot de passe.
- ssh (1): Evitez busy-wait lorsque ssh (1) est suspendu pendant une invite de mot de passe.
- ssh (1), sshd (8): signale correctement les erreurs lors de l'envoi de messages d'information.
- sshd (8): corrige le crash de NULL-deref si sshd (8) a reçu un message NEWKEYS hors séquence.
- sshd (8): Liste correcte des algorithmes de signature supportés dans l'extension server-sig-algs. bz # 2547
- sshd (8): correction de l'envoi du message ext_info si privsep est désactivé.
- sshd (8): applique plus strictement les ordres de contrôle de séparation de privilèges attendus utilisés pour l'authentification et ne les autorise que lorsque leurs méthodes d'authentification respectives sont activées dans la configuration
- sshd (8): Correction d'un optlen non initialisé dans l'appel getsockopt (); inoffensif sur Unix / BSD mais potentiellement crashy sur Cygwin.
- Correction de faux rapports positifs provoqués par explicit_bzero (3) n'étant pas reconnu comme initialiseur de mémoire lorsqu'il est compilé avec -fsanitize-memory. sshd_config (5): Utilisez 2001: db8 :: / 32, le sous-réseau IPv6 officiel pour les exemples de configuration.
- Portabilité:
- Sur les environnements configurés avec les locales turques, revenez aux paramètres régionaux C / POSIX pour éviter les erreurs dans l'analyse de la configuration provoquée par le traitement unique des lettres 'i' et 'I' par cet environnement local. bz # 2643
- sftp-server (8), ssh-agent (1): Refuser ptrace sur OS X en utilisant ptrace (PT_DENY_ATTACH, ..)
- ssh (1), sshd (8): Cryptage AES-CTR sur un ancien OpenSSL (~ 0.9.8).
- Corrige la compilation pour libcrypto compilé sans le support de RIPEMD160.
- contrib: Ajoutez un gnome-ssh-askpass3 avec le support de GTK + 3. bz # 2640 sshd (8): Améliorez le resynchronisation PRNG lors de la séparation des privilèges et forcez libcrypto à obtenir une graine de haute qualité avant chroot ou sandboxing.
- Tous: Teste explicitement les strnvis brisés. NetBSD a ajouté un strnvis et l'a malheureusement rendu incompatible avec celui existant dans OpenBSD et libbsd de Linux (le premier ayant existé depuis plus de dix ans). Essayez de détecter ce désordre et supposez la seule option sûre si nous sommes en train de compiler.
Quoi de neuf dans la version:
- Modifications potentiellement incompatibles:
- Cette version inclut un certain nombre de modifications susceptibles d'affecter les configurations existantes:
- Cette version supprime le support du serveur pour le protocole SSH v.1.
- ssh (1): Supprime 3des-cbc de la proposition par défaut du client. Les chiffrements par blocs de 64 bits ne sont pas sûrs en 2016 et nous ne voulons pas attendre que les attaques comme SWEET32 soient étendues à SSH. Comme 3des-cbc était le seul chiffrement obligatoire des RFC SSH, cela peut causer des problèmes de connexion aux périphériques plus anciens en utilisant la configuration par défaut, mais il est fort probable que ces périphériques aient déjà besoin d'une configuration explicite. sshd (8): supprime le support pour la compression de pré-authentification. Faire de la compression au début du protocole semblait probablement raisonnable dans les années 1990, mais aujourd'hui c'est clairement une mauvaise idée à la fois en termes de cryptographie (cf attaques multiples de compression d'Oracle en TLS) et de surface d'attaque. La prise en charge de la compression pré-autorisation a été désactivée par défaut pour & gt; 10 ans. Le soutien reste dans le client. ssh-agent refusera de charger les modules PKCS # 11 en dehors d'une liste blanche de chemins approuvés par défaut. La liste blanche des chemins peut être spécifiée au moment de l'exécution.
- sshd (8): Lorsqu'une commande forcée apparaît à la fois dans un certificat et dans une commande / clé = restriction autorisée, sshd refuse maintenant d'accepter le certificat à moins qu'ils ne soient identiques. Le comportement précédent (documenté) de l'écrasement de la commande forcée par le certificat pourrait être un peu confus et sujet aux erreurs. sshd (8): supprime la directive de configuration UseLogin et prend en charge la gestion des sessions de connexion par / bin / login.
- Modifications depuis OpenSSH 7.3:
- Sécurité:
- ssh-agent (1): refusera désormais de charger les modules PKCS # 11 à partir de chemins situés en dehors d'une liste blanche approuvée (configurable au moment de l'exécution). Les demandes de chargement de modules peuvent être transmises via le transfert d'agent et un attaquant peut tenter de charger un module PKCS # 11 hostile sur le canal de l'agent transféré: les modules PKCS # 11 sont des bibliothèques partagées, ce qui entraîne l'exécution de code sur le système. -agent si l'attaquant a le contrôle du socket-agent transféré (sur l'hôte exécutant le serveur sshd) et la possibilité d'écrire dans le système de fichiers de l'hôte exécutant ssh-agent (généralement l'hôte exécutant le client ssh). Rapporté par Jann Horn de Project Zero.
- sshd (8): Lorsque la séparation des privilèges est désactivée, les sockets Unix-domain transférés seront créés par sshd (8) avec les privilèges de 'root' au lieu de l'utilisateur authentifié. Cette version refuse le transfert de socket Unix-domain lorsque la séparation de privilèges est désactivée (la séparation de privilèges a été activée par défaut pendant 14 ans). Rapporté par Jann Horn de Project Zero.
- sshd (8): Évitez les fuites théoriques de matériel de clé privée hôte vers des processus enfants séparés par des privilèges via realloc () lors de la lecture des clés. Aucune fuite de ce type n'a été observée dans la pratique pour les clés de taille normale, pas plus qu'une fuite vers les processus enfants n'a pour effet d'exposer directement les éléments clés aux utilisateurs non privilégiés. Rapporté par Jann Horn de Project Zero.
- sshd (8): Le gestionnaire de mémoire partagée utilisé par la prise en charge de la compression de pré-authentification comportait des vérifications de limites qui pouvaient être élidées par certains compilateurs d'optimisation. En outre, ce gestionnaire de mémoire était incorrectement accessible lorsque la compression de pré-authentification a été désactivée. Cela pourrait potentiellement permettre des attaques contre le processus de surveillance privilégié à partir du processus de séparation de privilèges en sandbox (un compromis de ce dernier serait requis en premier). Cette version supprime la prise en charge de la compression de pré-authentification à partir de sshd (8). Rapporté par Guido Vranken à l'aide de l'outil d'identification d'optimisation instable Stack (http://css.csail.mit.edu/stack/)
- sshd (8): Correction d'une condition de déni de service où un attaquant qui envoie plusieurs messages KEXINIT peut consommer jusqu'à 128 Mo par connexion. Rapporté par Shi Lei de Gear Team, Qihoo 360.
- sshd (8): Valide les plages d'adresses pour les directives AllowUser et DenyUsers au moment du chargement de la configuration et refuse d'accepter celles qui sont invalides. Il était auparavant possible de spécifier des plages d'adresses CIDR non valides (par exemple, utilisateur@127.1.2.3/55) et celles-ci correspondraient toujours, ce qui pourrait aboutir à accorder un accès là où il n'était pas prévu. Rapporté par Laurence Parry.
- Nouvelles fonctionnalités:
- ssh (1): Ajouter un mode de multiplexage proxy à ssh (1) inspiré de la version de PuTTY par Simon Tatham. Cela permet à un client de multiplexage de communiquer avec le processus maître en utilisant un sous-ensemble du protocole de paquets et de canaux SSH sur un socket de domaine Unix, le processus principal agissant comme un proxy traduisant les ID de canal, etc. les systèmes dépourvus de passage de descripteur de fichier (utilisé par le code de multiplexage actuel) et potentiellement, en conjonction avec le transfert de socket Unix-domain, avec le processus maître client et de multiplexage sur des machines différentes. Le mode proxy de multiplexage peut être appelé en utilisant "ssh -O proxy ..."
- sshd (8): Ajoutez une option DisableForwarding sshd_config qui désactive X11, l'agent, TCP, le tunnel et le transfert de socket de domaine Unix, ainsi que tout ce que nous pourrions implémenter dans le futur. Comme l'indicateur 'restrict' authorized_keys, ceci est destiné à être un moyen simple et futur de restreindre un compte.
- sshd (8), ssh (1): supporte la "courbe25519-sha256". méthode d'échange de clé. Ceci est identique à la méthode actuellement supportée nommée & quot; curve25519-sha256@libssh.org & quot;.
- sshd (8): Améliorez la gestion de SIGHUP en vérifiant si sshd est déjà démonisé au démarrage et en ignorant l'appel à daemon (3) si c'est le cas. Cela garantit qu'un redémarrage SIGHUP de sshd (8) conservera le même ID de processus que l'exécution initiale. sshd (8) désolidarise maintenant le PidFile avant le redémarrage de SIGHUP et le recrée après un redémarrage réussi, plutôt que de laisser un fichier périmé en cas d'erreur de configuration. bz # 2641
- sshd (8): Autoriser les directives ClientAliveInterval et ClientAliveCountMax à apparaître dans les blocs de correspondance sshd_config.
- sshd (8): Ajoutez% -escapes à AuthorizedPrincipalsCommand pour qu'il corresponde à ceux pris en charge par AuthorizedKeysCommand (clé, type de clé, empreinte digitale, etc.) et un peu plus pour donner accès au contenu du certificat offert.
- Ajout de tests de régression pour les fonctions de correspondance de chaînes, de correspondance d'adresses et de nettoyage de chaîne.
- Amélioration du faisceau de fuzzer d'échange de clés.
- Corrections de bogues:
- ssh (1): Autoriser IdentityFile à charger et à utiliser avec succès les certificats qui n'ont pas de clé publique nue correspondante. bz # 2617 certificat id_rsa-cert.pub (et non id_rsa.pub).
- ssh (1): Corrige l'authentification par clé publique lorsque plusieurs authentifications sont utilisées et que publickey n'est pas seulement la première méthode essayée. bz # 2642
- régress: Autoriser les tests d'interopérabilité PuTTY à s'exécuter sans surveillance. bz # 2639
- ssh-agent (1), ssh (1): améliorez les rapports lorsque vous tentez de charger des clés à partir de jetons PKCS # 11 avec moins de messages de journal inutiles et plus de détails dans les messages de débogage. bz # 2610
- ssh (1): Lors de la suppression des connexions ControlMaster, ne polluez pas stderr lorsque LogLevel = quiet.
- sftp (1): Sur ^ Z, attendez que ssh (1) sous-jacent soit suspendu avant de suspendre sftp (1) pour que ssh (1) restaure correctement le mode terminal s'il est suspendu pendant une invite de mot de passe.
- ssh (1): Evitez busy-wait lorsque ssh (1) est suspendu pendant une invite de mot de passe.
- ssh (1), sshd (8): signale correctement les erreurs lors de l'envoi de messages d'information.
- sshd (8): corrige le crash de NULL-deref si sshd (8) a reçu un message NEWKEYS hors séquence.
- sshd (8): Liste correcte des algorithmes de signature supportés dans l'extension server-sig-algs. bz # 2547
- sshd (8): correction de l'envoi du message ext_info si privsep est désactivé.
- sshd (8): applique plus strictement les ordres de contrôle de séparation de privilèges attendus utilisés pour l'authentification et ne les autorise que lorsque leurs méthodes d'authentification respectives sont activées dans la configuration
- sshd (8): Correction d'un optlen non initialisé dans l'appel getsockopt (); inoffensif sur Unix / BSD mais potentiellement crashy sur Cygwin.
- Correction de faux rapports positifs provoqués par explicit_bzero (3) n'étant pas reconnu comme initialiseur de mémoire lorsqu'il est compilé avec -fsanitize-memory. sshd_config (5): Utilisez 2001: db8 :: / 32, le sous-réseau IPv6 officiel pour les exemples de configuration.
- Portabilité:
- Sur les environnements configurés avec les locales turques, revenez aux paramètres régionaux C / POSIX pour éviter les erreurs dans l'analyse de la configuration provoquée par le traitement unique des lettres 'i' et 'I' par cet environnement local. bz # 2643
- sftp-server (8), ssh-agent (1): Refuser ptrace sur OS X en utilisant ptrace (PT_DENY_ATTACH, ..)
- ssh (1), sshd (8): Cryptage AES-CTR sur un ancien OpenSSL (~ 0.9.8).
- Corrige la compilation pour libcrypto compilé sans le support de RIPEMD160.
- contrib: Ajoutez un gnome-ssh-askpass3 avec le support de GTK + 3. bz # 2640 sshd (8): Améliorez le resynchronisation PRNG lors de la séparation des privilèges et forcez libcrypto à obtenir une graine de haute qualité avant chroot ou sandboxing.
- Tous: Teste explicitement les strnvis brisés. NetBSD a ajouté un strnvis et l'a malheureusement rendu incompatible avec celui existant dans OpenBSD et libbsd de Linux (le premier ayant existé depuis plus de dix ans). Essayez de détecter ce désordre et supposez la seule option sûre si nous sommes en train de compiler.
Nouveautés dans la version 7.4:
- Modifications potentiellement incompatibles:
- Cette version inclut un certain nombre de modifications susceptibles d'affecter les configurations existantes:
- Cette version supprime le support du serveur pour le protocole SSH v.1.
- ssh (1): Supprime 3des-cbc de la proposition par défaut du client. Les chiffrements par blocs de 64 bits ne sont pas sûrs en 2016 et nous ne voulons pas attendre que les attaques comme SWEET32 soient étendues à SSH. Comme 3des-cbc était le seul chiffrement obligatoire des RFC SSH, cela peut causer des problèmes de connexion aux périphériques plus anciens en utilisant la configuration par défaut, mais il est fort probable que ces périphériques aient déjà besoin d'une configuration explicite. sshd (8): supprime le support pour la compression de pré-authentification. Faire de la compression au début du protocole semblait probablement raisonnable dans les années 1990, mais aujourd'hui c'est clairement une mauvaise idée à la fois en termes de cryptographie (cf attaques multiples de compression d'Oracle en TLS) et de surface d'attaque. La prise en charge de la compression pré-autorisation a été désactivée par défaut pour & gt; 10 ans. Le soutien reste dans le client. ssh-agent refusera de charger les modules PKCS # 11 en dehors d'une liste blanche de chemins approuvés par défaut. La liste blanche des chemins peut être spécifiée lors de l'exécution.
- sshd (8): Lorsqu'une commande forcée apparaît à la fois dans un certificat et dans une commande / clé = restriction autorisée, sshd refuse maintenant d'accepter le certificat à moins qu'ils ne soient identiques. Le comportement précédent (documenté) de l'écrasement de la commande forcée par le certificat pourrait être un peu confus et sujet aux erreurs. sshd (8): supprime la directive de configuration UseLogin et prend en charge la gestion des sessions de connexion par / bin / login.
- Modifications depuis OpenSSH 7.3:
- Sécurité:
- ssh-agent (1): refusera désormais de charger les modules PKCS # 11 à partir de chemins situés en dehors d'une liste blanche approuvée (configurable au moment de l'exécution). Les demandes de chargement de modules peuvent être transmises via le transfert d'agent et un attaquant peut tenter de charger un module PKCS # 11 hostile sur le canal de l'agent transféré: les modules PKCS # 11 sont des bibliothèques partagées, ce qui entraîne l'exécution de code sur le système. -agent si l'attaquant a le contrôle du socket-agent transféré (sur l'hôte exécutant le serveur sshd) et la possibilité d'écrire dans le système de fichiers de l'hôte exécutant ssh-agent (généralement l'hôte exécutant le client ssh). Rapporté par Jann Horn de Project Zero.
- sshd (8): Lorsque la séparation des privilèges est désactivée, les sockets Unix-domain transférés seront créés par sshd (8) avec les privilèges de 'root' au lieu de l'utilisateur authentifié. Cette version refuse le transfert de socket Unix-domain lorsque la séparation de privilèges est désactivée (la séparation de privilèges a été activée par défaut pendant 14 ans). Rapporté par Jann Horn de Project Zero.
- sshd (8): Évitez les fuites théoriques de matériel de clé privée hôte vers des processus enfants séparés par des privilèges via realloc () lors de la lecture des clés. Aucune fuite de ce type n'a été observée dans la pratique pour les clés de taille normale, pas plus qu'une fuite vers les processus enfants n'a pour effet d'exposer directement les éléments clés aux utilisateurs non privilégiés. Rapporté par Jann Horn de Project Zero.
- sshd (8): Le gestionnaire de mémoire partagée utilisé par la prise en charge de la compression de pré-authentification comportait des vérifications de limites qui pouvaient être élidées par certains compilateurs d'optimisation. En outre, ce gestionnaire de mémoire était incorrectement accessible lorsque la compression de pré-authentification a été désactivée. Cela pourrait potentiellement permettre des attaques contre le processus de surveillance privilégié à partir du processus de séparation de privilèges en sandbox (un compromis de ce dernier serait requis en premier). Cette version supprime la prise en charge de la compression de pré-authentification à partir de sshd (8). Rapporté par Guido Vranken à l'aide de l'outil d'identification d'optimisation instable Stack (http://css.csail.mit.edu/stack/)
- sshd (8): Correction d'une condition de déni de service où un attaquant qui envoie plusieurs messages KEXINIT peut consommer jusqu'à 128 Mo par connexion. Rapporté par Shi Lei de Gear Team, Qihoo 360.
- sshd (8): Valide les plages d'adresses pour les directives AllowUser et DenyUsers au moment du chargement de la configuration et refuse d'accepter celles qui sont invalides. Il était auparavant possible de spécifier des plages d'adresses CIDR non valides (par exemple, utilisateur@127.1.2.3/55) et celles-ci correspondraient toujours, ce qui pourrait aboutir à accorder un accès là où il n'était pas prévu. Rapporté par Laurence Parry.
- Nouvelles fonctionnalités:
- ssh (1): Ajouter un mode de multiplexage proxy à ssh (1) inspiré de la version de PuTTY par Simon Tatham. Cela permet à un client de multiplexage de communiquer avec le processus maître en utilisant un sous-ensemble du protocole de paquets et de canaux SSH sur un socket de domaine Unix, le processus principal agissant comme un proxy traduisant les ID de canal, etc. les systèmes dépourvus de passage de descripteur de fichier (utilisé par le code de multiplexage actuel) et potentiellement, en conjonction avec le transfert de socket Unix-domain, avec le processus maître client et de multiplexage sur des machines différentes. Le mode proxy de multiplexage peut être appelé en utilisant "ssh -O proxy ..."
- sshd (8): Ajoutez une option DisableForwarding sshd_config qui désactive X11, l'agent, TCP, le tunnel et le transfert de socket de domaine Unix, ainsi que tout ce que nous pourrions implémenter dans le futur. Comme l'indicateur 'restrict' authorized_keys, ceci est destiné à être un moyen simple et futur de restreindre un compte.
- sshd (8), ssh (1): supporte la méthode d'échange de clés "curve25519-sha256". Ceci est identique à la méthode actuellement supportée "curve25519-sha256@libssh.org".
- sshd (8): Améliorez la gestion de SIGHUP en vérifiant si sshd est déjà démonisé au démarrage et en ignorant l'appel à daemon (3) si c'est le cas. Cela garantit qu'un redémarrage SIGHUP de sshd (8) conservera le même ID de processus que l'exécution initiale. sshd (8) désolidarise maintenant le PidFile avant le redémarrage de SIGHUP et le recrée après un redémarrage réussi, plutôt que de laisser un fichier périmé en cas d'erreur de configuration. bz # 2641
- sshd (8): Autoriser les directives ClientAliveInterval et ClientAliveCountMax à apparaître dans les blocs de correspondance sshd_config.
- sshd (8): Ajoutez% -escapes à AuthorizedPrincipalsCommand pour qu'il corresponde à ceux pris en charge par AuthorizedKeysCommand (clé, type de clé, empreinte digitale, etc.) et un peu plus pour donner accès au contenu du certificat offert.
- Ajout de tests de régression pour les fonctions de correspondance de chaînes, de correspondance d'adresses et de nettoyage de chaîne.
- Amélioration du faisceau de fuzzer d'échange de clés.
- Corrections de bogues:
- ssh (1): Autoriser IdentityFile à charger et à utiliser avec succès les certificats qui n'ont pas de clé publique nue correspondante. bz # 2617 certificat id_rsa-cert.pub (et non id_rsa.pub).
- ssh (1): Corrige l'authentification par clé publique lorsque plusieurs authentifications sont utilisées et que publickey n'est pas seulement la première méthode essayée. bz # 2642
- régress: Autoriser les tests d'interopérabilité PuTTY à s'exécuter sans surveillance. bz # 2639
- ssh-agent (1), ssh (1): améliorez les rapports lorsque vous tentez de charger des clés à partir de jetons PKCS # 11 avec moins de messages de journal inutiles et plus de détails dans les messages de débogage. bz # 2610
- ssh (1): Lors de la suppression des connexions ControlMaster, ne polluez pas stderr lorsque LogLevel = quiet.
- sftp (1): Sur ^ Z, attendez que ssh (1) sous-jacent soit suspendu avant de suspendre sftp (1) pour que ssh (1) restaure correctement le mode terminal s'il est suspendu pendant une invite de mot de passe.
- ssh (1): Evitez busy-wait lorsque ssh (1) est suspendu pendant une invite de mot de passe.
- ssh (1), sshd (8): signale correctement les erreurs lors de l'envoi de messages d'information.
- sshd (8): corrige le crash de NULL-deref si sshd (8) a reçu un message NEWKEYS hors séquence.
- sshd (8): Liste correcte des algorithmes de signature supportés dans l'extension server-sig-algs. bz # 2547
- sshd (8): correction de l'envoi du message ext_info si privsep est désactivé.
- sshd (8): applique plus strictement les ordres de contrôle de séparation de privilèges attendus utilisés pour l'authentification et ne les autorise que lorsque leurs méthodes d'authentification respectives sont activées dans la configuration
- sshd (8): Correction d'un optlen non initialisé dans l'appel getsockopt (); inoffensif sur Unix / BSD mais potentiellement crashy sur Cygwin.
- Correction de faux rapports positifs provoqués par explicit_bzero (3) n'étant pas reconnu comme initialiseur de mémoire lorsqu'il est compilé avec -fsanitize-memory. sshd_config (5): Utilisez 2001: db8 :: / 32, le sous-réseau IPv6 officiel pour les exemples de configuration.
- Portabilité:
- Sur les environnements configurés avec les locales turques, revenez aux paramètres régionaux C / POSIX pour éviter les erreurs dans l'analyse de la configuration provoquée par le traitement unique des lettres 'i' et 'I' par cet environnement local. bz # 2643
- sftp-server (8), ssh-agent (1): Refuser ptrace sur OS X en utilisant ptrace (PT_DENY_ATTACH, ..)
- ssh (1), sshd (8): Cryptage AES-CTR sur un ancien OpenSSL (~ 0.9.8).
- Corrige la compilation pour libcrypto compilé sans le support de RIPEMD160.
- contrib: Ajoutez un gnome-ssh-askpass3 avec le support de GTK + 3. bz # 2640 sshd (8): Améliorez le resynchronisation PRNG lors de la séparation des privilèges et forcez libcrypto à obtenir une graine de haute qualité avant chroot ou sandboxing.
- Tout: Teste explicitement les strnvis brisés. NetBSD a ajouté un strnvis et l'a malheureusement rendu incompatible avec celui existant dans OpenBSD et libbsd de Linux (le premier ayant existé depuis plus de dix ans). Essayez de détecter ce désordre et supposez la seule option sûre si nous sommes en train de compiler.
Nouveautés dans la version 7.3:
- Sécurité:
- sshd (8): Atténuez une attaque par déni de service potentiel contre la fonction crypt (3) du système via sshd (8). Un attaquant pourrait envoyer des mots de passe très longs qui provoqueraient une utilisation excessive du processeur dans crypt (3). sshd (8) refuse maintenant d'accepter les demandes d'authentification par mot de passe d'une longueur supérieure à 1024 caractères. Indépendamment rapporté par Tomas Kuthan (Oracle), Andres Rojas et Javier Nieto.
- sshd (8): Atténuez les différences temporelles dans l'authentification par mot de passe qui pourraient être utilisées pour distinguer les noms de compte valides des mots de passe longs et des algorithmes de hachage de mots de passe particuliers utilisés sur le serveur. CVE-2016-6210, signalé par EddieEzra.Harari à verint.com
- ssh (1), sshd (8): Correction d'une faiblesse de timing observable dans les contre-mesures d'oracle de padding CBC. Rapporté par Jean Paul Degabriele, Kenny Paterson, Torben Hansen et Martin Albrecht. Notez que les chiffrements CBC sont désactivés par défaut et uniquement inclus pour la compatibilité héritée.
- ssh (1), sshd (8): Améliorer l'ordre de fonctionnement de la vérification MAC pour les algorithmes MAC de transport Encrypt-then-MAC (EtM) afin de vérifier le MAC avant de déchiffrer tout texte chiffré. Cela élimine la possibilité de différer les fuites de faits concernant le texte en clair, bien qu'aucune fuite de ce type n'ait été observée. Rapporté par Jean Paul Degabriele, Kenny Paterson, Torben Hansen et Martin Albrecht. sshd (8): (portable uniquement) Ignore les variables d'environnement PAM lorsque UseLogin = yes. Si PAM est configuré pour lire les variables d'environnement spécifiées par l'utilisateur et UseLogin = yes dans sshd_config, un utilisateur local hostile peut attaquer / bin / login via LD_PRELOAD ou des variables d'environnement similaires définies via PAM. CVE-2015-8325, trouvé par Shayan Sadigh.
- Nouvelles fonctionnalités:
- ssh (1): Ajoutez une option ProxyJump et l'indicateur de ligne de commande -J correspondant pour permettre l'indirection simplifiée via un ou plusieurs bastions SSH ou "sauter des hôtes".
- ssh (1): Ajoutez une option IdentityAgent pour autoriser la spécification de sockets d'agent spécifiques au lieu d'en accepter une dans l'environnement. ssh (1): Autoriser ExitOnForwardFailure et ClearAllForwardings à être éventuellement substitués lors de l'utilisation de ssh -W. bz # 2577
- ssh (1), sshd (8): Implémente le support du mode terminal IUTF8 selon draft-sgtatham-secsh-iutf8-00. ssh (1), sshd (8): ajout de la prise en charge de groupes Diffie-Hellman 2K, 4K et 8K supplémentaires fixes à partir de draft-ietf-curdle-ssh-kex-sha2-03.
- ssh-keygen (1), ssh (1), sshd (8): supporte les signatures RSA SHA256 et SHA512 dans les certificats; ssh (1): Ajoutez une directive Include pour les fichiers ssh_config (5).
- ssh (1): Autorise les caractères UTF-8 dans les bannières de pré-authentification envoyées par le serveur. bz # 2058
- Corrections de bogues:
- ssh (1), sshd (8): Réduit le niveau syslog de certains événements de protocole relativement communs à partir de LOG_CRIT. bz # 2585
- sshd (8): Refuser AuthenticationMethods = "" dans les configurations et accepter AuthenticationMethods = tout pour le comportement par défaut de ne pas avoir besoin d'une authentification multiple. bz # 2398
- sshd (8): Supprimez la "TENTATIVE DE RUPTURE POSSIBLE!" obsolète et trompeuse! message lorsque DNS avant et inverse ne correspondent pas. bz # 2585
- ssh (1): Fermer le processus d'arrière-plan du processus ControlPersist, sauf en mode débogage ou lors de la connexion à syslog. bz # 1988
- misc: Faire une description du PROTOCOLE pour les messages ouverts du canal direct-streamlocal@openssh.com qui correspondent au code déployé. bz # 2529
- ssh (1): dédupliquez les entrées LocalForward et RemoteForward pour corriger les échecs lorsque les options ExitOnForwardFailure et Hostname sont activées. bz # 2562
- sshd (8): supprime le repli des modules sur le fichier "primes" obsolète qui était obsolète en 2001. bz # 2559.
- sshd_config (5): Description correcte de UseDNS: elle affecte le traitement du nom d'hôte ssh pour authorized_keys, not known_hosts; bz # 2554 ssh (1): Correction de l'authentification à l'aide de clés de certificat solitaires dans un agent sans clé privée correspondante sur le système de fichiers. bz # 2550
- sshd (8): Envoie des pings ClientAliveInterval lorsqu'une RekeyLimit basée sur le temps est définie; auparavant, les paquets keepalive n'étaient pas envoyés. bz # 2252
Quoi de neuf dans la version 7.2:
- Sécurité:
- ssh (1), sshd (8): supprime le code d'itinérance inachevé et inutilisé (était déjà désactivé de force dans OpenSSH 7.1p2).
- ssh (1): élimine le repli du transfert X11 non approuvé vers le transfert de confiance lorsque le serveur X désactive l'extension SECURITY.
- ssh (1), sshd (8): augmente la taille de module minimum supportée par diffie-hellman-group-exchange à 2048 bits.
- sshd (8): le pré-author sandboxing est maintenant activé par défaut (les versions précédentes l'ont activé pour les nouvelles installations via sshd_config).
- Nouvelles fonctionnalités:
- all: ajoute le support des signatures RSA en utilisant des algorithmes de hachage SHA-256/512 basés sur draft-rsa-dsa-sha2-256-03.txt et draft-ssh-ext-info-04.txt.
- ssh (1): Ajouter une option client AddKeysToAgent qui peut être définie sur 'oui', 'non', 'demander' ou 'confirmer', et par défaut sur 'non'. Lorsqu'elle est activée, une clé privée utilisée lors de l'authentification sera ajoutée à ssh-agent si elle est en cours d'exécution (avec la confirmation activée si elle est définie sur 'confirmation').
- sshd (8): ajoute une nouvelle option authorized_keys "restrict" qui inclut toutes les restrictions de clés actuelles et futures (no - * - forwarding, etc.). Ajoutez également des versions permissives des restrictions existantes, par ex. "no-pty" - & gt; "pty". Cela simplifie la tâche de configuration des clés restreintes et garantit qu'elles sont limitées au maximum, quelles que soient les autorisations que nous pourrions implémenter dans le futur. ssh (1): ajoute l'option ssh_config CertificateFile pour lister explicitement les certificats. bz # 2436
- ssh-keygen (1): permet à ssh-keygen de modifier le commentaire clé pour tous les formats supportés.
- ssh-keygen (1): permet de prendre des empreintes digitales à partir d'une entrée standard, par ex. "ssh-keygen -lf -"
- ssh-keygen (1): autorise l'empreinte digitale de plusieurs clés publiques dans un fichier, par ex. "ssh-keygen -lf ~ / .ssh / authorized_keys" bz # 1319
- sshd (8): supporte "none" comme argument pour sshd_config Foreground et ChrootDirectory. Utile à l'intérieur des blocs Match pour remplacer une valeur par défaut globale. bz # 2486
- ssh-keygen (1): supporte plusieurs certificats (un par ligne) et lit depuis l'entrée standard (en utilisant "-f -") pour "ssh-keygen -L" ssh-keyscan (1): ajoute "ssh- keyscan -c ... "pour permettre l'extraction de certificats au lieu de simples.
- ssh (1): mieux gérer les FQDN ancrés (par exemple 'cvs.openbsd.org.') dans la canonicalisation du nom d'hôte - les traiter comme déjà canoniques et supprimer le '.' avant de faire correspondre ssh_config.
- Corrections de bogues:
- sftp (1): les répertoires de destination existants ne devraient pas mettre fin aux téléchargements récursifs (régression dans openssh 6.8) bz # 2528
- ssh (1), sshd (8): renvoie correctement les réponses SSH2_MSG_UNIMPLEMENTED aux messages inattendus lors de l'échange de clés. bz # 2949
- ssh (1): refuser les tentatives de définition de ConnectionAttempts = 0, ce qui n'a aucun sens et obligerait ssh à imprimer une variable de pile non initialisée. bz # 2500
- ssh (1): correction d'erreurs lors d'une tentative de connexion à des adresses IPv6 avec la canonisation de nom d'hôte activée.
- sshd_config (5): liste quelques autres options utilisables dans les blocs Match. bz # 2489
- sshd (8): corrige "PubkeyAcceptedKeyTypes + ..." dans un bloc Match. ssh (1): développez les caractères tilde dans les noms de fichiers transmis aux options -i avant de vérifier si le fichier d'identité existe ou non. Évite la confusion pour les cas où le shell ne se développe pas (par exemple "-i ~ / fichier" vs "-i ~ / fichier"). bz # 2481
- ssh (1): ne pas ajouter "exec" à la commande shell exécutée par "Match exec" dans un fichier de configuration, ce qui pourrait provoquer l'échec de certaines commandes dans certains environnements. bz # 2471
- ssh-keyscan (1): correction de la sortie pour plusieurs hôtes / addrs sur une ligne lorsque le hachage de l'hôte est en cours ou lorsqu'un port non standard est utilisé bz # 2479
- sshd (8): ignore le message "Impossible d'accéder au répertoire de base" lorsque ChrootDirectory est actif. bz # 2485
- ssh (1): incluez PubkeyAcceptedKeyTypes dans ssh -G config dump. sshd (8): évitez de modifier les indicateurs de périphérique TunnelForwarding s'ils sont déjà nécessaires; permet d'utiliser la mise en réseau tun / tap en tant qu'utilisateur non-root si les autorisations de périphérique et les indicateurs d'interface sont pré-établis
- ssh (1), sshd (8): RekeyLimits peut être dépassé d'un paquet. bz # 2521
- ssh (1): correction de l'échec du maître de multiplexage pour remarquer l'exit client.
- ssh (1), ssh-agent (1): évitez fatal () pour les jetons PKCS11 qui présentent des ID de clé vides. bz # 1773
- sshd (8): évite printf de l'argument NULL. bz # 2535
- ssh (1), sshd (8): permet RekeyLimits plus grand que 4GB. bz # 2521
- ssh-keygen (1): sshd (8): correction de plusieurs bogues dans le support de la signature KRL (inutilisée).
- ssh (1), sshd (8): corrige les connexions avec les homologues qui utilisent la fonction d'échange de clés du protocole. bz # 2515
- sshd (8): inclure le numéro de port distant dans les messages du journal. bz # 2503
- ssh (1): n'essayez pas de charger la clé privée SSHv1 lors de la compilation sans support SSHv1. bz # 2505
- ssh-agent (1), ssh (1): correction des messages d'erreur incorrects lors du chargement et de la signature des erreurs. bz # 2507
- ssh-keygen (1): ne pas laisser de fichiers temporaires vides lors de la modification de fichiers known_hosts lorsque known_hosts n'existe pas.
- sshd (8): format de paquet correct pour les réponses tcpip-forward pour les requêtes n'allouant pas un port bz # 2509
- ssh (1), sshd (8): correction d'un blocage possible sur une sortie fermée. bz # 2469 ssh (1): développez% i dans ControlPath à UID. bz # 2449
- ssh (1), sshd (8): corrige le type de retour de openssh_RSA_verify. bz # 2460
- ssh (1), sshd (8): corrige certaines fuites de mémoire d'analyse d'option. bz # 2182
- ssh (1): ajoute une sortie de débogage avant la résolution DNS; C'est un endroit où ssh pouvait auparavant s'immobiliser silencieusement dans le cas de serveurs DNS qui ne répondent pas. bz # 2433 ssh (1): supprime les newline parasites dans l'hostkey visuel. bz # 2686
- ssh (1): correction de l'impression (ssh -G ...) de HostKeyAlgorithms = + ...
- ssh (1): corrige l'expansion de HostkeyAlgorithms = + ...
- Documentation:
- ssh_config (5), sshd_config (5): mise à jour des listes d'algorithmes par défaut pour correspondre à la réalité actuelle. bz # 2527
- ssh (1): mentionne les options de requête -Q key-plain et -Q key-cert. bz # 2455
- sshd_config (8): décrivez plus clairement ce que fait AuthorizedKeysFile = none.
- ssh_config (5): meilleur document ExitOnForwardFailure. bz # 2444
- sshd (5): mentionne les groupes internes de repli DH-GEX en manuel. bz # 2302
- sshd_config (5): meilleure description pour l'option MaxSessions. bz # 2531
- Portabilité:
- ssh (1), sftp-server (8), ssh-agent (1), sshd (8): Prend en charge les privilèges affinés Illumos / Solaris. Y compris un sandbox pré-auth privsep et plusieurs émulations de gage (). bz # 2511
- Rénover redhat / openssh.spec, en supprimant les options et la syntaxe obsolètes.
- configure: autorise --without-ssl-engine avec --without-openssl
- sshd (8): répare plusieurs authentifications en utilisant S / Key. bz # 2502
- sshd (8): relit depuis libcrypto RAND_avant de supprimer les privilèges. Evite les violations de sandbox avec BoringSSL.
- Correction d'une collision de noms avec les fonctions glob (3) fournies par le système. bz # 2463
- Adapter Makefile pour utiliser ssh-keygen -A lors de la génération des clés de l'hôte. bz # 2459
- configure: valeur par défaut correcte pour --with-ssh1 bz # 2457
- configure: meilleure détection du symbole _res bz # 2259
- supporte getrandom () syscall sous Linux
Quoi de neuf dans la version 7.1:
- Sécurité:
- sshd (8): OpenSSH 7.0 contenait une erreur logique dans PermitRootLogin = prohibit-password / without-password qui pourrait, selon la configuration de la compilation, permettre l'authentification par mot de passe root tout en empêchant d'autres formes d'authentification. Ce problème a été signalé par Mantas Mikulenas.
- Corrections de bogues:
- ssh (1), sshd (8): ajoutez des solutions de contournement de compatibilité pour FuTTY
- ssh (1), sshd (8): affine les solutions de contournement de compatibilité pour WinSCP
- Correction d'un certain nombre de fautes de mémoire (double-libre, libre de mémoire non initialisée, etc.) dans ssh (1) et ssh-keygen (1). Rapporté par Mateusz Kocielski.
Commentaires non trouvées