Después de cuatro meses de desarrollo Lanzamiento de OpenSSH 8.4, una implementación abierta de cliente y servidor para trabajar con los protocolos SSH 2.0 y SFTP.
Principales cambios:
- Cambios relacionados con la seguridad:
- En ssh-agent, al usar claves FIDO no creadas para la autenticación a través de SSH (el identificador de la clave no comienza con la cadena «ssh:»), ahora se verifica que el mensaje se firme utilizando los métodos aplicados en el protocolo SSH. Este cambio evitará que ssh-agent se redirija a hosts remotos con claves FIDO, bloqueando el uso de dichas claves para formar firmas de solicitudes de autenticación web (el caso inverso, cuando el navegador puede firmar una solicitud SSH, fue inicialmente excluido mediante el uso del prefijo «ssh:» en el identificador de la clave).
- En ssh-keygen, al generar una clave residente, se ha añadido soporte para la extensión credProtect, descrita en la especificación FIDO 2.1, que ofrece protección adicional para las claves a través de una solicitud obligatoria de entrada del PIN antes de realizar cualquier operación que pueda resultar en la extracción de la clave residente del token.
- Cambios que potencialmente afectan la compatibilidad:
- Para el soporte de FIDO/U2F, se recomienda utilizar la biblioteca libfido2 en al menos la versión 1.5.0. Se ha implementado parcialmente la posibilidad de usar versiones anteriores, pero en este caso, funciones como claves residentes, solicitudes de PIN y conexión de múltiples tokens no estarán disponibles.
- En ssh-keygen, el formato de información de confirmación, opcionalmente guardado al generar una clave FIDO, se ha añadido datos para el autenticador, necesarios para verificar las firmas digitales de confirmación.
- Se ha cambiado la API utilizada al interactuar OpenSSH con la capa para acceder a tokens FIDO.
- Al compilar la versión portátil de OpenSSH, ahora se requiere automake para generar el script de configuración y los archivos de construcción asociados (si la compilación se realiza desde un archivo tar publicado con el código, no es necesario regenerar configure).
- En ssh y ssh-keygen se ha añadido soporte para claves FIDO que requieren confirmación mediante un PIN. Para generar claves con PIN en ssh-keygen se ha añadido la opción «verify-required». En el caso de usar tales claves, antes de realizar la operación de creación de firmas, se mostrará al usuario un aviso que requerirá confirmar sus acciones ingresando el PIN.
- En sshd, la configuración de authorized_keys ha implementado la opción «verify-required», que requiere el uso de capacidades de verificación de la presencia del usuario durante las operaciones con el token. El estándar FIDO prevé varias opciones para esta verificación, pero actualmente OpenSSH solo soporta la verificación basada en un PIN.
- Se ha añadido a sshd y ssh-keygen el soporte para la verificación de firmas digitales que cumplen con el estándar FIDO Webauthn, permitiendo el uso de claves FIDO en navegadores web.
- En ssh, en la configuración de CertificateFile,
ControlPath, IdentityAgent, IdentityFile, LocalForward y
RemoteForward se permite la sustitución de valores desde variables de entorno, indicadas en el formato «${ENV}». - En ssh y ssh-agent se ha añadido el soporte para la variable de entorno $SSH_ASKPASS_REQUIRE, que se puede usar para habilitar o deshabilitar la invocación de ssh-askpass.
- En ssh, en ssh_config, en la directiva AddKeysToAgent se ha añadido la posibilidad de limitar el tiempo de validez de la clave. Después de que expire el límite especificado, las claves se eliminan automáticamente de ssh-agent.
- En scp y sftp, utilizando la bandera «-A» ahora se puede permitir explícitamente el reenvío en scp y sftp con el uso de ssh-agent (por defecto el reenvío está prohibido).
- En la configuración de ssh se ha añadido el soporte para la sustitución ‘%k’, que define el nombre de la clave del host. Esta funcionalidad se puede usar para distribuir claves en archivos separados (por ejemplo, «UserKnownHostsFile ~/.ssh/known_hosts.d/%k»).
- Se permite el uso de la operación «ssh-add -d -» para leer desde stdin las claves que se van a eliminar.
- En sshd se garantiza el registro en log del inicio y el fin del proceso de recorte de conexiones, controlado por el parámetro MaxStartups.
Los desarrolladores de OpenSSH también han recordado sobre la próxima clasificación como obsoleto de los algoritmos que utilizan hashes SHA-1, en relación con en la eficacia de los ataques de colisión con un prefijo específico (el costo de generar una colisión se estima en aproximadamente 45 mil dólares). En una de las próximas versiones, se planea desactivar por defecto la posibilidad de utilizar el algoritmo de firma digital de clave pública «ssh-rsa», mencionado en el RFC original para el protocolo SSH y que sigue siendo ampliamente utilizado en la práctica (para verificar la implementación de ssh-rsa en sus sistemas, se puede intentar conectarse por ssh con la opción «-oHostKeyAlgorithms=-ssh-rsa»).
Para suavizar la transición a nuevos algoritmos en OpenSSH, en la próxima versión se habilitará por defecto la configuración UpdateHostKeys, que permitirá migrar automáticamente a los clientes a algoritmos más confiables. Entre los algoritmos recomendados para la migración se mencionan rsa-sha2-256/512 basado en RFC8332 RSA SHA-2 (soportado desde OpenSSH 7.2 y utilizado por defecto), ssh-ed25519 (soportado desde OpenSSH 6.5) y ecdsa-sha2-nistp256/384/521 basado en RFC5656 ECDSA (soportado desde OpenSSH 5.7).
Fuente: opennet.ru
