96 lines
4.0 KiB
Markdown
96 lines
4.0 KiB
Markdown
# 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.
|