Método de acceso a Secure Shell a través de navegadores web
El SSH basado en la Web consiste en proporcionar acceso a Secure Shell (SSH) a través de un navegador web . SSH es un protocolo de red seguro que se utiliza habitualmente para controlar de forma remota servidores, dispositivos de red y otros dispositivos. Con el SSH basado en la Web, los usuarios pueden acceder a estos dispositivos y administrarlos mediante un navegador web estándar, sin necesidad de instalar ningún software adicional.
Los clientes SSH basados en la Web se implementan normalmente con JavaScript y Ajax o WebSockets . Estos clientes se comunican con el servidor SSH a través de un proxy , lo que les permite eludir los cortafuegos y otras medidas de seguridad de la red que pueden bloquear el tráfico SSH. Esto hace que el SSH basado en la Web sea una forma cómoda y segura de acceder a servidores y dispositivos remotos desde cualquier ubicación con una conexión a Internet.
El protocolo SSH basado en la Web es útil para diversos fines, como la administración de sistemas, la gestión de redes y el desarrollo remoto. Suele ser utilizado por profesionales de TI y desarrolladores para acceder y gestionar servidores de forma remota, así como por personas que necesitan acceder a sus ordenadores domésticos o de oficina desde una ubicación remota.
Tecnología
Los clientes SSH basados en la Web son aplicaciones que permiten a los usuarios acceder a servidores Secure Shell (SSH) a través de un navegador web . Constan de dos partes principales: un componente del lado del cliente, que normalmente se implementa mediante JavaScript y HTML dinámico , y un componente del lado del servidor o de aplicación web, que normalmente se implementa en un servidor de aplicaciones .
El componente del lado del cliente captura las pulsaciones de teclas, transmite mensajes hacia y desde el servidor y muestra los resultados en el navegador web del usuario. El componente del lado del servidor procesa las solicitudes entrantes y reenvía los eventos del teclado a un cliente de shell seguro que se comunica con el servidor SSH conectado. La salida de la terminal se pasa al cliente, donde se convierte a HTML mediante JavaScript, o el servidor la traduce a HTML antes de transmitirla al cliente.
Emulación de terminal
Los servidores SSH basados en web pueden utilizar emulación de terminal del lado del cliente o del lado del servidor.
Emulación de terminal del lado del cliente
La emulación de terminal del lado del cliente transmite la salida de terminal sin procesar desde el servidor SSH directamente al cliente, lo que tiene la ventaja de descargar en el cliente el proceso de traducir la salida de terminal a HTML. Sin embargo, puede verse limitada por las capacidades de JavaScript y puede utilizar una cantidad significativa de la CPU y la memoria del cliente.
Un ejemplo de un emulador de terminal del lado del cliente es vt100.js. [1]
Emulación de terminal del lado del servidor
La emulación de terminal del lado del servidor realiza un seguimiento de la pantalla y el estado de la terminal en la memoria y la convierte a HTML cuando se produce una actualización de pantalla o cuando el cliente solicita una actualización. Este método tiene la ventaja de mantener el estado de la terminal persistente incluso si el usuario se conecta a su sesión existente desde un navegador web diferente, pero puede utilizar más CPU y memoria en el servidor.
Un ejemplo de un emulador de terminal del lado del servidor es terminal.py. [2]
Ventajas
Las principales ventajas del SSH basado en web se pueden resumir de la siguiente manera:
- Accesibilidad : El protocolo SSH basado en la Web descrito en este artículo no requiere la instalación local de software cliente. Por lo tanto, es posible acceder a servidores SSH a través de un navegador web desde cualquier lugar. Como la comunicación se basa en HTTP o HTTPS, también es posible acceder a servidores SSH desde detrás de un firewall o proxy que restrinja el acceso a Internet únicamente a los puertos 80 ( HTTP ) o 443 ( HTTPS ).
- Acceso anónimo : como el acceso SSH se realiza a través de un servidor de aplicaciones web intermediario , es este servidor el que se comunica con el servidor SSH. Esto significa que el servidor SSH solo conocerá la dirección IP del servidor de aplicaciones web, manteniendo oculta la dirección IP del cliente real.
- Auditabilidad : debido a que toda la comunicación entre el cliente y el servidor SSH debe pasar por el servidor de aplicaciones web, esta comunicación puede registrarse. Esto evita que un cliente malintencionado elimine los registros de sus actividades. La situación es exactamente la misma que con el servidor SSH tradicional.
- Reanudación de sesiones : algunas implementaciones de SSH basadas en la web permiten que el usuario reanude sus sesiones de SSH después de desconectarse. Esto no es posible con un cliente SSH tradicional.
- Integrable : las implementaciones de SSH basadas en web se pueden integrar en cualquier página web, lo que permite su integración en otras aplicaciones basadas en web.
- Características únicas : Muchas herramientas SSH basadas en la web tienen características únicas, como la capacidad de compartir terminales con otros usuarios, pueden mostrar imágenes dentro de terminales y otras capacidades útiles.
Cuestiones importantes
Se deben tener en cuenta las siguientes cuestiones, que son importantes al utilizar un cliente SSH basado en web:
- Seguridad : es importante asegurarse de que se utilice HTTPS al comunicarse con el servidor de aplicaciones web . De lo contrario, todos los datos que se envían podrían ser leídos por el uso de rastreadores de paquetes simples que podrían revelar información confidencial.
- Confianza : los datos que se envían al servidor de aplicaciones web se descifran allí. Esto es necesario para reenviar los comandos emitidos al servidor SSH real . Aunque los operadores de soluciones SSH basadas en la web normalmente no registran datos confidenciales, en teoría los datos están disponibles para ellos en forma simple. Es poco probable que esto provoque un problema de seguridad cuando el servidor de aplicaciones web y el servidor SSH se ejecutan en el mismo servidor o están controlados por la misma entidad.
- Tunelización : a diferencia de la mayoría de los clientes SSH tradicionales basados en aplicaciones, los clientes SSH basados en la Web no pueden tunelizar ("reenviar") el tráfico TCP . Por ejemplo, no es posible ejecutar una sesión X sobre una sesión SSH basada en la Web. Sin embargo, la falta de capacidad se debe a problemas de implementación y no es inherente de alguna manera. [3]
Ejemplos gratuitos y de código abierto
- La extensión Secure Shell de Google para Chrome y Chromium [4] combina el emulador de terminal hterm de JavaScript con el código de cliente OpenSSH que se ejecuta en Native Client . [5] La extensión Secure Shell funciona con servidores proxy HTTP a SSH que no son de Google a través de ganchos de proxy, y la aplicación de terceros nassh-relay [6] puede usar esos ganchos para permitir que la extensión Secure Shell establezca una conexión SSH a través del transporte XMLHttpRequest o WebSocket .
- shellinabox [7] funciona como un servicio independiente o en conjunto con nginx para proporcionar acceso HTTPS a un shell de inicio de sesión, y está empaquetado para distribuciones de Linux derivadas de Debian y RedHat .
- webssh [8] es una solución similar escrita en Python.
- Bastillion [9] es un servidor bastión alojado en la web con capacidades de auditoría y administración de claves. Los usuarios se conectan a un servidor centralizado a través de HTTPS y las conexiones SSH se envían a través de un transporte WebSocket seguro.
- FireSSH es un complemento de navegador que funciona en Firefox ESR y Waterfox.
Referencias
- ^ "Archivo de código de Google: almacenamiento a largo plazo para alojamiento de proyectos de código de Google".
- ^ "Terminal.py - Un emulador de terminal Python puro — Documentación de Gate One 1.2.0".
- ^ jcterm afirma poder manejar el reenvío de puertos, como el reenvío X11
- ^ "Aplicación Secure Shell".
- ^ Preguntas frecuentes sobre Chromium Secure Shell
- ^ Repositorio de GitHub nassh-relay
- ^ "Shellinabox". GitHub . 28 de octubre de 2021.
- ^ "Webssh: Cliente SSH basado en web".
- ^ Bastillion - Acceso SSH basado en la Web y gestión de claves