Navegador VNC con reglas de confianza cero

Por Kenny Johnson



A partir de hoy, nos complace compartir que ahora puede cambiar otro caso de uso tradicional impulsado por el cliente a un navegador. Los equipos ahora pueden proporcionar a sus usuarios un cliente de Computación en red virtual (VNC) completamente renderizado en el navegador con controles integrados de Confianza cero.


Al igual que el flujo SSH, esto permite a los usuarios conectarse desde cualquier navegador en cualquier dispositivo, sin necesidad de software cliente. La función se ejecuta en cada uno de nuestros centros de datos en más de 200 ciudades de todo el mundo, acercando la experiencia a sus usuarios finales. También creamos la experiencia con Cloudflare Workers para ofrecer horas de inicio casi instantáneas. En el futuro, respaldaremos la auditabilidad completa de las acciones de los usuarios en sus sesiones VNC y SSH.


Un repaso rápido sobre VNC


VNC es una plataforma para compartir escritorio construida sobre el protocolo Remote Frame Buffer que permite una GUI en cualquier servidor. Está diseñado para ser independiente de la plataforma y proporciona una manera fácil para que los administradores pongan interfaces a disposición de los usuarios que se sienten menos cómodos con una línea de comandos para trabajar con una máquina remota. O para completar un trabajo más adecuado para una interfaz visual.


En mi caso, la razón más frecuente por la que uso VNC es para jugar juegos que tienen problemas de compatibilidad. Usar una máquina virtual para ejecutar un servidor Windows era mucho más económico que comprar una computadora portátil nueva.


En la mayoría de los casos de uso empresarial, VNC no se utiliza para jugar, está impulsado por requisitos de seguridad o de gestión de TI. VNC puede resultar beneficioso para crear un entorno de estilo "sala limpia" para que los usuarios interactúen con información segura que no se puede mover a su máquina personal.


Cómo se implementa tradicionalmente VNC

Por lo general, las implementaciones de VNC requieren que se instale software en la máquina de un usuario. Este software permite al usuario establecer una conexión VNC y representar la GUI del servidor VNC. Esto viene con desafíos de compatibilidad del sistema operativo (¿recuerda cómo se suponía que VNC era independiente de la plataforma?), Seguridad y gastos generales de administración.


La administración de software como un visor VNC generalmente requiere software de administración de dispositivos móviles (MDM) o que los usuarios realicen cambios individuales en sus máquinas. Esto se complica aún más por los contratistas y los usuarios externos que requieren acceso a través de VNC.


Desafíos con las implementaciones de VNC

VNC se utiliza a menudo para crear un entorno para que un usuario interactúe con datos confidenciales. Sin embargo, puede ser muy difícil monitorear cuando un usuario se conecta a un servidor VNC y luego lo que hace durante su sesión, sin una configuración de red significativa.


Además de las preocupaciones de seguridad, el software instalado en la máquina de un usuario, como un visor VNC, generalmente es difícil de administrar; piense en problemas de compatibilidad con los sistemas operativos, actualizaciones de seguridad y muchos otros problemas.


A diferencia de SSH, donde la mayoría de los servidores y clientes utilizan predominantemente OpenSSH, existen numerosos servidores / clientes VNC comerciales y gratuitos en varios estados de calidad y costo.

¡Queríamos arreglar esto!


Era hora de Browser VNC

Uno de los principales desafíos de renderizar una GUI es la latencia: si el mouse o las pulsaciones de teclas de un usuario son lentas, la experiencia es casi inutilizable. Con Cloudflare Tunnel, podemos ofrecer la conexión VNC en nuestro perímetro, lo que significa que estamos a menos de <50 ms del 99% de los usuarios de Internet.


Para hacer esto, creamos una implementación completa de visor VNC que se ejecuta en un navegador web. Algo como esto normalmente requeriría ejecutar un proxy TCP → WebSocket del lado del servidor (por ejemplo, websockify ya que las conexiones TCP no son compatibles de forma nativa en los navegadores actuales). Dado que ya tenemos exactamente esto con cloudflared + Cloudflare Tunnel, podemos conectarnos a túneles TCP existentes y proporcionar una experiencia VNC completamente en el navegador. Debido a que el proxy del lado del servidor ocurre a nivel de TCP, la sesión VNC está encriptada de extremo a extremo entre el cliente web y el servidor VNC dentro de su red.



Una vez que establecemos una conexión, usamos noVNC para representar cualquier servidor VNC de forma nativa en el navegador.


Todo esto se entrega mediante Cloudflare Workers . Pudimos construir toda esta experiencia en nuestra plataforma sin servidor para ofrecer la experiencia VNC en nuestro límite.


El último paso es autenticar el tráfico que va al túnel establecido con su servidor VNC. Para ello, podemos utilizar Cloudflare Access, ya que nos permite verificar la identidad de un usuario y hacer cumplir controles de seguridad adicionales. Una vez que un usuario está debidamente autenticado, se le presenta una cookie que luego se verifica en cada solicitud realizada al servidor VNC.



¡Y luego un usuario puede usar su terminal VNC!



Por qué el navegador basado es el futuro

En primer lugar, una experiencia basada en navegador es sencilla para los usuarios. Todo lo que necesitan es una conexión a Internet y una URL para acceder a sus instancias SSH y VNC. Anteriormente necesitaban software como un cliente puTTY y RealVNC.


Las aplicaciones heredadas, incluidos los servidores VNC, sirven como otro vector de ataque para usuarios malintencionados porque son difíciles de monitorear y mantener parcheadas con actualizaciones de seguridad. VNC basado en el navegador significa que podemos enviar actualizaciones de seguridad al instante. Además de aprovechar las funciones de seguridad integradas de los navegadores modernos (por ejemplo, el sandboxing de cromo).


La visibilidad es otra mejora importante. En versiones futuras, admitiremos la grabación de pantalla y el registro de solicitudes de red para proporcionar información detallada sobre lo que se completó exactamente durante una sesión de VNC. Ya proporcionamos registros claros cada vez que un usuario accede a su servidor VNC o SSH a través del navegador.



1 vista0 comentarios