# RDP-FIDO-GATE — instalação e configuração (passo a passo)

Área de Trabalho Remota (RDP) segura com uma **barreira obrigatória de chave física FIDO2/WebAuthn**. A porta RDP
permanece bloqueada pelo firewall o tempo todo e abre **somente para o seu IP, por cerca de 90 segundos**, depois que você toca
a chave. Requer Windows 10 1903+ (WebAuthn + Windows Firewall). Não há serviço hospedado — você
baixa e instala por conta própria.

Dois componentes e suas portas:

| Componente | Onde é executado | Portas |
|-----------|---------------|-------|
| **Gate** | máquina de destino (o PC ao qual você se conecta) | **7440/TCP** — controle + confirmação FIDO; **3389/TCP** — RDP (aberto sob demanda) |
| **Client** | sua máquina | conexões de saída para as portas 7440 e 3389 do host |

---

## Step 1. Host — instalar o gate

1. Baixe **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)** na máquina de destino e execute-o (o Windows pedirá confirmação de administrador).
2. O instalador habilita a Remote Desktop (com NLA), vincula um certificado TLS à porta do gate **7440** e registra e inicia o serviço do gate. A porta RDP continua funcionando como antes — ela só fecha no momento do registro da primeira chave.
3. A última página do instalador mostra um **código de registro de uso único** (válido por 15 minutos, com botão "Copiar código"), além dos endereços da máquina e da porta do gate.
4. **Anote:** o endereço do host (nome / IP público), a porta **7440** e o **código**. Se o código expirar, execute `RdpFidoGate.exe code` como administrador.

Instalação silenciosa (por exemplo, de um sistema de gerenciamento): `msiexec /i RdpFidoGate-Setup.msi /qn`

---

## Step 2. Encaminhamento de portas no roteador (se o host estiver atrás de NAT/um roteador) — OBRIGATÓRIO para acesso pela internet

Se você se conecta **pela internet** e a máquina de destino fica atrás de um roteador doméstico/de escritório, você
precisa **encaminhar duas portas** no roteador para o endereço LAN do host. Sem isso o cliente não alcança
nem o gate nem o RDP.

Encaminhe (Port Forwarding / Virtual Servers / NAT na administração do roteador):

| Porta externa | Protocolo | → IP interno (LAN do host) | Porta interna |
|---------------|----------|--------------------------|---------------|
| **7440** | TCP | `192.168.x.x` (IP LAN do host) | **7440** |
| **3389** | TCP | mesmo IP LAN do host | **3389** |

Procedimento:
1. Encontre o IP LAN do host: `ipconfig` → "Endereço IPv4" (ex.: `192.168.1.50`).
2. **Reserve esse endereço** para o host (reserva DHCP por MAC no roteador) — caso contrário ele pode mudar.
3. No roteador: **Port Forwarding / Virtual Servers** → adicione as duas regras da tabela
   (porta externa = porta interna, protocolo TCP, IP interno = LAN do host).
4. Encontre o seu **IP público** (no host abra `https://api.ipify.org`, ou o "WAN IP" do roteador). Se o seu
   IP for **dinâmico**, configure **DDNS** (no roteador ou via no-ip/DuckDNS) e use o nome DDNS em vez do IP.

> Segurança: apenas o gate (7440) escuta externamente. O RDP (3389) fica **fechado** de fora até você
> confirmar com a chave — então ele abre de forma estreita, apenas para o seu IP, por ~90s. Encaminhar a 3389 não
> concede acesso por si só; apenas deixa a "janela" temporária passar pelo roteador.

---

## Step 3. Client — instalar e registrar

1. Instale o cliente: `RdpFidoClient.exe` (o `RdpFidoGate.exe` correspondente está incluído).
2. **Ativação** via AccountServer: informe o seu e-mail → um código é enviado a você por e-mail → digite-o.
   Período de tolerância de ativação de 14 dias; nível gratuito = até 10 sessões salvas, pago = sem limite.
3. **Adicionar uma sessão:**
   - Endereço: o IP público ou o nome DDNS do host (do Step 2), ou o endereço LAN se você estiver na mesma rede.
   - Porta do gate: **7440**.
   - Digite o **código de uso único** do Step 1 e **registre sua chave FIDO2** (toque).

---

## Step 4. Conectar

Escolha a sessão → **toque a chave** → o gate a verifica e **abre a 3389 para o seu IP atual por
~90s** → o cliente inicia o `mstsc` e conecta você automaticamente. A cada 30s o gate reaplica o
bloqueio, de modo que a janela permanece estreita e restrita ao IP.

---

## Verificação e solução de problemas

- A partir do cliente: `Test-NetConnection <public-ip-or-DDNS> -Port 7440` → deve dar
  `TcpTestSucceeded : True`. Se `False` — a porta 7440 não está encaminhada, ou o firewall do host a bloqueia.
- A porta **3389 fica fechada de fora até você confirmar com a chave** — isso é esperado (não a teste antes do toque).
- "A sessão não abre": verifique se 1) o serviço do gate está em execução no host, 2) **ambas** as portas
  estão encaminhadas no roteador para o IP LAN atual do host, 3) o IP público não mudou (use DDNS se for dinâmico).
- Vários hosts atrás de um roteador: use portas externas distintas (ex.: host-2 → externa 7441→7440,
  3390→3389) e digite essas portas externas na sessão do cliente.

---

## Desinstalação

No host, como administrador: `powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
(remove o serviço, restaura as regras do firewall). Depois, opcionalmente, remova as regras de encaminhamento de portas no roteador.
