Předepisujeme postup pro nouzový přístup k hostitelům SSH pomocí hardwarových klíčů

Předepisujeme postup pro nouzový přístup k hostitelům SSH pomocí hardwarových klíčů

V tomto příspěvku vyvineme postup pro nouzový přístup k hostitelům SSH pomocí hardwarových bezpečnostních klíčů offline. Toto je jen jeden přístup a můžete si jej přizpůsobit tak, aby vyhovoval vašim potřebám. Certifikační autoritu SSH pro naše hostitele uložíme na hardwarový bezpečnostní klíč. Toto schéma bude fungovat na téměř každém OpenSSH, včetně SSH s jediným přihlášením.

K čemu to všechno je? No, tohle je poslední možnost. Jedná se o zadní vrátka, která vám umožní získat přístup k vašemu serveru, když z nějakého důvodu nefunguje nic jiného.

Proč používat certifikáty místo veřejných/soukromých klíčů pro nouzový přístup?

  • Na rozdíl od veřejných klíčů mohou mít certifikáty velmi krátkou životnost. Můžete vygenerovat certifikát, který je platný 1 minutu nebo dokonce 5 sekund. Po uplynutí této doby bude certifikát nepoužitelný pro nová připojení. To je ideální pro nouzový přístup.
  • Můžete si vytvořit certifikát pro jakýkoli účet na svých hostitelích a v případě potřeby takové „jednorázové“ certifikáty poslat kolegům.

Co potřebujete

  • Hardwarové bezpečnostní klíče, které podporují rezidentní klíče.
    Rezidentní klíče jsou kryptografické klíče, které jsou zcela uloženy v bezpečnostním klíči. Někdy jsou chráněny alfanumerickým PINem. Veřejnou část rezidentního klíče lze exportovat z bezpečnostního klíče, volitelně spolu s popisovačem soukromého klíče. Rezidentní klíče podporují například USB klíče Yubikey řady 5. Je vhodné, aby byly určeny pouze pro nouzový přístup k hostiteli. Pro tento příspěvek použiji pouze jeden klíč, ale měli byste mít další pro zálohování.
  • Bezpečné místo pro uložení těchto klíčů.
  • OpenSSH verze 8.2 nebo vyšší na vašem místním počítači a na serverech, ke kterým chcete mít nouzový přístup. Ubuntu 20.04 se dodává s OpenSSH 8.2.
  • (volitelné, ale doporučené) Nástroj CLI pro kontrolu certifikátů.

Trénink

Nejprve musíte vytvořit certifikační autoritu, která bude umístěna na hardwarovém bezpečnostním klíči. Vložte klíč a spusťte:

$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]

Jako komentář (-C) jsem uvedl [chráněno e-mailem]abyste nezapomněli, ke kterému bezpečnostnímu klíči tato certifikační autorita patří.

Kromě přidání klíče do Yubikey budou lokálně vygenerovány dva soubory:

  1. sk-user-ca, popisovač klíče, který odkazuje na soukromý klíč uložený v bezpečnostním klíči,
  2. sk-user-ca.pub, což bude veřejný klíč vaší certifikační autority.

Ale nebojte se, Yubikey uchovává další soukromý klíč, který nelze získat. Proto je zde vše spolehlivé.

Na hostitelích jako root přidejte (pokud jste to ještě neudělali) do své konfigurace SSHD (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

Poté na hostiteli přidejte veřejný klíč (sk-user-ca.pub) do /etc/ssh/ca.pub

Restartujte démona:

# /etc/init.d/ssh restart

Nyní se můžeme pokusit o přístup k hostiteli. Nejprve ale potřebujeme certifikát. Vytvořte pár klíčů, který bude přidružen k certifikátu:

$ ssh-keygen -t ecdsa -f emergency

Certifikáty a páry SSH
Někdy je lákavé použít certifikát jako náhradu za pár veřejný/soukromý klíč. Samotný certifikát však k ověření uživatele nestačí. Ke každému certifikátu je také přiřazen soukromý klíč. To je důvod, proč musíme vygenerovat tento „nouzový“ pár klíčů, než si vystavíme certifikát. Důležité je, že serveru ukážeme podepsaný certifikát s uvedením páru klíčů, pro který máme soukromý klíč.

Výměna veřejného klíče je tedy stále naživu. Funguje to i s certifikáty. Certifikáty jednoduše eliminují potřebu, aby server ukládal veřejné klíče.

Dále vytvořte samotný certifikát. Potřebuji autorizaci uživatele ubuntu v 10minutovém intervalu. Můžete to udělat po svém.

$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency

Budete požádáni o podepsání certifikátu pomocí otisku prstu. Můžete přidat další uživatelská jména oddělená čárkami, například -n ubuntu,carl,ec2-user

To je vše, nyní máte certifikát! Dále musíte zadat správná oprávnění:

$ chmod 600 emergency-cert.pub

Poté si můžete prohlédnout obsah svého certifikátu:

$ step ssh inspect emergency-cert.pub

Takhle vypadá můj:

emergency-cert.pub
        Type: [email protected] user certificate
        Public key: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
        Signing CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
        Key ID: "test-key"
        Serial: 0
        Valid: from 2020-06-24T16:53:03 to 2020-06-24T17:03:03
        Principals:
                ubuntu
        Critical Options: (none)
        Extensions:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

Zde je veřejný klíč nouzový klíč, který jsme vytvořili, a sk-user-ca je spojen s certifikační autoritou.

Nakonec jsme připraveni spustit příkaz SSH:


$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$

  1. Nyní můžete vytvářet certifikáty pro libovolného uživatele na hostiteli, který důvěřuje vaší certifikační autoritě.
  2. Nouzový stav můžete odstranit. Můžete uložit sk-user-ca, ale nemusíte, protože je také na bezpečnostním klíči. Můžete také chtít odstranit původní veřejný klíč PEM ze svých hostitelů (například v ~/.ssh/authorized_keys pro uživatele ubuntu), pokud jste jej použili pro nouzový přístup.

Nouzový přístup: Akční plán

Vložte bezpečnostní klíč a spusťte příkaz:

$ ssh-add -K

Tím se do agenta SSH přidá veřejný klíč a deskriptor klíče certifikační autority.

Nyní exportujte veřejný klíč a vytvořte certifikát:

$ ssh-add -L | tail -1 > sk-user-ca.pub

Vytvořte certifikát s datem vypršení platnosti, například ne delším než hodinu:

$ ssh-keygen -t ecdsa -f emergency
$ ssh-keygen -Us sk-user-ca.pub -I test-key -n [username] -V -5m:+60m emergency
$ chmod 600 emergency-cert.pub

A teď znovu SSH:

$ ssh -i emergency username@host

Pokud váš soubor .ssh/config způsobuje nějaké problémy při připojování, můžete spustit ssh s volbou -F none a obejít jej. Pokud potřebujete poslat certifikát kolegovi, je nejjednodušší a nejbezpečnější možnost Magická červí díra. Potřebujete k tomu pouze dva soubory – v našem případě nouzové a nouzové-cert.pub.

Co se mi na tomto přístupu líbí, je hardwarová podpora. Bezpečnostní klíče můžete uložit do trezoru a nikam nezmizí.

Jako reklama

Epické servery - Je levné VPS s výkonnými procesory od AMD, frekvence jádra CPU až 3.4 GHz. Maximální konfigurace umožňuje vyřešit téměř jakýkoli problém – 128 CPU jader, 512 GB RAM, 4000 GB NVMe. Připoj se k nám!

Předepisujeme postup pro nouzový přístup k hostitelům SSH pomocí hardwarových klíčů

Zdroj: www.habr.com

Přidat komentář