# 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: ```powershell 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: ```powershell & 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: ```powershell 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.