SSH3, una versión segura de SSH que usa HTTP3

SSH3

SSH3: shell seguro mƔs rƔpido y rico usando HTTP/3

Hace poco se dio a conocer el lanzamiento oficial de la primera versión experimental del servidor y cliente para el protocolo SSH3 diseñado como complemento del protocolo HTTP3 y que utiliza QUIC (basado en UDP), TLS 1.3 que y aprovecha los mecanismos HTTP para la autenticación de usuarios, asi como tambien para establecer un canal de comunicación seguro

SSH3 utiliza mecanismos de autorización basados ​​en el protocolo HTTP, que permiten nuevos mĆ©todos de autenticación, ademĆ”s de la autenticación clĆ”sica mediante una contraseƱa y un par de claves, ademĆ”s de que en SSH3 se puede configurar el acceso a un servidor remoto a travĆ©s del proveedor de identidad una organización o con una cuenta de Google o GitHub. SSH3 se basa en HTTP/3 y QUIC y, ademĆ”s del reenvĆ­o TCP normal, tambiĆ©n ofrece reenvĆ­o de puertos UDP y un establecimiento de sesión mĆ”s rĆ”pido y seguro.

Sobre SSH3

Los desarrolladores del proyecto mencionan que la creación de SSH3 surgió como resultado de una revisión completa del protocolo SSH, llevada a cabo por un grupo independiente de investigadores separados de los equipos que trabajan en proyectos como OpenSSH y otras implementaciones del protocolo SSH clÔsico. En SSH3, la semÔntica del protocolo SSH clÔsico se implementa a través de mecanismos HTTP, lo que no solo permite capacidades adicionales, sino que también asegura que las actividades relacionadas con SSH estén ocultas entre el resto del trÔfico, entre otras cosas, SSH3 permite las siguientes mejoras que el protocolo SSH2 no podría proporcionar, asi como también muchas de las características populares de OpenSSH:

  • Establecimiento de sesión significativamente mĆ”s rĆ”pido
  • Nuevos mĆ©todos de autenticación HTTP, como OAuth 2.0 y OpenID Connect, ademĆ”s de la autenticación SSH clĆ”sica.
  • AnĆ”lisis ~/.ssh/authorized_keys en el servidor.
    Analiza ~/.ssh/config en el cliente y maneja las opciones Hostname, Usery Portconfig IdentityFile(las otras opciones se ignoran actualmente)
    Autenticación de servidor basada en certificados
  • Robustez ante ataques de escaneo de puertos: su servidor SSH3 puede volverse invisible para otros usuarios de Internet
  • ReenvĆ­o de puertos UDP: ahora puede acceder a su QUIC, DNS, RTP o cualquier servidor basado en UDP al que solo se pueda acceder desde su host SSH3.
  • Certificados X.509: ahora puede utilizar sus certificados HTTPS clĆ”sicos para autenticar su servidor SSH3. Este mecanismo es mĆ”s seguro que el clĆ”sico mecanismo de clave de host SSHv2.
  • Capacidad de ocultar el servidor detrĆ”s de un enlace secreto.
  • Todas las funciones permitidas por el protocolo QUIC moderno: incluida la migración de conexiones y conexiones multiruta
  • Usar automĆ”ticamente la autenticación ssh-agentĀ  de clave pĆŗblica
  • ReenvĆ­o de agente SSH para usar sus claves locales en su servidor remoto
  • Autenticación de usuario segura sin llave mediante OpenID Connect.

Para cifrar el canal de comunicación, SSH3 utiliza el protocolo TLS 1.3 y se pueden emplear métodos tradicionales basados en contraseñas y claves públicas (RSA y EdDSA/ed25519). Adicionalmente, SSH3 ofrece la opción de utilizar métodos basados en el protocolo OAuth 2.0, permitiendo transferir la autenticación a proveedores externos.

Otro de los puntos fuertes de SSH3 es que ofrece un establecimiento de sesión significativamente mÔs rÔpido que SSH2, por ejemplo, establecer una nueva sesión con SSH2 puede tardar de 5 a 7 iteraciones de red (ida y vuelta), lo que el usuario puede notar fÔcilmente ya que SSH3 solo necesita 3 iteraciones.

Si estƔs interesado en poder conocer mƔs al respecto, debes saber que el cliente y del servidor estƔ escrito en Go y distribuido bajo la licencia Apache 2.0, puedes consultar los detalles en el siguiente enlace.

AdemÔs de ello, cabe mencionar que SSH3 aún es experimental y su uso no es recomendable para la producción o entornos críticos y como tal solo se recomienda su instalación para conocer sus funcionalidades o poder testear.

Descargar e instalar SSH3

Para los interesados en poder implementar un servidor SSH3 para pruebas, pueden hacerlo compilando con Go el código fuente siguiendo las instrucciones que compartimos a continuación.

git clone https://github.com/francoismichel/ssh3
cd ssh3
go build -o ssh3 cmd/ssh3/main.go
CGO_ENABLED=1 go build -o ssh3-server cmd/ssh3-server/main.go

Hecho esto, ahora procedemos a aƱadir nuestra variable de entorno en .bashrc con:

export PATH=$PATH:/path/to/the/ssh3/directory

En cuanto a la implementación del servidor, ya que como SSH3 se ejecuta sobre HTTP3 es necesario un certificado y se puede generar uno con el script:

sh ./generate_openssl_selfsigned_certificate.sh

Finalmente, te invito a que consultes la documentación sobre el uso e implementación de funciones adicionales en el siguiente enlace.