Linux Adictos Darkcrizt  

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.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.