Files

4.0 KiB

RustDesk autoalojado y acceso remoto administrado

El bootstrap del controlador de dominio instala un servidor RustDesk OSS autoalojado y el bootstrap de cada cliente Windows inscrito instala el agente RustDesk administrado. Esto permite administrar el propio controlador y cada cliente del laboratorio sin depender de los servidores públicos de RustDesk.

Componentes y red

El controlador inicia ambos componentes bajo SYSTEM mediante las tareas programadas SGU-RustDesk-hbbs y SGU-RustDesk-hbbr:

Componente Función Puerto entrante
hbbs ID/rendezvous y prueba NAT TCP 21115-21116 y UDP 21116
hbbr Relay para sesiones que no pueden ser directas TCP 21117

Las reglas se llaman SGU RustDesk y sólo aceptan la subred privada que se indicó al bootstrap del servidor. No se habilitan el servidor web ni los puertos 21118/21119. Los clientes y el servidor necesitan salida HTTPS a GitHub sólo durante una primera instalación o actualización, para descargar el binario verificado por SHA-256.

El nombre interno usado por los clientes es rustdesk.lci.lasalle.mx; el bootstrap del DC mantiene su registro A en DNS apuntando a la IP fija del controlador.

Alta automática de un equipo Windows

Al finalizar Invoke-SguClientBootstrap.ps1, antes de considerar válido el enrolamiento, el flujo:

  1. lee la clave pública del servidor a través de la sesión autenticada con el DC;
  2. instala RustDesk desde el MSI oficial, comprobando el SHA-256 fijado;
  3. instala y arranca el servicio RustDesk como automático;
  4. configura ID, relay y clave pública del servidor privado en el contexto del servicio y para perfiles nuevos;
  5. crea una contraseña única de acceso desatendido, cifrada con DPAPI local y protegida por ACL para SYSTEM y administradores locales;
  6. registra únicamente el ID y la contraseña cifrada en el inventario del DC.

La contraseña no se imprime, no se pone en el manifiesto y no se añade a los logs. El inventario del servidor usa DPAPI de la máquina y está limitado por ACL a SYSTEM y administradores del servidor.

El mismo flujo se aplica al DC, por lo que también se puede administrar de forma remota. Reejecutar el bootstrap mantiene el ID y la contraseña existentes, y vuelve a validar configuración, tareas, servicio y conectividad sin crear otro registro.

Verificación y operación

En el DC, como administrador:

Get-ScheduledTask SGU-RustDesk-hbbs,SGU-RustDesk-hbbr |
  Select-Object TaskName,State
Get-NetTCPConnection -State Listen -LocalPort 21116,21117
Get-Content C:\ProgramData\SGU\RustDesk\server.json
& C:\ProgramData\SGU\RustDesk\Get-SguRustDeskDevice.ps1

El último comando muestra los nombres, IDs y fecha de alta, sin contraseñas. Si un administrador necesita recuperar una contraseña para conectarse desde el cliente controlador de RustDesk, puede hacerlo explícitamente en la consola del DC:

& C:\ProgramData\SGU\RustDesk\Get-SguRustDeskDevice.ps1 `
  -ComputerName LCI-01 -RevealPassword

Trata esa salida como una credencial administrativa: no la pegues en tickets, capturas ni registros. En RustDesk, conecta usando el ID inventariado y el modo de autenticación por contraseña permanente.

En un cliente, los indicadores locales son:

Get-Service RustDesk
Get-Content C:\ProgramData\SGU\RustDesk\Client\device.json
Test-NetConnection rustdesk.lci.lasalle.mx -Port 21116

Si un agente deja de funcionar, se puede repetir el bootstrap del cliente. El guardián de enrolamiento también repara la configuración de RustDesk al inicio cuando la información del servidor sigue presente en su estado de enrolamiento.

Límites operativos

Este alcance automatiza el cliente Windows entregado por Invoke-SguClientBootstrap.ps1. El bootstrap Linux conserva su inicio PAM/SSSD independiente y usa un flujo propio de inventario: autentica con la cuenta de equipo Kerberos, cifra la contraseña de RustDesk para el controlador y recibe su confirmación desde la cola protegida. No reutiliza ni expone contraseñas de Windows.