Vypracováváme proceduru nouzového přístupu k hostitelům SSH s hardwarovými klíči

Vypracováváme proceduru nouzového přístupu k hostitelům SSH s hardwarovými klíči

V tomto příspěvku vypracujeme postup pro nouzový přístup k SSH hostitelům pomocí bezpečnostních hardwarových klíčů v offline režimu. To je pouze jeden z přístupů a můžete si ho přizpůsobit podle svých potřeb. Budeme uchovávat certifikační autoritu SSH pro naše hostitele na bezpečnostním hardwarovém klíči. Tento systém bude fungovat prakticky na jakémkoli OpenSSH, včetně SSH s jednotným přihlášením.

Proč to všechno? No, je to varianta pro krajní případy. Je to zadní vrátka, která vám umožní přístup k vašemu serveru v případě, že z nějakého důvodu nic jiného nefunguje.

Proč používat certifikáty místo otevřených / uzavřených klíčů pro nouzový přístup?

  • Na rozdíl od otevřených klíčů může doba platnosti certifikátů být velmi krátká. Můžete vygenerovat certifikát, který je platný na 1 minutu nebo dokonce 5 sekund. Po vypršení této doby už certifikát nebude použitelný pro nová připojení. To je ideální pro nouzový přístup.
  • Můžete vytvořit certifikát pro libovolný účet na svých hostitelích a v případě potřeby posílat takovéto "jednorázové" certifikáty kolegům.

Co budete potřebovat

  • Bezpečnostní hardwarové klíče, které podporují rezidentní klíče.
    Rezidentní klíče jsou kryptografické klíče, které jsou plně uchovávány uvnitř bezpečnostního klíče. Někdy jsou chráněny alfanumerickým PIN kódem. Veřejná část rezidentního klíče může být exportována z bezpečnostního klíče, pokud je to nutné, společně s popisem uzavřeného klíče. Například USB klíče série Yubikey 5 podporují rezidentní klíče. Je žádoucí, aby byly určeny pouze pro nouzový přístup k hostiteli. Pro tento příspěvek budu používat pouze jeden klíč, ale měli byste mít další jako zálohu.
  • Bezpečné místo pro ukládání 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 získat nouzový přístup. Ubuntu 20.04 dodává OpenSSH 8.2.
  • (není nutné, ale žádoucí) CLI nástroj pro ověřování certifikátů.

Příprava

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

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

Jako komentář (-C) jsem zadal yubikey-9-512-742@smallstep.com, abych nezapomněl, k jakému bezpečnostnímu klíči se tento certifikační orgán vztahuje.

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

  1. sk-user-ca, deskriptor klíče, který odkazuje na soukromý klíč uložený v bezpečnostním klíči,
  2. sk-user-ca.pub, který bude veřejným klíčem pro váš certifikační orgán.

Ale nebojte se, na Yubikey je uložen ještě jeden soukromý klíč, který nelze extrahovat. Takže je to tady všechno spolehlivé.

Na hostitelích jako uživatel root přidejte (pokud jste ještě nepřidali) do konfigurace vašeho SSHD (/etc/ssh/sshd_config) následující:

TrustedUserCAKeys /etc/ssh/ca.pub

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

Restartujte démon:

# /etc/init.d/ssh restart

Nyní můžeme zkusit přístup k hostiteli. Ale nejdříve budeme potřebovat certifikát. Vytvořte pár klíčů, který bude spojen s certifikátem:

$ ssh-keygen -t ecdsa -f emergency

Certifikáty a SSH páry
Někdy je lákavé použít certifikát jako náhradu za pár veřejný / soukromý klíč. Ale pro autentizaci uživatele jednoho certifikátu nestačí. Každý certifikát má také s ním spojený soukromý klíč. Proto musíme vygenerovat tento pár "nouzových" klíčů, než si vydáme certifikát. Důležité je, že podepsaný certifikát ukazujeme serveru s uvedením páru klíčů, pro které máme soukromý klíč.

Takže, výměna veřejných klíčů je stále naživu. To platí i pro certifikáty. Certifikáty jednoduše zbavují server potřeby uchovávat 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 vyzváni k podpisu certifikátu pomocí otisku prstu. Můžete přidat další uživatelská jména oddělená čárkami, například -n ubuntu,carl,ec2-user

Hotovo, nyní máte certifikát! Dále musíte nastavit správná oprávnění:

$ chmod 600 emergency-cert.pub

Poté si můžete prohlédnout obsah vašeho certifikátu:

$ step ssh inspect emergency-cert.pub

Takto vypadá můj:

emergency-cert.pub
        Typ: ecdsa-sha2-nistp256-cert-v01@openssh.com uživatelský certifikát
        Veřejný klíč: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
        Podepisující CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
        ID klíče: "test-key"
        Sériové číslo: 0
        Platnost: od 2020-06-24T16:53:03 do 2020-06-24T17:03:03
        Principálové:
                ubuntu
        Kritické možnosti: (žádné)
        Rozšíření:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

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

Konečně 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 jakéhokoli uživatele na hostiteli, který důvěřuje vaší certifikační autoritě.
  2. Můžete odstranit emergency. Můžete si ponechat sk-user-ca, ale nepotřebujete ho, protože je také na bezpečnostním klíči. Možná budete chtít také odstranit původní veřejný PEM klíč ze svých hostitelů (například v ~/.ssh/authorized_keys pro uživatele ubuntu), pokud jste ho používali pro nouzový přístup.

Nouzový přístup: postup

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

$ ssh-add -K

Tímto způsobem přidáte veřejný klíč certifikační autority a popisovač klíče do SSH agenta.

Nyní exportujte veřejný klíč, abyste vytvořili certifikát:

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

Vytvořte certifikát s dobou platnosti, například maximálně 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 nyní znovu SSH:

$ ssh -i emergency username@host

Pokud váš soubor .ssh/config způsobuje nějaké problémy při připojení, můžete spustit ssh s parametrem -F none, abyste se bez něj obešli. Pokud potřebujete poslat certifikát kolegovi, nejjednodušší a nejbezpečnější možností je Magic Wormhole. K tomu potřebujete pouze dva soubory — v našem případě je to emergency a emergency-cert.pub.

Co se mi na tomto přístupu líbí, je hardwarová podpora. Můžete umístit bezpečnostní klíče do trezoru a nikam nezmizí.

Na základě reklamy

Epic servery — to je levné VPS s výkonnými procesory od AMD, frekvence jádra CPU až 3,4 GHz. Maximální konfigurace umožňuje řešení prakticky jakýchkoli úloh — 128 jader CPU, 512 GB RAM, 4000 GB NVMe. Připojte se!

Vypracováváme proceduru nouzového přístupu k hostitelům SSH s hardwarovými klíči

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster