Predpisujeme postup núdzového prístupu k hostiteľom SSH pomocou hardvérových kľúčov

Predpisujeme postup núdzového prístupu k hostiteľom SSH pomocou hardvérových kľúčov

V tomto príspevku vyvinieme postup núdzového prístupu k hostiteľom SSH pomocou hardvérových bezpečnostných kľúčov offline. Toto je len jeden prístup a môžete si ho prispôsobiť podľa svojich potrieb. Certifikačnú autoritu SSH pre našich hostiteľov uložíme na hardvérový bezpečnostný kľúč. Táto schéma bude fungovať na takmer akomkoľvek OpenSSH, vrátane SSH s jediným prihlásením.

Načo to všetko je? No, toto je posledná možnosť. Ide o zadné vrátka, ktoré vám umožnia získať prístup k vášmu serveru, keď z nejakého dôvodu nefunguje nič iné.

Prečo používať certifikáty namiesto verejných/súkromných kľúčov na núdzový prístup?

  • Na rozdiel od verejných kľúčov môžu mať certifikáty veľmi krátku životnosť. Môžete vygenerovať certifikát, ktorý je platný 1 minútu alebo dokonca 5 sekúnd. Po uplynutí tejto doby sa certifikát stane nepoužiteľným pre nové pripojenia. To je ideálne pre núdzový prístup.
  • Môžete si vytvoriť certifikát pre akýkoľvek účet na svojich hostiteľoch a v prípade potreby poslať takéto „jednorazové“ certifikáty kolegom.

Čo potrebujete

  • Hardvérové ​​bezpečnostné kľúče, ktoré podporujú rezidentné kľúče.
    Rezidentné kľúče sú kryptografické kľúče, ktoré sú úplne uložené v rámci bezpečnostného kľúča. Niekedy sú chránené alfanumerickým kódom PIN. Verejnú časť rezidentného kľúča možno exportovať z bezpečnostného kľúča, voliteľne spolu s rukoväťou súkromného kľúča. Rezidentné kľúče podporujú napríklad USB kľúče série Yubikey 5. Je vhodné, aby boli určené len na núdzový prístup k hostiteľovi. Pre tento príspevok použijem iba jeden kľúč, ale na zálohovanie by ste mali mať ďalší.
  • Bezpečné miesto na uloženie týchto kľúčov.
  • OpenSSH verzie 8.2 alebo vyššej na vašom lokálnom počítači a na serveroch, ku ktorým chcete mať núdzový prístup. Ubuntu 20.04 sa dodáva s OpenSSH 8.2.
  • (voliteľné, ale odporúčané) Nástroj CLI na kontrolu certifikátov.

Tréning

Najprv musíte vytvoriť certifikačnú autoritu, ktorá sa bude nachádzať na hardvérovom bezpečnostnom kľúči. Vložte kľúč a spustite:

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

Ako komentár (-C) som uviedol [chránené e-mailom]aby ste nezabudli, ktorému bezpečnostnému kľúču táto certifikačná autorita patrí.

Okrem pridania kľúča do Yubikey sa lokálne vygenerujú dva súbory:

  1. sk-user-ca, rukoväť kľúča, ktorá odkazuje na súkromný kľúč uložený v bezpečnostnom kľúči,
  2. sk-user-ca.pub, ktorý bude verejným kľúčom pre vašu certifikačnú autoritu.

Ale nebojte sa, Yubikey ukladá ďalší súkromný kľúč, ktorý nie je možné získať. Preto je tu všetko spoľahlivé.

Na hostiteľoch ako root pridajte (ak ste to ešte neurobili) do svojej konfigurácie SSHD (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

Potom na hostiteľovi pridajte verejný kľúč (sk-user-ca.pub) do /etc/ssh/ca.pub

Reštartujte démona:

# /etc/init.d/ssh restart

Teraz sa môžeme pokúsiť o prístup k hostiteľovi. Najprv však potrebujeme certifikát. Vytvorte pár kľúčov, ktorý bude priradený k certifikátu:

$ ssh-keygen -t ecdsa -f emergency

Certifikáty a páry SSH
Niekedy je lákavé použiť certifikát ako náhradu za pár verejný/súkromný kľúč. Samotný certifikát však na overenie používateľa nestačí. Každý certifikát má tiež priradený súkromný kľúč. To je dôvod, prečo musíme vygenerovať tento „núdzový“ pár kľúčov predtým, ako si vystavíme certifikát. Dôležité je, že serveru ukážeme podpísaný certifikát s uvedením páru kľúčov, pre ktorý máme súkromný kľúč.

Výmena verejných kľúčov je teda stále nažive. Funguje to aj s certifikátmi. Certifikáty jednoducho eliminujú potrebu servera ukladať verejné kľúče.

Ďalej vytvorte samotný certifikát. Potrebujem autorizáciu používateľa ubuntu v 10 minútovom intervale. Môžete to urobiť po svojom.

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

Budete požiadaní o podpísanie certifikátu pomocou odtlačku prsta. Môžete pridať ďalšie používateľské mená oddelené čiarkami, napríklad -n ubuntu,carl,ec2-user

To je všetko, teraz máte certifikát! Ďalej musíte zadať správne povolenia:

$ chmod 600 emergency-cert.pub

Potom si môžete pozrieť obsah svojho certifikátu:

$ step ssh inspect emergency-cert.pub

Takto vyzerá 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

Tu je verejný kľúč núdzový kľúč, ktorý sme vytvorili, a sk-user-ca je priradený certifikačnej autorite.

Nakoniec sme pripravení spustiť príkaz SSH:


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

  1. Teraz môžete vytvárať certifikáty pre každého užívateľa na hostiteľovi, ktorý dôveruje vašej certifikačnej autorite.
  2. Môžete odstrániť núdzový stav. Môžete uložiť sk-user-ca, ale nemusíte, pretože je tiež na bezpečnostnom kľúči. Môžete tiež chcieť odstrániť pôvodný verejný kľúč PEM z vašich hostiteľov (napríklad v ~/.ssh/authorized_keys pre používateľa ubuntu), ak ste ho použili na núdzový prístup.

Núdzový prístup: Akčný plán

Prilepte bezpečnostný kľúč a spustite príkaz:

$ ssh-add -K

Tým sa pridá verejný kľúč a deskriptor kľúča certifikačnej autority k agentovi SSH.

Teraz exportujte verejný kľúč a vytvorte certifikát:

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

Vytvorte certifikát s dátumom vypršania platnosti, napríklad nie dlhším ako 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 teraz znova SSH:

$ ssh -i emergency username@host

Ak váš súbor .ssh/config spôsobuje problémy pri pripájaní, môžete spustiť ssh s voľbou -F none, aby ste ho obišli. Ak potrebujete poslať certifikát kolegovi, najjednoduchšia a najbezpečnejšia možnosť je Čarovná červia diera. Potrebujete k tomu len dva súbory – v našom prípade núdzový a núdzový-cert.pub.

Čo sa mi na tomto prístupe páči, je hardvérová podpora. Bezpečnostné kľúče môžete uložiť do trezoru a nikam nezmiznú.

O právach reklamy

Epické servery - je lacné VPS s výkonnými procesormi od AMD, frekvencia jadra CPU až 3.4 GHz. Maximálna konfigurácia umožňuje vyriešiť takmer akýkoľvek problém – 128 CPU jadier, 512 GB RAM, 4000 GB NVMe. Pripoj sa k nám!

Predpisujeme postup núdzového prístupu k hostiteľom SSH pomocou hardvérových kľúčov

Zdroj: hab.com

Pridať komentár