Add self-hosted RustDesk bootstrap management
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# 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`. Los clientes Linux conservan su bootstrap PAM/
|
||||
SSSD independiente; su integración con RustDesk requiere un flujo de inventario
|
||||
de credenciales propio y no reutiliza ni expone las contraseñas de Windows.
|
||||
Reference in New Issue
Block a user