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.