# RDP-FIDO-GATE — instalación y configuración (paso a paso)

Escritorio remoto (RDP) seguro con una **barrera obligatoria de llave física FIDO2/WebAuthn**. El puerto RDP
permanece bloqueado por el firewall en todo momento y se abre **solo para tu IP, durante unos 90 segundos**, después de que toques
la llave. Requiere Windows 10 1903+ (WebAuthn + Windows Firewall). No hay servicio alojado — tú lo
descargas e instalas por tu cuenta.

Dos componentes y sus puertos:

| Componente | Dónde se ejecuta | Puertos |
|-----------|---------------|-------|
| **Gate** | máquina de destino (el PC al que te conectas) | **7440/TCP** — control + confirmación FIDO; **3389/TCP** — RDP (se abre bajo demanda) |
| **Client** | tu máquina | conexiones salientes al 7440 y 3389 del host |

---

## Step 1. Host — instalar el gate

1. Descarga **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)** en la máquina de destino y ejecútalo (Windows pedirá confirmación de administrador).
2. El instalador habilita Remote Desktop (con NLA), vincula un certificado TLS al puerto del gate **7440** y registra e inicia el servicio del gate. El puerto RDP sigue funcionando como antes: se cierra solo al registrar la primera llave.
3. La última página del instalador muestra un **código de registro de un solo uso** (válido 15 minutos, con botón «Copiar código»), además de las direcciones de la máquina y el puerto del gate.
4. **Anota:** la dirección del host (nombre / IP pública), el puerto **7440** y el **código**. Si el código caduca, ejecuta `RdpFidoGate.exe code` como administrador.

Instalación silenciosa (p. ej., desde un sistema de gestión): `msiexec /i RdpFidoGate-Setup.msi /qn`

---

## Step 2. Redirección de puertos del router (si el host está detrás de NAT/un router) — OBLIGATORIO para acceso desde internet

Si te conectas **desde internet** y la máquina de destino está detrás de un router doméstico/de oficina, debes
**redirigir dos puertos** en el router hacia la dirección LAN del host. Sin esto, el cliente no alcanza
ni el gate ni RDP.

Redirige (Port Forwarding / Virtual Servers / NAT en la administración del router):

| Puerto externo | Protocolo | → IP interna (LAN del host) | Puerto interno |
|---------------|----------|--------------------------|---------------|
| **7440** | TCP | `192.168.x.x` (IP LAN del host) | **7440** |
| **3389** | TCP | la misma IP LAN del host | **3389** |

Procedimiento:
1. Encuentra la IP LAN del host: `ipconfig` → "Dirección IPv4" (p. ej. `192.168.1.50`).
2. **Reserva esa dirección** para el host (reserva DHCP por MAC en el router) — de lo contrario puede cambiar.
3. En el router: **Port Forwarding / Virtual Servers** → añade las dos reglas de la tabla
   (puerto externo = puerto interno, protocolo TCP, IP interna = LAN del host).
4. Encuentra tu **IP pública** (en el host abre `https://api.ipify.org`, o la "WAN IP" del router). Si tu
   IP es **dinámica**, configura **DDNS** (en el router o mediante no-ip/DuckDNS) y usa el nombre DDNS en lugar de la IP.

> Seguridad: solo el gate (7440) escucha externamente. RDP (3389) está **cerrado** desde fuera hasta que
> confirmes con la llave — entonces se abre de forma estrecha, solo para tu IP, durante ~90s. Redirigir el 3389 no
> concede acceso por sí mismo; solo deja que la "ventana" temporal pase a través del router.

---

## Step 3. Client — instalar y registrar

1. Instala el cliente: `RdpFidoClient.exe` (el `RdpFidoGate.exe` correspondiente está incluido).
2. **Activación** mediante AccountServer: introduce tu correo electrónico → se te envía un código por correo → introdúcelo.
   Periodo de gracia de activación de 14 días; nivel gratuito = hasta 10 sesiones guardadas, de pago = sin límite.
3. **Añadir una sesión:**
   - Dirección: la IP pública o el nombre DDNS del host (del Step 2), o la dirección LAN si estás en la misma red.
   - Puerto del gate: **7440**.
   - Introduce el **código de un solo uso** del Step 1 y **registra tu llave FIDO2** (toca).

---

## Step 4. Conectar

Elige la sesión → **toca la llave** → el gate la verifica y **abre el 3389 para tu IP actual durante
~90s** → el cliente lanza `mstsc` y te conecta automáticamente. Cada 30s el gate reafirma el
bloqueo, de modo que la ventana permanece estrecha y limitada a tu IP.

---

## Comprobación y resolución de problemas

- Desde el cliente: `Test-NetConnection <public-ip-or-DDNS> -Port 7440` → debería dar
  `TcpTestSucceeded : True`. Si es `False` — el puerto 7440 no está redirigido, o el firewall del host lo bloquea.
- El puerto **3389 está cerrado desde fuera hasta que confirmes con la llave** — eso es lo esperado (no lo pruebes antes del toque).
- "La sesión no se abre": comprueba que 1) el servicio del gate está en ejecución en el host, 2) **ambos** puertos
  están redirigidos en el router a la IP LAN actual del host, 3) la IP pública no ha cambiado (usa DDNS si es dinámica).
- Varios hosts detrás de un router: usa puertos externos distintos (p. ej. host-2 → externo 7441→7440,
  3390→3389) e introduce esos puertos externos en la sesión del cliente.

---

## Desinstalación

En el host, como administrador: `powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
(elimina el servicio, restaura las reglas del firewall). Luego, opcionalmente, elimina las reglas de redirección de puertos en el router.
