INTEGRITY Dokumentace

Krátkodobé certifikáty (starší verze)

Cloudflare Access dokáže nahradit tradiční SSH klíče krátkodobými certifikáty, které se uživatelům vydávají na základě tokenu z jejich přihlášení do Access. V tradičním modelu si uživatelé vygenerují pár SSH klíčů a administrátoři udělují přístup k jednotlivým SSH serverům nahráním veřejných klíčů uživatelů na tyto servery. Tyto SSH klíče pak na serverech zůstávají beze změny klidně měsíce nebo roky. Cloudflare Access tuto správu SSH klíčů odbourává a zároveň zvyšuje zabezpečení tím, že dlouhodobé SSH klíče nahrazuje krátkodobými SSH certifikáty.

1. Zabezpečte server za Cloudflare Access

Krátkodobé certifikáty Cloudflare Access fungují s jakýmkoli moderním SSH serverem, ať už je za Access, nebo ne. Server za Access ale doporučujeme umístit kvůli vyššímu zabezpečení a dalším funkcím, jako je auditovatelnost a terminály přímo v prohlížeči.

Chcete-li zabezpečit svůj server za Cloudflare Access:

  1. Připojení serveru ke Cloudflare jako publikovanou aplikaci.
  2. Vytvořte self-hosted aplikace Access pro server.

2. Zajistěte, aby se uživatelská jména Unix shodovala s identitami uživatele SSO

Cloudflare Access převezme identitu z tokenu a pomocí krátkodobých certifikátů autorizuje uživatele v cílové infrastruktuře.

Nejjednodušší nastavení je takové, kde uživatelské jméno Unix odpovídá prefixu e-mailové adresy uživatele. Vydané krátkodobé certifikáty budou platné pro prefix e-mailové adresy uživatele. Pokud je například uživatel ve vaší organizaci Okta nebo GSuite zaregistrován jako [email protected], přihlásili by se k serveru SSH jako jdoe.

Pro účely testování můžete spustit následující příkaz a vytvořit uživatele Unix na daném počítači:

sudo adduser jdoe

Pokročilé nastavení: Odlišná uživatelská jména

Certifikáty SSH obsahují jeden nebo více principals v podpisu, které určují uživatelská jména v Unixu, pod nimiž se certifikát smí přihlásit. Cloudflare Access vždy nastaví principála na předponu e-mailové adresy uživatele. Například když [email protected] pokusí připojit, Access vydá krátkodobě platný certifikát autorizovaný pro daný principal jdoe.

SSH servery ve výchozím nastavení ověřují uživatelské jméno Unixu oproti principálům uvedeným v certifikátu uživatele. SSH server můžete nakonfigurovat tak, aby přijímal i principály, které se s uživatelským jménem Unixu neshodují.

Uživatelské jméno odpovídá jinému e-mailu

Chcete-li povolit [email protected] a přihlásit se jako uživatel johndoe, přidejte následující do serveru /etc/ssh/sshd_config:

Match user johndoe
  AuthorizedPrincipalsCommand /bin/echo 'jdoe'
  AuthorizedPrincipalsCommandUser nobody

Tím se serveru SSH sdělí, že když se někdo pokusí ověřit jako uživatel johndoe, zkontrolujte jejich certifikát pro principal jdoe. Tím by se uživateli umožnilo [email protected] k přihlášení na server pomocí příkazu, například:

ssh johndoe@server

Uživatelské jméno odpovídá více e-mailům

Chcete-li více e-mailovým adresám povolit přihlášení jako vmuser, přidejte následující do serveru /etc/ssh/sshd_config:

Match user vmuser
  AuthorizedPrincipalsFile /etc/ssh/vmusers-list.txt

Tím se serveru SSH sdělí, aby ze souboru načetl seznam principals. Poté v /etc/ssh/vmusers-list.txt, uveďte předpony e-mailů, které se mohou přihlásit jako vmuser, jeden na řádek:

jdoe
bwayne
robin

Uživatelské jméno odpovídá všem uživatelům

Chcete-li libovolnému uživateli Access povolit přihlášení jako vmuser, přidejte následující příkaz do serveru /etc/ssh/sshd_config:

Match user vmuser
  AuthorizedPrincipalsCommand /bin/bash -c "echo '%t %k' | ssh-keygen -L -f - | grep -A1 Principals"
  AuthorizedPrincipalsCommandUser nobody

Tento příkaz vezme certifikát předložený uživatelem a autorizuje jakéhokoli principala, který je na něm uveden.

Povolit všechny uživatele

Chcete-li libovolnému uživateli Access povolit přihlášení s libovolným uživatelským jménem, přidejte následující do /etc/ssh/sshd_config:

AuthorizedPrincipalsCommand /bin/bash -c "echo '%t %k' | ssh-keygen -L -f - | grep -A1 Principals"
AuthorizedPrincipalsCommandUser nobody

Zabezpečení vašeho serveru tak bude zcela záviset na konfiguraci Access, proto se ujistěte, že vaše Zásady Access jsou správně nakonfigurovány.

3. Vygenerujte veřejný klíč krátkodobého certifikátu

  1. V Cloudflare dashboard, přejděte na Zero Trust > Řízení přístupu > Přihlašovací údaje služby > SSH.

  2. Vyberte Přidejte certifikát.

  3. V Aplikace rozbalovací nabídce vyberte aplikaci Access, která představuje váš SSH server.

  4. Vyberte Vygenerujte certifikát. V tabulce krátkodobých certifikátů se zobrazí nový řádek s názvem vaší aplikace Access.

  5. Vyberte krátkodobý certifikát pro vaši aplikaci.

  6. Zkopírujte jeho veřejný klíč CA. K tomuto veřejnému klíči a jeho zkopírování se můžete kdykoli vrátit.

4. Uložte svůj veřejný klíč

  1. Zkopírujte veřejný klíč vygenerovaný v dashboardu v kroku 3.
  1. Pomocí následujícího příkazu přejděte do adresáře konfigurace SSH na vzdáleném cílovém počítači:

    cd /etc/ssh
  2. Jakmile se tam dostanete, můžete pomocí následujícího příkazu vygenerovat soubor a zároveň otevřít textový editor pro zadání nebo vložení veřejného klíče.

    vim ca.pub
  3. V ca.pub soubor a vložte veřejný klíč bez jakýchkoli úprav.

    ca.pub
    ecdsa-sha2-nistp256 <redacted> [email protected]

    ca.pub soubor může obsahovat více klíčů, každý na samostatném řádku. Prázdné řádky a komentáře začínající # jsou také povoleny.

  4. Uložte ca.pub soubor. V některých systémech může být podle vašich oprávnění nutné použít následující příkaz k vynucení uložení souboru:

    :w !sudo tee %
    :q!

5. Upravte svůj sshd_config soubor

Nakonfigurujte svůj server SSH tak, aby důvěřoval Cloudflare SSH CA, a to úpravou sshd_config soubor na vzdáleném cílovém počítači.

  1. Když se nacházíte v /etc/ssh adresář na vzdáleném počítači otevřete sshd_config .

     sudo vim /etc/ssh/sshd_config
  2. Stiskněte i přejít do režimu vkládání a poté přidat následující řádky na začátek souboru, nad všechny ostatní direktivy:

    PubkeyAuthentication yes
    TrustedUserCAKeys /etc/ssh/ca.pub
  3. Stiskněte esc a poté zadejte :x a stiskněte Enter a uložit a ukončit.

6. Restartujte server SSH

Jakmile upravíte svůj sshd konfiguraci restartujte službu SSH na vzdáleném počítači, aby se změny projevily.

Pro Debian/Ubuntu:

sudo systemctl reload ssh

Pro CentOS/RHEL 7 a novější:

sudo systemctl reload sshd

7. Připojte se jako uživatel

Konfigurace SSH klienta

Na straně klienta nakonfigurovat vaše zařízení k použití Cloudflare Access pro přístup k chráněnému počítači. Chcete-li použít krátkodobé certifikáty, musíte do konfiguračního souboru SSH zahrnout následující nastavení (~/.ssh/config).

Chcete-li ušetřit čas, můžete pomocí následujícího příkazu cloudflared vypsat požadovaný konfigurační příkaz:

cloudflared access ssh-config --hostname vm.example.com --short-lived-cert

Pokud dáváte přednost ruční konfiguraci, zde je příklad vygenerované konfigurace SSH:

Match host vm.example.com exec "/usr/local/bin/cloudflared access ssh-gen --hostname %h"
    HostName vm.example.com
    ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h
    IdentityFile ~/.cloudflared/vm.example.com-cf_key
    CertificateFile ~/.cloudflared/vm.example.com-cf_key-cert.pub

Připojení prostřednictvím terminálu v prohlížeči

Koncoví uživatelé se mohou k relaci SSH připojit bez jakékoli konfigurace pomocí terminálu Cloudflare v prohlížeči. Přečtěte si, jak to povolit, v Terminál vykreslovaný v prohlížeči.

Terminál v prohlížeči ve výchozím nastavení vyzve uživatele k přihlášení jménem a heslem. Pokud chcete použít ověřování založené na certifikátu, ujistěte se, že máte vytvořil krátkodobý certifikát pro konkrétní aplikaci Access nakonfigurovanou pro SSH vykreslované v prohlížeči.


Váš server SSH je nyní chráněný za Cloudflare Access: než se uživatelé budou moci připojit, budou vyzváni k ověření u vašeho poskytovatele identity.