OpenSSH es un proyecto de software de fuente abierta y de libre distribución, una biblioteca y un programa de línea de comandos que se ejecuta en el fondo de su sistema operativo GNU / Linux y protege su red completa contra intrusos y atacantes. Es la versión de código abierto de la especificación SSH (Secure Shell), específicamente diseñada para
Características de un vistazo
OpenSSH es un proyecto de código abierto distribuido bajo una licencia gratuita. Ofrece una sólida autenticación basada en la clave pública, la autenticación Kerberos y los estándares de contraseña de una sola vez, encriptación fuerte basada en los algoritmos AES, Blowfish, Arcfour y 3DES, el reenvío X11 admite encriptando todo el tráfico del sistema X Window, así como AFS y El pase de los tickets de Kerberos.
Además, el software ofrece compatibilidad con reenvío de puertos encriptando canales para protocolos heredados, soporte de compresión de datos, soporte de reenvío de agente mediante el estándar de autenticación de inicio de sesión único (SSO) y soporte de servidor y cliente SFTP (FTP seguro) en cualquiera de los dos Protocolos SSH2 o SSH1.
Otra característica interesante es la interoperabilidad, lo que significa que el proyecto cumple con las versiones 1.3, 1.5 y 2.0 del protocolo original SSH (Secure Shell). Después de la instalación, OpenSSH reemplazará automáticamente los programas estándar FTP, Telnet, RCP y rlogin con versiones seguras de ellos, como SFTP, SCP y SSH.
Debajo del capó, la disponibilidad y los sistemas operativos compatibles
El proyecto OpenSSH está escrito completamente en el lenguaje de programación C. Comprende la implementación principal de SSH y el daemon SSH, que se ejecuta en segundo plano. El software se distribuye principalmente como un archivo de fuentes universales, que funcionará con cualquier sistema operativo GNU / Linux tanto en arquitecturas de 32 bits como de 64 bits.
Portable OpenSSH
También se puede descargar una versión portátil del protocolo OpenSSH en Softoware, de forma gratuita, llamada Portable OpenSSH. Es una implementación de código abierto de los protocolos SSH versión 1 y SSH versión 2 para los sistemas operativos Linux, BSD y Solaris.
Qué hay nuevo en este lanzamiento:
- Cambios potencialmente incompatibles:
- Esta versión incluye una serie de cambios que pueden afectar las configuraciones existentes:
- Esta versión elimina la compatibilidad del servidor para el protocolo SSH v.1.
- ssh (1): elimine 3des-cbc de la propuesta predeterminada del cliente. Las cifras cifradas de 64 bits no son seguras en 2016 y no queremos esperar hasta que los ataques como SWEET32 se extiendan a SSH. Como 3des-cbc fue el único cifrado obligatorio en los SSH RFC, esto puede causar problemas para conectarse a dispositivos más antiguos utilizando la configuración predeterminada, pero es muy probable que dichos dispositivos ya necesiten una configuración explícita para el intercambio de claves y los algoritmos de la clave de host. sshd (8): elimina el soporte para la compresión previa a la autenticación. Hacer la compresión tempranamente en el protocolo probablemente pareció razonable en la década de 1990, pero hoy en día es claramente una mala idea en términos de criptografía (por ejemplo, múltiples ataques oráculos de compresión en TLS) y superficie de ataque. El soporte de compresión previa a la autenticación se ha deshabilitado de forma predeterminada durante & gt; 10 años. El soporte permanece en el cliente. ssh-agent se negará a cargar módulos PKCS # 11 fuera de una lista blanca de rutas confiables de forma predeterminada. La lista blanca de ruta se puede especificar en tiempo de ejecución.
- sshd (8): cuando aparece un comando forzado tanto en un certificado como en una clave / mandatos autorizados = restricción, sshd ahora rechazará aceptar el certificado a menos que sean idénticos. El comportamiento previo (documentado) de tener el certificado de comando forzado anular el otro podría ser un poco confuso y propenso a errores. sshd (8): elimine la directiva de configuración UseLogin y soporte para que / bin / login administre sesiones de inicio de sesión.
- Cambios desde OpenSSH 7.3:
- Seguridad:
- ssh-agent (1): ahora se rehusará a cargar módulos PKCS # 11 desde rutas fuera de una lista blanca de confianza (configurable en tiempo de ejecución). Las solicitudes para cargar módulos se pueden pasar a través del reenvío del agente y un atacante podría intentar cargar un módulo PKCS # 11 hostil en el canal del agente reenviado: los módulos PKCS # 11 son bibliotecas compartidas, por lo que la ejecución del código en el sistema que ejecuta el ssh -agent si el atacante tiene control del agent-socket reenviado (en el host que ejecuta el servidor sshd) y la capacidad de escribir en el sistema de archivos del host que ejecuta ssh-agent (generalmente el host que ejecuta el cliente ssh). Reportado por Jann Horn del Proyecto Zero.
- sshd (8): cuando la separación de privilegios está deshabilitada, sshd (8) crearía sockets de dominio Unix reenviado con los privilegios de 'root' en lugar del usuario autenticado. Esta versión rechaza el reenvío de socket de dominio Unix cuando la separación de privilegios está deshabilitada (la separación de privilegios se ha habilitado de forma predeterminada durante 14 años). Reportado por Jann Horn del Proyecto Zero.
- sshd (8): Evite la fuga teórica de material de clave privada de host a procesos secundarios separados por privilegios a través de realloc () al leer claves. No se observó tal fuga en la práctica para las claves de tamaño normal, ni una filtración al proceso del niño expone directamente el material clave a los usuarios no privilegiados. Reportado por Jann Horn del Proyecto Zero.
- sshd (8): el administrador de memoria compartida utilizado por el soporte de compresión de autenticación previa tenía una comprobación de límites que algunos compiladores de optimización podían eludir. Además, este administrador de memoria no se pudo acceder correctamente cuando se deshabilitó la compresión de autenticación previa. Esto podría permitir ataques contra el proceso de monitor privilegiado desde el proceso de separación de privilegios de espacio aislado (primero se requeriría un compromiso de este último). Esta versión elimina la compatibilidad con la compresión previa a la autenticación de sshd (8). Reportado por Guido Vranken usando la herramienta de identificación de optimización inestable Stack (http://css.csail.mit.edu/stack/)
- sshd (8): reparación de la condición de denegación de servicio en la que un atacante que envía varios mensajes KEXINIT puede consumir hasta 128 MB por conexión. Reportado por Shi Lei de Gear Team, Qihoo 360.
- sshd (8): Valide los rangos de direcciones para las directivas AllowUser y DenyUsers en el momento de la carga de la configuración y rechace la aceptación de los no válidos. Anteriormente era posible especificar rangos de direcciones CIDR no válidos (por ejemplo, usuario@127.1.2.3/55) y estos coincidirían siempre, lo que podría dar como resultado la concesión de acceso donde no estaba previsto. Reportado por Laurence Parry.
- Nuevas características:
- ssh (1): agrega un modo de multiplexación de proxy a ssh (1) inspirado en la versión en PuTTY de Simon Tatham. Esto permite que un cliente de multiplexación se comunique con el proceso maestro utilizando un subconjunto del paquete SSH y el protocolo de canales sobre un socket de dominio Unix, con el proceso principal actuando como un proxy que traduce las ID de canal, etc. Esto permite que se ejecute el modo de multiplexación sistemas que carecen de pase de descriptor de archivo (utilizado por el código de multiplexación actual) y, potencialmente, junto con el reenvío de socket de dominio Unix, con el cliente y el proceso maestro de multiplexación en diferentes máquinas. El modo proxy multiplexado se puede invocar usando & quot; ssh -O proxy ... & quot;
- sshd (8): agregue una opción sshd_config DisableForwarding que deshabilita X11, agent, TCP, tunnel y el enrutamiento de socket de dominio Unix, así como cualquier otra cosa que podamos implementar en el futuro. Al igual que la marca 'restricted' authorized_keys, se pretende que sea una forma simple y a prueba de futuro de restringir una cuenta.
- sshd (8), ssh (1): admite el & quot; curve25519-sha256 & quot; método de intercambio clave Es idéntico al método admitido actualmente llamado & quot; curve25519-sha256@libssh.org & quot;.
- sshd (8): Mejore el manejo de SIGHUP comprobando si sshd ya está dañado al inicio y omitiendo la llamada a daemon (3) si es así. Esto asegura que un reinicio SIGHUP de sshd (8) conservará el mismo ID de proceso que la ejecución inicial. sshd (8) ahora también desvinculará el PidFile antes de reiniciar SIGHUP y volverá a crearlo después de un reinicio exitoso, en lugar de dejar un archivo obsoleto en el caso de un error de configuración. bz # 2641
- sshd (8): Permitir que las directivas ClientAliveInterval y ClientAliveCountMax aparezcan en sshd_config Coincidir bloques.
- sshd (8): Agregue% -escapes a AuthorizedPrincipalsCommand para que coincida con los admitidos por AuthorizedKeysCommand (clave, tipo de clave, huella digital, etc.) y algunos más para proporcionar acceso a los contenidos del certificado que se ofrece.
- Se agregaron pruebas de regresión para la coincidencia de cadenas, la coincidencia de direcciones y las funciones de sanitización de cadenas.
- Mejorado el arnés de fuzzer de intercambio de claves.
- Correcciones de errores:
- ssh (1): Permitir que IdentityFile cargue y use certificados que no tienen la clave pública correspondiente correspondiente. bz # 2617 certificado id_rsa-cert.pub (y no id_rsa.pub).
- ssh (1): corrige la autenticación de clave pública cuando se usa autenticación múltiple y publickey no es solo el primer método que se intenta. bz # 2642
- regresión: permite que las pruebas de interconexión de PuTTY se ejecuten sin supervisión. bz # 2639
- ssh-agent (1), ssh (1): mejore los informes cuando intente cargar claves desde tokens PKCS # 11 con menos mensajes de registro inútiles y más detalles en los mensajes de depuración. bz # 2610
- ssh (1): al derribar las conexiones de ControlMaster, no contamine stderr cuando LogLevel = quiet.
- sftp (1): Activado ^ Z, espere a que ssh (1) subyacente se suspenda antes de suspender sftp (1) para asegurarse de que ssh (1) restablece el modo de terminal correctamente si se suspende durante una solicitud de contraseña.
- ssh (1): evite ocupado: espere cuando ssh (1) se suspende durante un aviso de contraseña.
- ssh (1), sshd (8): informa correctamente los errores durante el envío de mensajes ext-info.
- sshd (8): corrige el bloqueo de NULL-deref si sshd (8) recibió un mensaje de NEWKEYS fuera de secuencia.
- sshd (8): lista correcta de algoritmos de firmas compatibles enviados en la extensión server-sig-algs. bz # 2547
- sshd (8): Corregido el envío del mensaje ext_info si el privsep está deshabilitado.
- sshd (8): imponer de forma más estricta el orden esperado de las llamadas al monitor de separación de privilegios utilizadas para la autenticación y permitirlas solo cuando sus respectivos métodos de autenticación estén habilitados en la configuración
- sshd (8): arregla optlen no inicializado en la llamada getsockopt (); inofensivo para Unix / BSD pero potencialmente peligroso en Cygwin.
- Corrige los informes falsos positivos causados por explicit_bzero (3) que no se reconocen como un inicializador de memoria cuando se compilan con -fsanitize-memory. sshd_config (5): use 2001: db8 :: / 32, la subred IPv6 oficial para ejemplos de configuración.
- Portabilidad:
- En entornos configurados con configuraciones regionales turcas, recurra a la configuración regional de C / POSIX para evitar errores en el análisis de la configuración causado por el manejo exclusivo de las letras "i" e "I". bz # 2643
- sftp-server (8), ssh-agent (1): denegar ptrace en OS X usando ptrace (PT_DENY_ATTACH, ..)
- ssh (1), sshd (8): descifrar los cifrados AES-CTR en el antiguo (~ 0.9.8) OpenSSL.
- Corregir la compilación para compilado libcrypto sin soporte RIPEMD160.
- contrib: agregue un gnome-ssh-askpass3 con soporte GTK + 3. bz # 2640 sshd (8): mejora la reinyección de PRNG a través de la separación de privilegios y fuerza a libcrypto para obtener una semilla de alta calidad antes de chroot o sandboxing.
- Todos: prueba explícitamente para strnvis roto. NetBSD agregó un strnvis y desafortunadamente lo hizo incompatible con el existente en OpenBSD y el libbsd de Linux (el primero ha existido por más de diez años). Trate de detectar este desastre y suponga que es la única opción segura si compilamos de forma cruzada.
Qué hay de nuevo en la versión:
- Cambios potencialmente incompatibles:
- Esta versión incluye una serie de cambios que pueden afectar las configuraciones existentes:
- Esta versión elimina la compatibilidad del servidor para el protocolo SSH v.1.
- ssh (1): elimine 3des-cbc de la propuesta predeterminada del cliente. Las cifras cifradas de 64 bits no son seguras en 2016 y no queremos esperar hasta que los ataques como SWEET32 se extiendan a SSH. Como 3des-cbc fue el único cifrado obligatorio en los SSH RFC, esto puede causar problemas para conectarse a dispositivos más antiguos utilizando la configuración predeterminada, pero es muy probable que dichos dispositivos ya necesiten una configuración explícita para el intercambio de claves y los algoritmos de la clave de host. sshd (8): elimina el soporte para la compresión previa a la autenticación. Hacer la compresión tempranamente en el protocolo probablemente pareció razonable en la década de 1990, pero hoy en día es claramente una mala idea en términos de criptografía (por ejemplo, múltiples ataques oráculos de compresión en TLS) y superficie de ataque. El soporte de compresión previa a la autenticación se ha deshabilitado de forma predeterminada durante & gt; 10 años. El soporte permanece en el cliente. ssh-agent se negará a cargar módulos PKCS # 11 fuera de una lista blanca de rutas confiables de forma predeterminada. La lista blanca de ruta se puede especificar en tiempo de ejecución.
- sshd (8): cuando aparece un comando forzado tanto en un certificado como en una clave / mandatos autorizados = restricción, sshd ahora rechazará aceptar el certificado a menos que sean idénticos. El comportamiento previo (documentado) de tener el certificado de comando forzado anular el otro podría ser un poco confuso y propenso a errores. sshd (8): elimine la directiva de configuración UseLogin y soporte para que / bin / login administre sesiones de inicio de sesión.
- Cambios desde OpenSSH 7.3:
- Seguridad:
- ssh-agent (1): ahora se rehusará a cargar módulos PKCS # 11 desde rutas fuera de una lista blanca de confianza (configurable en tiempo de ejecución). Las solicitudes para cargar módulos se pueden pasar a través del reenvío del agente y un atacante podría intentar cargar un módulo PKCS # 11 hostil en el canal del agente reenviado: los módulos PKCS # 11 son bibliotecas compartidas, por lo que la ejecución del código en el sistema que ejecuta el ssh -agent si el atacante tiene control del agent-socket reenviado (en el host que ejecuta el servidor sshd) y la capacidad de escribir en el sistema de archivos del host que ejecuta ssh-agent (generalmente el host que ejecuta el cliente ssh). Reportado por Jann Horn del Proyecto Zero.
- sshd (8): cuando la separación de privilegios está deshabilitada, sshd (8) crearía sockets de dominio Unix reenviado con los privilegios de 'root' en lugar del usuario autenticado. Esta versión rechaza el reenvío de socket de dominio Unix cuando la separación de privilegios está deshabilitada (la separación de privilegios se ha habilitado de forma predeterminada durante 14 años). Reportado por Jann Horn del Proyecto Zero.
- sshd (8): Evite la fuga teórica de material de clave privada de host a procesos secundarios separados por privilegios a través de realloc () al leer claves. No se observó tal fuga en la práctica para las claves de tamaño normal, ni una filtración al proceso del niño expone directamente el material clave a los usuarios no privilegiados. Reportado por Jann Horn del Proyecto Zero.
- sshd (8): el administrador de memoria compartida utilizado por el soporte de compresión de autenticación previa tenía una comprobación de límites que algunos compiladores de optimización podían eludir. Además, este administrador de memoria no se pudo acceder correctamente cuando se deshabilitó la compresión de autenticación previa. Esto podría permitir ataques contra el proceso de monitor privilegiado desde el proceso de separación de privilegios de espacio aislado (primero se requeriría un compromiso de este último). Esta versión elimina la compatibilidad con la compresión previa a la autenticación de sshd (8). Reportado por Guido Vranken usando la herramienta de identificación de optimización inestable Stack (http://css.csail.mit.edu/stack/)
- sshd (8): reparación de la condición de denegación de servicio en la que un atacante que envía varios mensajes KEXINIT puede consumir hasta 128 MB por conexión. Reportado por Shi Lei de Gear Team, Qihoo 360.
- sshd (8): Valide los rangos de direcciones para las directivas AllowUser y DenyUsers en el momento de la carga de la configuración y rechace la aceptación de los no válidos. Anteriormente era posible especificar rangos de direcciones CIDR no válidos (por ejemplo, usuario@127.1.2.3/55) y estos coincidirían siempre, lo que podría dar como resultado la concesión de acceso donde no estaba previsto. Reportado por Laurence Parry.
- Nuevas características:
- ssh (1): agrega un modo de multiplexación de proxy a ssh (1) inspirado en la versión en PuTTY de Simon Tatham. Esto permite que un cliente de multiplexación se comunique con el proceso maestro utilizando un subconjunto del paquete SSH y el protocolo de canales sobre un socket de dominio Unix, con el proceso principal actuando como un proxy que traduce las ID de canal, etc. Esto permite que se ejecute el modo de multiplexación sistemas que carecen de pase de descriptor de archivo (utilizado por el código de multiplexación actual) y, potencialmente, junto con el reenvío de socket de dominio Unix, con el cliente y el proceso maestro de multiplexación en diferentes máquinas. El modo proxy multiplexado se puede invocar usando & quot; ssh -O proxy ... & quot;
- sshd (8): agregue una opción sshd_config DisableForwarding que deshabilita X11, agent, TCP, tunnel y el enrutamiento de socket de dominio Unix, así como cualquier otra cosa que podamos implementar en el futuro. Al igual que la marca 'restricted' authorized_keys, se pretende que sea una forma simple y a prueba de futuro de restringir una cuenta.
- sshd (8), ssh (1): admite el & quot; curve25519-sha256 & quot; método de intercambio clave Es idéntico al método admitido actualmente llamado & quot; curve25519-sha256@libssh.org & quot;.
- sshd (8): Mejore el manejo de SIGHUP comprobando si sshd ya está dañado al inicio y omitiendo la llamada a daemon (3) si es así. Esto asegura que un reinicio SIGHUP de sshd (8) conservará el mismo ID de proceso que la ejecución inicial. sshd (8) ahora también desvinculará el PidFile antes de reiniciar SIGHUP y volverá a crearlo después de un reinicio exitoso, en lugar de dejar un archivo obsoleto en el caso de un error de configuración. bz # 2641
- sshd (8): Permitir que las directivas ClientAliveInterval y ClientAliveCountMax aparezcan en sshd_config Coincidir bloques.
- sshd (8): Agregue% -escapes a AuthorizedPrincipalsCommand para que coincida con los admitidos por AuthorizedKeysCommand (clave, tipo de clave, huella digital, etc.) y algunos más para proporcionar acceso a los contenidos del certificado que se ofrece.
- Se agregaron pruebas de regresión para la coincidencia de cadenas, la coincidencia de direcciones y las funciones de sanitización de cadenas.
- Mejorado el arnés de fuzzer de intercambio de claves.
- Correcciones de errores:
- ssh (1): Permitir que IdentityFile cargue y use certificados que no tienen la clave pública correspondiente correspondiente. bz # 2617 certificado id_rsa-cert.pub (y no id_rsa.pub).
- ssh (1): corrige la autenticación de clave pública cuando se usa autenticación múltiple y publickey no es solo el primer método que se intenta. bz # 2642
- regresión: permite que las pruebas de interconexión de PuTTY se ejecuten sin supervisión. bz # 2639
- ssh-agent (1), ssh (1): mejore los informes cuando intente cargar claves desde tokens PKCS # 11 con menos mensajes de registro inútiles y más detalles en los mensajes de depuración. bz # 2610
- ssh (1): al derribar las conexiones de ControlMaster, no contamine stderr cuando LogLevel = quiet.
- sftp (1): Activado ^ Z, espere a que ssh (1) subyacente se suspenda antes de suspender sftp (1) para asegurarse de que ssh (1) restablece el modo de terminal correctamente si se suspende durante una solicitud de contraseña.
- ssh (1): evite ocupado: espere cuando ssh (1) se suspende durante un aviso de contraseña.
- ssh (1), sshd (8): informa correctamente los errores durante el envío de mensajes ext-info.
- sshd (8): corrige el bloqueo de NULL-deref si sshd (8) recibió un mensaje de NEWKEYS fuera de secuencia.
- sshd (8): lista correcta de algoritmos de firmas compatibles enviados en la extensión server-sig-algs. bz # 2547
- sshd (8): Corregido el envío del mensaje ext_info si el privsep está deshabilitado.
- sshd (8): imponer de forma más estricta el orden esperado de las llamadas al monitor de separación de privilegios utilizadas para la autenticación y permitirlas solo cuando sus respectivos métodos de autenticación estén habilitados en la configuración
- sshd (8): arregla optlen no inicializado en la llamada getsockopt (); inofensivo para Unix / BSD pero potencialmente peligroso en Cygwin.
- Corrige los informes falsos positivos causados por explicit_bzero (3) que no se reconocen como un inicializador de memoria cuando se compilan con -fsanitize-memory. sshd_config (5): use 2001: db8 :: / 32, la subred IPv6 oficial para ejemplos de configuración.
- Portabilidad:
- En entornos configurados con configuraciones regionales turcas, recurra a la configuración regional de C / POSIX para evitar errores en el análisis de la configuración causado por el manejo exclusivo de las letras "i" e "I". bz # 2643
- sftp-server (8), ssh-agent (1): denegar ptrace en OS X usando ptrace (PT_DENY_ATTACH, ..)
- ssh (1), sshd (8): descifrar los cifrados AES-CTR en el antiguo (~ 0.9.8) OpenSSL.
- Corregir la compilación para compilado libcrypto sin soporte RIPEMD160.
- contrib: agregue un gnome-ssh-askpass3 con soporte GTK + 3. bz # 2640 sshd (8): mejora la reinyección de PRNG a través de la separación de privilegios y fuerza a libcrypto para obtener una semilla de alta calidad antes de chroot o sandboxing.
- Todos: prueba explícitamente para strnvis roto. NetBSD agregó un strnvis y desafortunadamente lo hizo incompatible con el existente en OpenBSD y el libbsd de Linux (el primero ha existido por más de diez años). Trate de detectar este desastre y suponga que es la única opción segura si compilamos de forma cruzada.
Qué hay de nuevo en la versión 7.4:
- Cambios potencialmente incompatibles:
- Esta versión incluye una serie de cambios que pueden afectar las configuraciones existentes:
- Esta versión elimina la compatibilidad del servidor para el protocolo SSH v.1.
- ssh (1): elimine 3des-cbc de la propuesta predeterminada del cliente. Las cifras cifradas de 64 bits no son seguras en 2016 y no queremos esperar hasta que los ataques como SWEET32 se extiendan a SSH. Como 3des-cbc fue el único cifrado obligatorio en los SSH RFC, esto puede causar problemas para conectarse a dispositivos más antiguos utilizando la configuración predeterminada, pero es muy probable que dichos dispositivos ya necesiten una configuración explícita para el intercambio de claves y los algoritmos de la clave de host. sshd (8): elimina el soporte para la compresión previa a la autenticación. Hacer la compresión tempranamente en el protocolo probablemente pareció razonable en la década de 1990, pero hoy en día es claramente una mala idea en términos de criptografía (por ejemplo, múltiples ataques oráculos de compresión en TLS) y superficie de ataque. El soporte de compresión previa a la autenticación se ha deshabilitado de forma predeterminada durante & gt; 10 años. El soporte permanece en el cliente. ssh-agent se negará a cargar módulos PKCS # 11 fuera de una lista blanca de rutas confiables de forma predeterminada. La lista blanca de rutas puede especificarse en tiempo de ejecución.
- sshd (8): cuando aparece un comando forzado tanto en un certificado como en una clave / mandatos autorizados = restricción, sshd ahora rechazará aceptar el certificado a menos que sean idénticos. El comportamiento previo (documentado) de tener el certificado de comando forzado anular el otro podría ser un poco confuso y propenso a errores. sshd (8): elimine la directiva de configuración UseLogin y soporte para que / bin / login administre sesiones de inicio de sesión.
- Cambios desde OpenSSH 7.3:
- Seguridad:
- ssh-agent (1): ahora se rehusará a cargar módulos PKCS # 11 desde rutas fuera de una lista blanca de confianza (configurable en tiempo de ejecución). Las solicitudes para cargar módulos se pueden pasar a través del reenvío del agente y un atacante podría intentar cargar un módulo PKCS # 11 hostil en el canal del agente reenviado: los módulos PKCS # 11 son bibliotecas compartidas, por lo que la ejecución del código en el sistema que ejecuta el ssh -agent si el atacante tiene control del agent-socket reenviado (en el host que ejecuta el servidor sshd) y la capacidad de escribir en el sistema de archivos del host que ejecuta ssh-agent (generalmente el host que ejecuta el cliente ssh). Reportado por Jann Horn del Proyecto Zero.
- sshd (8): cuando la separación de privilegios está deshabilitada, sshd (8) crearía sockets de dominio Unix reenviado con los privilegios de 'root' en lugar del usuario autenticado. Esta versión rechaza el reenvío de socket de dominio Unix cuando la separación de privilegios está deshabilitada (la separación de privilegios se ha habilitado de forma predeterminada durante 14 años). Reportado por Jann Horn del Proyecto Zero.
- sshd (8): Evite la fuga teórica de material de clave privada de host a procesos secundarios separados por privilegios a través de realloc () al leer claves. No se observó tal fuga en la práctica para las claves de tamaño normal, ni una filtración al proceso del niño expone directamente el material clave a los usuarios no privilegiados. Reportado por Jann Horn del Proyecto Zero.
- sshd (8): el administrador de memoria compartida utilizado por el soporte de compresión de autenticación previa tenía una comprobación de límites que algunos compiladores de optimización podían eludir. Además, este administrador de memoria no se pudo acceder correctamente cuando se deshabilitó la compresión de autenticación previa. Esto podría permitir ataques contra el proceso de monitor privilegiado desde el proceso de separación de privilegios de espacio aislado (primero se requeriría un compromiso de este último). Esta versión elimina la compatibilidad con la compresión previa a la autenticación de sshd (8). Reportado por Guido Vranken usando la herramienta de identificación de optimización inestable Stack (http://css.csail.mit.edu/stack/)
- sshd (8): reparación de la condición de denegación de servicio en la que un atacante que envía varios mensajes KEXINIT puede consumir hasta 128 MB por conexión. Reportado por Shi Lei de Gear Team, Qihoo 360.
- sshd (8): Valide los rangos de direcciones para las directivas AllowUser y DenyUsers en el momento de la carga de la configuración y rechace la aceptación de los no válidos. Anteriormente era posible especificar rangos de direcciones CIDR no válidos (por ejemplo, usuario@127.1.2.3/55) y estos coincidirían siempre, lo que podría dar como resultado la concesión de acceso donde no estaba previsto. Reportado por Laurence Parry.
- Nuevas características:
- ssh (1): agrega un modo de multiplexación de proxy a ssh (1) inspirado en la versión en PuTTY de Simon Tatham. Esto permite que un cliente de multiplexación se comunique con el proceso maestro utilizando un subconjunto del paquete SSH y el protocolo de canales sobre un socket de dominio Unix, con el proceso principal actuando como un proxy que traduce las ID de canal, etc. Esto permite que se ejecute el modo de multiplexación sistemas que carecen de pase de descriptor de archivo (utilizado por el código de multiplexación actual) y, potencialmente, junto con el reenvío de socket de dominio Unix, con el cliente y el proceso maestro de multiplexación en diferentes máquinas. El modo proxy multiplexado se puede invocar usando "ssh -O proxy ..."
- sshd (8): agregue una opción sshd_config DisableForwarding que deshabilita X11, agent, TCP, tunnel y el enrutamiento de socket de dominio Unix, así como cualquier otra cosa que podamos implementar en el futuro. Al igual que la marca 'restricted' authorized_keys, se pretende que sea una forma simple y a prueba de futuro de restringir una cuenta.
- sshd (8), ssh (1): admite el método de intercambio de claves "curve25519-sha256". Esto es idéntico al método actualmente admitido llamado "curve25519-sha256@libssh.org".
- sshd (8): Mejore el manejo de SIGHUP comprobando si sshd ya está dañado al inicio y omitiendo la llamada a daemon (3) si es así. Esto asegura que un reinicio SIGHUP de sshd (8) conservará el mismo ID de proceso que la ejecución inicial. sshd (8) ahora también desvinculará el PidFile antes de reiniciar SIGHUP y volverá a crearlo después de un reinicio exitoso, en lugar de dejar un archivo obsoleto en el caso de un error de configuración. bz # 2641
- sshd (8): Permitir que las directivas ClientAliveInterval y ClientAliveCountMax aparezcan en sshd_config Coincidir bloques.
- sshd (8): Agregue% -escapes a AuthorizedPrincipalsCommand para que coincida con los admitidos por AuthorizedKeysCommand (clave, tipo de clave, huella digital, etc.) y algunos más para proporcionar acceso a los contenidos del certificado que se ofrece.
- Se agregaron pruebas de regresión para la coincidencia de cadenas, la coincidencia de direcciones y las funciones de sanitización de cadenas.
- Mejorado el arnés de fuzzer de intercambio de claves.
- Correcciones de errores:
- ssh (1): Permitir que IdentityFile cargue y use certificados que no tienen la clave pública correspondiente correspondiente. bz # 2617 certificado id_rsa-cert.pub (y no id_rsa.pub).
- ssh (1): corrige la autenticación de clave pública cuando se usa autenticación múltiple y publickey no es solo el primer método que se intenta. bz # 2642
- regresión: permite que las pruebas de interconexión de PuTTY se ejecuten sin supervisión. bz # 2639
- ssh-agent (1), ssh (1): mejore los informes cuando intente cargar claves desde tokens PKCS # 11 con menos mensajes de registro inútiles y más detalles en los mensajes de depuración. bz # 2610
- ssh (1): al derribar las conexiones de ControlMaster, no contamine stderr cuando LogLevel = quiet.
- sftp (1): Activado ^ Z, espere a que ssh (1) subyacente se suspenda antes de suspender sftp (1) para asegurarse de que ssh (1) restablece el modo de terminal correctamente si se suspende durante una solicitud de contraseña.
- ssh (1): evite ocupado: espere cuando ssh (1) se suspende durante un aviso de contraseña.
- ssh (1), sshd (8): informa correctamente los errores durante el envío de mensajes ext-info.
- sshd (8): corrige el bloqueo de NULL-deref si sshd (8) recibió un mensaje de NEWKEYS fuera de secuencia.
- sshd (8): lista correcta de algoritmos de firmas compatibles enviados en la extensión server-sig-algs. bz # 2547
- sshd (8): Corregido el envío del mensaje ext_info si el privsep está deshabilitado.
- sshd (8): imponer de forma más estricta el orden esperado de las llamadas al monitor de separación de privilegios utilizadas para la autenticación y permitirlas solo cuando sus respectivos métodos de autenticación estén habilitados en la configuración
- sshd (8): arregla optlen no inicializado en la llamada getsockopt (); inofensivo para Unix / BSD pero potencialmente peligroso en Cygwin.
- Corrige los informes falsos positivos causados por explicit_bzero (3) que no se reconocen como un inicializador de memoria cuando se compilan con -fsanitize-memory. sshd_config (5): use 2001: db8 :: / 32, la subred IPv6 oficial para ejemplos de configuración.
- Portabilidad:
- En entornos configurados con configuraciones regionales turcas, recurra a la configuración regional de C / POSIX para evitar errores en el análisis de la configuración causado por el manejo exclusivo de las letras "i" e "I". bz # 2643
- sftp-server (8), ssh-agent (1): denegar ptrace en OS X usando ptrace (PT_DENY_ATTACH, ..)
- ssh (1), sshd (8): descifrar los cifrados AES-CTR en el antiguo (~ 0.9.8) OpenSSL.
- Corregir la compilación para compilado libcrypto sin soporte RIPEMD160.
- contrib: agrega un gnome-ssh-askpass3 con soporte GTK + 3. bz # 2640 sshd (8): mejora la reinyección de PRNG a través de la separación de privilegios y fuerza a libcrypto para obtener una semilla de alta calidad antes de chroot o sandboxing.
- Todos: prueba explícitamente para strnvis roto. NetBSD agregó un strnvis y desafortunadamente lo hizo incompatible con el existente en OpenBSD y el libbsd de Linux (el primero ha existido por más de diez años). Trate de detectar este desastre y suponga que es la única opción segura si compilamos de forma cruzada.
Qué hay de nuevo en la versión 7.3:
- Seguridad:
- sshd (8): mitigue un posible ataque de denegación de servicio contra la función crypt (3) del sistema a través de sshd (8). Un atacante podría enviar contraseñas muy largas que causarían un uso excesivo de la CPU en crypt (3). sshd (8) ahora se niega a aceptar solicitudes de autenticación con contraseña de longitud superior a 1024 caracteres. Independientemente informó Tomas Kuthan (Oracle), Andrés Rojas y Javier Nieto.
- sshd (8): Mitigue las diferencias de tiempo en la autenticación de contraseñas que podrían utilizarse para discernir nombres de cuenta válidos de inválidos cuando se enviaron contraseñas largas y algoritmos de hash de contraseñas particulares en uso en el servidor. CVE-2016-6210, informado por EddieEzra.Harari en verint.com
- ssh (1), sshd (8): corrige la debilidad observable en el tiempo en las contramedidas de oráculo de relleno de CBC. Reportado por Jean Paul Degabriele, Kenny Paterson, Torben Hansen y Martin Albrecht. Tenga en cuenta que las cifras CBC están deshabilitadas de manera predeterminada y solo se incluyen para la compatibilidad heredada.
- ssh (1), sshd (8): mejora el orden de las operaciones de verificación MAC para el algoritmo MAC de transporte en modo Encrypt-then-MAC (EtM) para verificar el MAC antes de descifrar cualquier texto cifrado. Esto elimina la posibilidad de que las diferencias de tiempo filtren datos sobre el texto sin formato, aunque no se ha observado tal fuga. Reportado por Jean Paul Degabriele, Kenny Paterson, Torben Hansen y Martin Albrecht. sshd (8): (solo portátil) Ignora vars de entorno PAM cuando UseLogin = yes. Si PAM está configurado para leer las variables de entorno especificadas por el usuario y UseLogin = yes en sshd_config, entonces un usuario local hostil puede atacar / bin / login a través de LD_PRELOAD o variables de entorno similares establecidas a través de PAM. CVE-2015-8325, encontrado por Shayan Sadigh.
- Nuevas características:
- ssh (1): agregue una opción ProxyJump y la correspondiente marca de línea de comando -J para permitir la indirección simplificada a través de uno o más bastiones SSH o "hosts de salto".
- ssh (1): agregue una opción IdentityAgent para permitir la especificación de sockets de agente específicos en lugar de aceptar uno del entorno. ssh (1): Permitir que ExitOnForwardFailure y ClearAllForwardings se anulen opcionalmente cuando se usa ssh -W. bz # 2577
- ssh (1), sshd (8): implementación de soporte para el modo de terminal IUTF8 según draft-sgtatham-secsh-iutf8-00. ssh (1), sshd (8): agregue soporte para grupos Diffie-Hellman 2K, 4K y 8K fijos adicionales de draft-ietf-curdle-ssh-kex-sha2-03.
- ssh-keygen (1), ssh (1), sshd (8): admite firmas SHA256 y SHA512 RSA en certificados; ssh (1): agregue una directiva Include para archivos ssh_config (5).
- ssh (1): permite caracteres UTF-8 en pancartas de autenticación previa enviadas desde el servidor. bz # 2058
- Correcciones de errores:
- ssh (1), sshd (8): reduce el nivel syslog de algunos eventos de protocolo relativamente comunes de LOG_CRIT. bz # 2585
- sshd (8): rechazar AuthenticationMethods = "" en configuraciones y aceptar AuthenticationMethods = any para el comportamiento predeterminado de no requerir autenticación múltiple. bz # 2398
- sshd (8): eliminar obsoleto y engañoso "¡POSIBLE INTENTO DE INTERRUPCIÓN!" mensaje cuando DNS directo e inverso no coinciden. bz # 2585
- ssh (1): cierre el proceso de fondo de ControlPersist stderr, excepto en el modo de depuración o al iniciar sesión en syslog. bz # 1988
- misc: la descripción de PROTOCOL para los mensajes directos del canal direct-streamlocal@openssh.com coincide con el código desplegado. bz # 2529
- ssh (1): Deduplica las entradas LocalForward y RemoteForward para corregir las fallas cuando están habilitadas tanto la canonicalización ExitOnForwardFailure como la de nombre de host. bz # 2562
- sshd (8): elimina el respaldo de los módulos al archivo "primos" obsoleto que quedó en desuso en 2001. bz # 2559.
- sshd_config (5): descripción correcta de UseDNS: afecta el procesamiento del nombre de host ssh para authorized_keys, not known_hosts; bz # 2554 ssh (1): Corrige la autenticación usando claves de certificado únicas en un agente sin claves privadas correspondientes en el sistema de archivos. bz # 2550
- sshd (8): envía ping de ClientAliveInter cuando se establece un RekeyLimit basado en el tiempo; previamente paquetes keepalive no fueron enviados. bz # 2252
Qué hay de nuevo en la versión 7.2:
- Seguridad:
- ssh (1), sshd (8): eliminar el código de roaming no terminado y no utilizado (ya estaba deshabilitado por la fuerza en OpenSSH 7.1p2).
- ssh (1): elimina la reversión del reenvío X11 que no es de confianza al reenvío confiable cuando el servidor X deshabilita la extensión SECURITY.
- ssh (1), sshd (8): aumenta el tamaño mínimo del módulo soportado por diffie-hellman-group-exchange a 2048 bits.
- sshd (8): el sandboxing preajuste ahora está habilitado de forma predeterminada (versiones anteriores lo habilitaron para nuevas instalaciones a través de sshd_config).
- Nuevas características:
- all: agregue soporte para las firmas RSA utilizando los algoritmos de hash SHA-256/512 basados en draft-rsa-dsa-sha2-256-03.txt y draft-ssh-ext-info-04.txt.
- ssh (1): agregue una opción de cliente AddKeysToAgent que se puede establecer en 'yes', 'no', 'ask' o 'confirm', y por defecto es 'no'. Cuando está habilitada, una clave privada que se usa durante la autenticación se agregará a ssh-agent si se está ejecutando (con la confirmación habilitada si se establece en 'confirmar').
- sshd (8): agregue una nueva opción de "authorized_keys" restringir "que incluye todas las restricciones de clave actuales y futuras (no - * - reenvío, etc.). También agregue versiones permisivas de las restricciones existentes, p. "no-pty" - & gt; "pty". Esto simplifica la tarea de configurar las claves restringidas y garantiza que estén restringidas al máximo, independientemente de los permisos que podamos implementar en el futuro. ssh (1): agregue la opción ssh_config CertificateFile para listar certificados explícitamente. bz # 2436
- ssh-keygen (1): permite ssh-keygen para cambiar el comentario clave para todos los formatos compatibles.
- ssh-keygen (1): permitir la toma de huellas digitales a partir de la entrada estándar, p. "ssh-keygen -lf -"
- ssh-keygen (1): permite la toma de huellas digitales de varias claves públicas en un archivo, p. ej. "ssh-keygen -lf ~ / .ssh / authorized_keys" bz # 1319
- sshd (8): admite "ninguno" como argumento para sshd_config Foreground y ChrootDirectory. Útil dentro de los bloques de coincidencia para anular un valor predeterminado global. bz # 2486
- ssh-keygen (1): admite varios certificados (uno por línea) y lee desde la entrada estándar (usando "-f -") para "ssh-keygen -L" ssh-keyscan (1): agrega "ssh- keycan -c ... "para permitir la recuperación de certificados en lugar de claves simples.
- ssh (1): maneje mejor los FQDN anclados (por ejemplo, 'cvs.openbsd.org.') en la canonicalización del nombre de host; trátelos como ya canónicos y elimine los caracteres finales '.' antes de hacer coincidir ssh_config.
- Correcciones de errores:
- sftp (1): los directorios de destino existentes no deberían finalizar las cargas recursivas (regresión en openssh 6.8) bz # 2528
- ssh (1), sshd (8): devuelve correctamente las respuestas SSH2_MSG_UNIMPLEMENTED a los mensajes inesperados durante el intercambio de claves. bz # 2949
- ssh (1): rechazar intenta establecer ConnectionAttempts = 0, lo que no tiene sentido y provocaría que ssh imprima una variable de pila no inicializada. bz # 2500
- ssh (1): corrige los errores al intentar conectarse a las direcciones IPv6 del ámbito con la canonicalización del nombre de host habilitada.
- sshd_config (5): enumera un par de opciones más utilizables en bloques de coincidencia. bz # 2489
- sshd (8): arregla "PubkeyAcceptedKeyTypes + ..." dentro de un bloque Match. ssh (1): amplíe los caracteres de tilde en los nombres de archivo pasados a las opciones -i antes de verificar si el archivo de identidad existe o no. Evita la confusión en los casos en que Shell no se expande (por ejemplo, "-i ~ / file" contra "-i ~ / file"). bz # 2481
- ssh (1): no anteponga "exec" al comando de shell ejecutado por "Match exec" en un archivo de configuración, lo que podría causar que algunos comandos fallen en ciertos entornos. bz # 2471
- ssh-keyscan (1): solución de salida para múltiples hosts / addrs en una línea cuando el hash del host o un puerto no estándar está en uso bz # 2479
- sshd (8): omita el mensaje "No se pudo chdir al directorio personal" cuando ChrootDirectory está activo. bz # 2485
- ssh (1): incluye PubkeyAcceptedKeyTypes en ssh -G volcado de configuración. sshd (8): evite cambiar los indicadores del dispositivo TunnelForwarding si ya son lo que se necesita; hace posible usar la red tun / tap como usuario no root si los permisos de dispositivos y las marcas de interfaz están preestablecidos
- ssh (1), sshd (8): RekeyLimits podría ser excedido por un paquete. bz # 2521
- ssh (1): corrige la falla del maestro de multiplexación al detectar la salida del cliente.
- ssh (1), ssh-agent (1): evita fatal () para tokens PKCS11 que presenten ID de clave vacías. bz # 1773
- sshd (8): evita printf del argumento NULL. bz # 2535
- ssh (1), sshd (8): permite RekeyLimits mayores de 4 GB. bz # 2521
- ssh-keygen (1): sshd (8): corrige varios errores en el soporte de firmas de KRL (sin usar).
- ssh (1), sshd (8): corrige las conexiones con los compañeros que usan la función de adivinar el intercambio de claves del protocolo. bz # 2515
- sshd (8): incluye el número de puerto remoto en los mensajes de registro. bz # 2503
- ssh (1): no intente cargar la clave privada SSHv1 cuando se compila sin la compatibilidad con SSHv1. bz # 2505
- ssh-agent (1), ssh (1): corrige los mensajes de error incorrectos durante la carga de la clave y los errores de firma. bz # 2507
- ssh-keygen (1): no deje archivos temporales vacíos al realizar cambios en el archivo known_hosts cuando known_hosts no exista.
- sshd (8): formato de paquete correcto para respuestas tcpip-forward para solicitudes que no asignan un puerto bz # 2509
- ssh (1), sshd (8): posible arreglo en la salida cerrada. bz # 2469 ssh (1): expanda% i en ControlPath a UID. bz # 2449
- ssh (1), sshd (8): corregir el tipo de retorno de openssh_RSA_verify. bz # 2460
- ssh (1), sshd (8): arregla alguna opción para analizar fugas de memoria. bz # 2182
- ssh (1): agrega una salida de depuración antes de la resolución de DNS; es un lugar donde ssh podría detenerse silenciosamente en casos de servidores DNS que no responden. bz # 2433 ssh (1): elimina la nueva línea espuria en la clave de host visual. bz # 2686
- ssh (1): corrección de impresión (ssh -G ...) de HostKeyAlgorithms = + ...
- ssh (1): arreglar la expansión de HostKeyAlgorithms = + ...
- Documentación:
- ssh_config (5), sshd_config (5): actualiza las listas de algoritmos predeterminadas para que coincidan con la realidad actual. bz # 2527
- ssh (1): mencione las opciones de consulta de Q-key-plain y -Q key-cert. bz # 2455
- sshd_config (8): describa más claramente lo que AuthorizedKeysFile = none hace.
- ssh_config (5): mejor documento ExitOnForwardFailure. bz # 2444
- sshd (5): mencione los grupos de respaldo DH-GEX internos en el manual. bz # 2302
- sshd_config (5): mejor descripción para la opción MaxSessions. bz # 2531
- Portabilidad:
- ssh (1), sftp-server (8), ssh-agent (1), sshd (8): admiten los privilegios de grano fino de Illumos / Solaris. Incluyendo un entorno limitado pre-auth privsep y varias emulaciones de compromiso (). bz # 2511
- Renueve redhat / openssh.spec, eliminando las sintaxis y las opciones en desuso.
- configure: permite --without-ssl-engine con --without-openssl
- sshd (8): corrige la autenticación múltiple con S / Key. bz # 2502
- sshd (8): leer de nuevo desde libcrypto RAND_antes de soltar privilegios. Evita las infracciones de sandboxing con BoringSSL.
- Corrige la colisión del nombre con las funciones globales proporcionadas por el sistema (3). bz # 2463
- Adapte Makefile para usar ssh-keygen -A al generar claves de host. bz # 2459
- configurar: corregir el valor predeterminado para --with-ssh1 bz # 2457
- configure: mejor detección del símbolo _res bz # 2259
- admite syscall getrandom () en Linux
Qué hay de nuevo en la versión 7.1:
- Seguridad:
- sshd (8): OpenSSH 7.0 contenía un error de lógica en PermitRootLogin = prohibit-password / without-password que podría, dependiendo de la configuración de tiempo de compilación, permitir la autenticación de contraseña para rootear al mismo tiempo que previene otras formas de autenticación. Este problema fue informado por Mantas Mikulenas.
- Correcciones de errores:
- ssh (1), sshd (8): agregue soluciones de compatibilidad para FuTTY
- ssh (1), sshd (8): refinar las soluciones de compatibilidad para WinSCP
- Corrige una serie de fallas de memoria (doblemente libres, sin memoria no inicializada, etc.) en ssh (1) y ssh-keygen (1). Reportado por Mateusz Kocielski.
Comentarios que no se encuentran