INTEGRITY Dokumentace

Vykreslení klienta VNC v prohlížeči

Server Virtual Network Computer (VNC) poskytuje uživatelům vzdálený přístup k desktopovému prostředí počítače. Cloudflare dokáže vykreslit terminál VNC v prohlížeči bez nutnosti jakéhokoli softwaru nebo konfigurace na straně klienta.

VNC vykreslované v prohlížeči vyžaduje připojení VNC serveru ke Cloudflare a směrování provozu přes veřejný hostname. Pro přístup k VNC serveru uživatelé přejdou na URL adresu veřejného hostname a přihlásí se přes Cloudflare Access pomocí vámi nakonfigurovaného poskytovatele identity. Cloudflare použije vaše Zásady Access a v případě, že je uživateli povolen přístup, vykreslí klienta VNC v jeho prohlížeči.

Předpoklady

1. Nastavte server VNC

Pro účely demonstrace vytvoříme server TightVNC na virtuálním stroji (VM) Ubuntu hostovaném v Google Cloud Project (GCP). Server VNC nakonfigurujeme tak, aby běžel XFCE, odlehčené desktopové prostředí vhodné pro vzdálený přístup. Pokud už server VNC máte nainstalovaný, můžete tento krok přeskočit a přejděte na krok 2.

  1. Otevřete okno terminálu pro svůj virtuální počítač s Ubuntu.

  2. Nainstalujte XFCE a TightVNC spuštěním následujícího příkazu:

    sudo apt update
    sudo apt install xfce4 xfce4-goodies dbus-x11 tightvncserver -y

    Tento příkaz nainstaluje desktopové prostředí, několik užitečných nástrojů a software serveru VNC.

  3. Chcete-li inicializovat server VNC:

    1. Vytvořte instanci serveru VNC:

      vncserver
    2. Zobrazí se výzva k nastavení hesla. Toto heslo se použije k připojení k vašemu serveru VNC. Je omezeno na 8 znaků.

      TightVNC nyní vytvoří konfigurační soubory a spustí relaci VNC na displeji :1 (který používá port 5901).

    3. Budete dotázáni, zda chcete vytvořit heslo pouze pro čtení. Můžete stisknout n pro ne.

    4. Ukončete tuto počáteční relaci, abyste mohli upravit její konfiguraci:

      vncserver -kill :1
  4. Nakonfigurujte VNC pro spuštění plochy XFCE:

    1. Vytvořte adresář konfigurace VNC, pokud chybí:
    mkdir -p ~/.vnc
    1. Otevřete xstartup soubor pomocí textového editoru. Například,
    vim ~/.vnc/xstartup
    1. Aktualizujte soubor podle následující konfigurace:
    #!/bin/sh
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    startxfce4
    1. Nastavte soubor jako spustitelný:
    chmod +x ~/.vnc/xstartup
  5. Znovu spusťte server VNC:

    vncserver -localhost :1

    -localhost příznak zajišťuje, že server VNC naslouchá pouze připojením z daného virtuálního počítače, nikoli z veřejného internetu. Server VNC nyní běží na portu 5901, ale je přístupná pouze z localhost (127.0.0.1) uvnitř VM.

  6. (Doporučeno) Otestujte server VNC pomocí existujícího klienta VNC a ověřte, zda nechybí nějaké balíčky nebo změny konfigurace. Pokud chcete například otestovat server VNC hostovaný na GCP:

    1. Otevřete terminál na klientském počítači.

    2. Připojení k serveru VNC přes SSH s přesměrováním místního portu 5901 na naslouchací port serveru VNC:

      gcloud compute ssh [YOUR_VM_NAME] --zone=[YOUR_ZONE] -- -L 5901:localhost:5901
    3. Otevřete preferovanou aplikaci prohlížeče VNC.

    4. V prohlížeči VNC se připojte na adresu localhost:5901 a zadejte heslo svého serveru VNC.

    Měli byste vidět plochu Ubuntu VM.

  7. (Volitelné) Nakonfigurujte server VNC tak, aby se spouštěl při startu systému:

    1. Najděte úplnou cestu k vncserver příkaz:

      which vncserver
      /usr/bin/vncserver
    2. Vytvořte nový konfigurační soubor služby:

    sudo vim /etc/systemd/system/[email protected]
    1. Zkopírujte a vložte následující obsah. Nahraďte [YOUR_USERNAME] s uživatelem serveru VNC. V případě potřeby aktualizujte /usr/bin/vncserver do vašeho vncserver cesta.

      [Unit]
      Description=Start TightVNC server at startup
      After=syslog.target network.target
      
      [Service]
      Type=forking
      User=[YOUR_USERNAME]
      WorkingDirectory=/home/[YOUR_USERNAME]
      
      PIDFile=/home/[YOUR_USERNAME]/.vnc/%H:%i.pid
      
      ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
      ExecStart=/usr/bin/vncserver -localhost :%i
      ExecStop=/usr/bin/vncserver -kill :%i
      
      [Install]
      WantedBy=multi-user.target
      1. Znovu načtěte systemd a načíst nový soubor služby:
      sudo systemctl daemon-reload
      1. Povolte spouštění služby při startu systému:
      sudo systemctl enable [email protected]

      1 proměnná konfiguruje službu VNC tak, aby používala displej :1 (který běží na portu 5901).

      1. Standardně systemd uživatelské služby běží pouze tehdy, když je daný uživatel přihlášen. Aby se vaše služba VNC spustila při startu systému (ještě před přihlášením), povolte pro svého uživatele linger:
      sudo loginctl enable-linger [YOUR_USERNAME]
      1. Spusťte službu:
      sudo systemctl start [email protected]
      1. Zkontrolujte jeho stav:
      sudo systemctl status [email protected]

      Server VNC se nyní spustí automaticky při každém spuštění virtuálního stroje.

2. Připojte server k Cloudflare

  1. Vytvořte Cloudflare Tunnel podle průvodce nastavením dashboardu.

  2. Přejděte na Sítě > Tunnels, poté vyberte svůj tunel.

    Přejděte na Tunnels ↗
  3. Na Trasy kartě vyberte Přidat trasu, pak vyberte Publikovaná aplikace.

  4. Vyberte doménu z rozevírací nabídky a zadejte libovolnou subdoménu (například vnc.example.com).

  5. Pro Služba, vyberte TCP a zadejte localhost:<5901>. Pokud se server VNC nachází na jiném počítači, než na kterém jste nainstalovali tunel, zadejte <SERVER_IP>:5901.

    Nahraďte 5901 s naslouchacím portem vašeho serveru VNC. Naslouchací port VNC zjistíte spuštěním sudo ss -lnpt a vyhledejte vnc v seznamu procesů.

  6. Uložte trasu.

Váš server VNC je nyní připravený přijímat příchozí požadavky od Cloudflare.

3. Vytvořte aplikaci Access pro VNC

Vytvořte aplikaci Cloudflare Access, ke které se uživatelé dostanou přes prohlížeč:

  1. V Cloudflare dashboard, přejděte na Zero Trust > Řízení přístupu > Aplikace.

  2. Vyberte Vytvořit novou aplikaci.

  3. Vyberte Vlastní hosting a soukromé.

  4. Vyberte Přidejte veřejný hostname a zadejte hostitelský název publikované aplikace (vnc.example.com).

  5. Zapněte Povolit přístup prostřednictvím relací RDP, SSH nebo VNC v prohlížeči, pak vyberte VNC.

  6. V části Zásady Access, přidejte existující zásadu nebo vytvořit novou zásadu řídit, kdo se může připojit k vaší aplikaci. Všechny aplikace Access ve výchozím nastavení odmítají přístup (deny by default): uživatel musí nejprve odpovídat zásadě Allow, aby mu byl přístup udělen.

  7. Vyberte Vytvořit.

4. Připojte se jako uživatel

Uživatelé nyní mají přístup ke vzdálenému desktopovému prostředí přímo ve webovém prohlížeči bez nutnosti instalovat jakýkoli software klienta VNC.

Chcete-li se připojit k serveru VNC:

  1. Otevřete prohlížeč a přejděte na veřejnou URL adresu hostname (například https://vnc.example.com).
  2. Přihlaste se do Cloudflare Access pomocí nakonfigurovaného poskytovatele identity.
  3. Zadejte heslo serveru VNC.

Ve svém prohlížeči byste měli vidět vykreslenou plochu vzdáleného VNC serveru. Všechna připojení jsou zabezpečena prostřednictvím sítě Cloudflare a přístup řídí vaše zásady Access.