Después de cuatro meses de desarrollo, se presenta la versión OpenSSH 8.7, una implementación abierta del cliente y servidor para trabajar con los protocolos SSH 2.0 y SFTP.
Principales cambios:
- Se ha añadido un modo experimental de transmisión de datos en scp que utiliza el protocolo SFTP en lugar del protocolo SCP/RCP tradicionalmente utilizado. En SFTP se aplican métodos más predecibles para tratar nombres y no se utiliza el procesamiento de plantillas glob a través del shell en el otro host, lo que genera problemas de seguridad. Para habilitar SFTP en scp, se propone la opción '-s', pero en el futuro se planea adoptar este protocolo como predeterminado.
- En sftp-server se han implementado extensiones del protocolo SFTP para revelar las rutas ~/ y ~user/, lo cual es necesario para scp.
- Se ha cambiado el comportamiento de la utilidad scp al copiar archivos entre dos hosts remotos (por ejemplo, «scp host-a:/path host-b:»), que ahora se realiza por defecto a través de un host local intermedio, al igual que cuando se utiliza la opción '-3'. Este enfoque permite evitar la transmisión de credenciales innecesarias al primer host y la triple interpretación de nombres de archivos en el shell (en el lado de origen, receptor y sistema local), y también permite utilizar todos los métodos de autenticación al acceder a hosts remotos al usar SFTP, no solo los métodos no interactivos. Se ha añadido la opción '-R' para restaurar el comportamiento anterior.
- Se ha añadido la configuración ForkAfterAuthentication en ssh, que corresponde a la opción '-f'.
- Se ha añadido la configuración StdinNull en ssh, que corresponde a la opción '-n'.
- Se ha añadido la configuración SessionType en ssh, que permite establecer modos que corresponden a las opciones '-N' (sin sesión) y '-s' (subsystem).
- En ssh-keygen se permite especificar la duración de la clave en los archivos de clave.
- Se ha añadido la opción '-Oprint-pubkey' en ssh-keygen para imprimir la clave pública completa en la firma sshsig.
- En ssh y sshd, tanto el cliente como el servidor, se han trasladado para utilizar un analizador de archivos de configuración más estricto, que utiliza reglas similares a las del shell para el procesamiento de comillas, espacios y caracteres de escape. El nuevo analizador también no pasa por alto supuestos anteriores, como omitir argumentos en opciones (por ejemplo, ahora no se puede dejar vacía la directiva DenyUsers), comillas no cerradas y la especificación de varios caracteres '='.
- Al usar registros DNS SSHFP para la verificación de claves, ssh ahora verifica todos los registros coincidentes, no solo aquellos que contienen un tipo específico de firma digital.
- En ssh-keygen, al generar una clave FIDO con la opción -Ochallenge para el hashing, se utiliza ahora una capa integrada en lugar de la biblioteca libfido2, lo que permite usar secuencias de desafío de más o menos de 32 bytes.
- En sshd, al procesar la directiva environment=»…» en los archivos authorized_keys, ahora se toma la primera coincidencia y hay una limitación de 1024 nombres de variables de entorno.
Los desarrolladores de OpenSSH también han advertido sobre la transición a algoritmos obsoletos que utilizan hashes SHA-1, debido al aumento en la eficacia de los ataques de colisión con un prefijo dado (el costo de encontrar una colisión se estima en unos 50,000 dólares). En la próxima versión, se planea desactivar por defecto la posibilidad de usar el algoritmo de firma digital de clave pública 'ssh-rsa', que se menciona en el RFC original para el protocolo SSH y sigue siendo ampliamente utilizado en la práctica.
Para verificar el uso de ssh-rsa en sus sistemas, puede intentar conectarse por ssh con la opción '-oHostKeyAlgorithms=-ssh-rsa'. Sin embargo, desactivar por defecto las firmas digitales 'ssh-rsa' no significa un rechazo total del uso de claves RSA, ya que, además de SHA-1, el protocolo SSH permite el uso de otros algoritmos de hash. En particular, además de 'ssh-rsa', se quedará la posibilidad de usar las combinaciones 'rsa-sha2-256' (RSA/SHA256) y 'rsa-sha2-512' (RSA/SHA512).
Para suavizar la transición a los nuevos algoritmos, OpenSSH tenía habilitada por defecto la configuración UpdateHostKeys, que permite la transición automática de los clientes a algoritmos más seguros. Con esta configuración se activa una extensión especial del protocolo 'hostkeys@openssh.com', que permite servidor informar al cliente sobre todas las claves de host disponibles después de la autenticación. El cliente puede reflejar estas claves en su archivo ~/ .ssh/known_hosts, lo que permite organizar la actualización de las claves de host y facilita el cambio de claves. servidor.
El uso de UpdateHostKeys está limitado por varias condiciones, las cuales podrían ser eliminadas en el futuro: la clave debe mencionarse en UserKnownHostsFile y no usarse en GlobalKnownHostsFile; la clave debe estar presente solo bajo un nombre; no se debe aplicar un certificado de clave de host; no se deben usar comodines por nombre de host en known_hosts; debe estar desactivada la configuración VerifyHostKeyDNS; debe estar activo el parámetro UserKnownHostsFile.
Entre los algoritmos recomendados para migrar se mencionan rsa-sha2-256/512 basado en RFC8332 RSA SHA-2 (compatible desde OpenSSH 7.2 y utilizado por defecto), ssh-ed25519 (compatible desde OpenSSH 6.5) y ecdsa-sha2-nistp256/384/521 basado en RFC5656 ECDSA (compatible desde OpenSSH 5.7).
Fuente: opennet.ru
