# RDP-FIDO-GATE — instalacja i konfiguracja (krok po kroku)

Bezpieczny pulpit zdalny (RDP) z **obowiązkową bramką sprzętowego klucza FIDO2/WebAuthn**. Port RDP
przez cały czas pozostaje zablokowany na zaporze i otwiera się **tylko dla Twojego IP, na około 90 sekund**, po dotknięciu
klucza. Wymaga Windows 10 1903+ (WebAuthn + Windows Firewall). Nie ma usługi hostowanej — pobierasz
i instalujesz to samodzielnie.

Dwa komponenty i ich porty:

| Komponent | Gdzie działa | Porty |
|-----------|---------------|-------|
| **Gate** | maszyna docelowa (komputer, z którym się łączysz) | **7440/TCP** — sterowanie + potwierdzenie FIDO; **3389/TCP** — RDP (otwierany na żądanie) |
| **Client** | Twoja maszyna | połączenia wychodzące do portów 7440 i 3389 hosta |

---

## Step 1. Host — instalacja bramki

1. Pobierz **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)** na maszynie docelowej i uruchom go (Windows poprosi o potwierdzenie administratora).
2. Instalator włącza Remote Desktop (z NLA), wiąże certyfikat TLS z portem bramki **7440** oraz rejestruje i uruchamia usługę bramki. Port RDP działa dalej jak dotychczas — zamknie się dopiero przy rejestracji pierwszego klucza.
3. Ostatnia strona instalatora pokazuje **jednorazowy kod rejestracji klucza** (ważny 15 minut, z przyciskiem „Kopiuj kod”), a także adresy maszyny i port bramki.
4. **Zapisz:** adres hosta (nazwa / publiczne IP), port **7440** oraz **kod**. Jeśli kod wygasł, uruchom `RdpFidoGate.exe code` jako administrator.

Cicha instalacja (np. z systemu zarządzania): `msiexec /i RdpFidoGate-Setup.msi /qn`

---

## Step 2. Przekierowanie portów w routerze (jeśli host jest za NAT/routerem) — WYMAGANE do dostępu z internetu

Jeśli łączysz się **z internetu**, a maszyna docelowa znajduje się za routerem domowym/biurowym, musisz
**przekierować dwa porty** na routerze do adresu LAN hosta. Bez tego klient nie dotrze
ani do bramki, ani do RDP.

Przekieruj (Port Forwarding / Virtual Servers / NAT w panelu administracyjnym routera):

| Port zewnętrzny | Protokół | → IP wewnętrzne (LAN hosta) | Port wewnętrzny |
|---------------|----------|--------------------------|---------------|
| **7440** | TCP | `192.168.x.x` (IP LAN hosta) | **7440** |
| **3389** | TCP | ten sam IP LAN hosta | **3389** |

Procedura:
1. Znajdź IP LAN hosta: `ipconfig` → "Adres IPv4" (np. `192.168.1.50`).
2. **Zarezerwuj ten adres** dla hosta (rezerwacja DHCP według MAC w routerze) — w przeciwnym razie może się zmienić.
3. W routerze: **Port Forwarding / Virtual Servers** → dodaj dwie reguły z tabeli
   (port zewnętrzny = port wewnętrzny, protokół TCP, IP wewnętrzne = LAN hosta).
4. Znajdź swoje **publiczne IP** (na hoście otwórz `https://api.ipify.org` lub "WAN IP" routera). Jeśli Twoje
   IP jest **dynamiczne**, skonfiguruj **DDNS** (w routerze lub przez no-ip/DuckDNS) i używaj nazwy DDNS zamiast IP.

> Bezpieczeństwo: tylko bramka (7440) nasłuchuje na zewnątrz. RDP (3389) jest **zamknięty** z zewnątrz, dopóki nie
> potwierdzisz kluczem — wtedy otwiera się wąsko, tylko dla Twojego IP, na ~90s. Przekierowanie 3389 samo w sobie nie
> udziela dostępu; pozwala jedynie tymczasowemu "oknu" przejść przez router.

---

## Step 3. Client — instalacja i rejestracja

1. Zainstaluj klienta: `RdpFidoClient.exe` (pasujący `RdpFidoGate.exe` jest dołączony).
2. **Aktywacja** przez AccountServer: podaj swój e-mail → kod zostanie wysłany do Ciebie mailem → wpisz go.
   14-dniowy okres karencji aktywacji; poziom darmowy = do 10 zapisanych sesji, płatny = bez limitu.
3. **Dodawanie sesji:**
   - Adres: publiczne IP lub nazwa DDNS hosta (ze Step 2), albo adres LAN, jeśli jesteś w tej samej sieci.
   - Port bramki: **7440**.
   - Wpisz **kod jednorazowy** ze Step 1 i **zarejestruj swój klucz FIDO2** (dotknij).

---

## Step 4. Połączenie

Wybierz sesję → **dotknij klucza** → bramka go weryfikuje i **otwiera 3389 dla Twojego bieżącego IP na
~90s** → klient uruchamia `mstsc` i łączy Cię automatycznie. Co 30s bramka ponownie egzekwuje
blokadę, więc okno pozostaje wąskie i ograniczone do IP.

---

## Sprawdzenie i rozwiązywanie problemów

- Z klienta: `Test-NetConnection <public-ip-or-DDNS> -Port 7440` → powinno dać
  `TcpTestSucceeded : True`. Jeśli `False` — port 7440 nie jest przekierowany albo zapora hosta go blokuje.
- Port **3389 jest zamknięty z zewnątrz, dopóki nie potwierdzisz kluczem** — to jest oczekiwane (nie testuj go przed dotknięciem).
- "Sesja się nie otwiera": sprawdź, czy 1) usługa bramki działa na hoście, 2) **oba** porty
  są przekierowane na routerze do bieżącego IP LAN hosta, 3) publiczne IP się nie zmieniło (użyj DDNS, jeśli jest dynamiczne).
- Kilka hostów za jednym routerem: użyj różnych portów zewnętrznych (np. host-2 → zewnętrzny 7441→7440,
  3390→3389) i wpisz te porty zewnętrzne w sesji klienta.

---

## Odinstalowanie

Na hoście, jako administrator: `powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
(usuwa usługę, przywraca reguły zapory). Następnie opcjonalnie usuń reguły przekierowania portów na routerze.
