Skip to main content

RustDesk, conexión no cifrada


Introducción

Este artículo documenta un tip técnico para asegurar correctamente las conexiones en RustDesk, evitando sesiones sin cifrar o conexiones forzadas a través de relay cuando no es necesario.

En determinados escenarios, una instalación funcional de RustDesk puede mostrar conexiones relayed o unencrypted, lo que implica mayor latencia y menor control sobre el tráfico. El objetivo de este ajuste es garantizar cifrado extremo a extremo y uso preferente de conexiones directas.


Contexto del problema

RustDesk separa los roles de HBBS (ID Server) y HBBR (Relay Server), y ambos utilizan claves para asegurar la comunicación. Si estas claves no están alineadas correctamente, pueden producirse los siguientes síntomas:

  • Conexiones marcadas como relayed incluso en redes compatibles con P2P.
  • Avisos de conexión no cifrada en el cliente.
  • Indicador de seguridad ausente o incorrecto en la interfaz.

El problema no suele ser de red, sino de desajuste de claves entre servicios.


Requisitos previos

Condiciones necesarias antes de aplicar este ajuste:

  • Servidor RustDesk operativo.
  • Acceso a la configuración de despliegue (contenedores).
  • Clientes capaces de conectarse al servidor propio.

La instalación base de RustDesk se documenta en un artículo independiente.


Enfoque general de la solución

La solución se basa en dos acciones clave:

  • Forzar la generación y uso de claves por parte del servidor.
  • Garantizar que HBBS y HBBR comparten exactamente las mismas claves.

Esto asegura que ambas piezas confían entre sí y permiten sesiones cifradas de extremo a extremo.


Limitación de acceso mediante clave pública

RustDesk permite restringir el acceso al servidor mediante claves públicas. Para ello, los servicios deben arrancar con el parámetro de clave activado.

En un despliegue basado en Docker, es necesario modificar el comando de arranque de HBBS y HBBR.

Ejemplo de configuración:

hbbr:
  command: hbbr -k _

hbbs:
  command: hbbs -r <IP_DEL_SERVIDOR>:21117 -k _

El carácter _ indica que RustDesk debe generar y gestionar automáticamente las claves, sin intervención manual. A partir de este momento, todas las conexiones que pasen por el servidor estarán asociadas a este par de claves.

Este ajuste es imprescindible para habilitar cifrado extremo a extremo real.


Sincronización de claves entre HBBS y HBBR

En algunos despliegues, RustDesk genera las claves en directorios distintos para cada servicio. Si estas claves no coinciden, el cliente mostrará conexiones unencrypted o forzará el uso de relay.

Pasos habituales para resolver el problema:

  1. Localizar el volumen persistente donde RustDesk almacena sus datos. Por ejemplo:
/docker/rustdesk/
  1. Identificar el directorio asociado a HBBS, donde se generan las claves:
/docker/rustdesk/hbbs/
  1. Copiar las claves generadas hacia el directorio utilizado por HBBR:
cp /docker/rustdesk/hbbs/id_ed25519* /docker/rustdesk/hbbr/

Con esto se garantiza que ambos servicios utilizan exactamente el mismo par de claves.

Este paso corrige el conocido key mismatch y es crítico para que el cifrado funcione correctamente.


Aplicación de cambios

Una vez aplicados los ajustes anteriores:

  1. Reiniciar los servicios de RustDesk para que carguen las nuevas claves.
  2. Verificar que los contenedores arrancan sin errores relacionados con claves o certificados.

No es necesario realizar cambios adicionales en los clientes, más allá de volver a conectar.


Verificación

Para confirmar que la configuración es correcta:

  • Conectar un cliente RustDesk al servidor.
  • Verificar que aparece el icono de escudo verde en la interfaz.
  • Confirmar que la conexión se establece como directa cuando la red lo permite.

Si alguno de estos puntos no se cumple, revisar nuevamente la generación y sincronización de claves.


Consideraciones importantes

  • Cada regeneración de claves requiere repetir la sincronización entre servicios.
  • Las claves públicas solo deben compartirse con clientes de confianza.
  • Este ajuste no elimina el relay, pero evita su uso innecesario.

Resumen breve

Una instalación correcta de RustDesk puede funcionar sin cifrado completo si las claves no están alineadas. Forzar la generación de claves y sincronizarlas entre HBBS y HBBR garantiza conexiones cifradas, reduce latencia y evita dependencias innecesarias del relay.


Referencias