Ons skryf 'n prosedure voor vir noodtoegang tot SSH-gashere met hardewaresleutels

Ons skryf 'n prosedure voor vir noodtoegang tot SSH-gashere met hardewaresleutels

In hierdie pos sal ons 'n prosedure ontwikkel vir noodtoegang tot SSH-gashere deur hardeware-sekuriteitsleutels vanlyn te gebruik. Dit is net een benadering, en jy kan dit aanpas om by jou behoeftes te pas. Ons sal die SSH-sertifikaatowerheid vir ons gashere op die hardeware-sekuriteitsleutel stoor. Hierdie skema sal op byna enige OpenSSH werk, insluitend SSH met enkelaanmelding.

Waarvoor is dit alles? Wel, dit is 'n laaste uitweg opsie. Dit is 'n agterdeur wat jou sal toelaat om toegang tot jou bediener te kry wanneer niks anders om een ​​of ander rede werk nie.

Waarom sertifikate in plaas van publieke/private sleutels vir noodtoegang gebruik?

  • Anders as publieke sleutels, kan sertifikate 'n baie kort lewensduur hΓͺ. Jy kan 'n sertifikaat genereer wat geldig is vir 1 minuut of selfs 5 sekondes. Na hierdie tydperk sal die sertifikaat onbruikbaar word vir nuwe verbindings. Dit is ideaal vir noodtoegang.
  • Jy kan 'n sertifikaat vir enige rekening op jou gashere skep en, indien nodig, sulke "eenmalige" sertifikate aan kollegas stuur.

Wat jy nodig het

  • Hardeware-sekuriteitsleutels wat inwonende sleutels ondersteun.
    Inwonende sleutels is kriptografiese sleutels wat geheel en al binne die sekuriteitsleutel gestoor word. Soms word hulle deur 'n alfanumeriese PIN beskerm. Die publieke gedeelte van die inwonende sleutel kan vanaf die sekuriteitsleutel uitgevoer word, opsioneel saam met die private sleutelhandvatsel. Yubikey 5-reeks USB-sleutels ondersteun byvoorbeeld inwonende sleutels. Dit is raadsaam dat dit slegs bedoel is vir noodtoegang tot die gasheer. Vir hierdie pos sal ek net een sleutel gebruik, maar jy moet 'n bykomende een hΓͺ vir rugsteun.
  • 'n Veilige plek om daardie sleutels te bΓͺre.
  • OpenSSH weergawe 8.2 of hoΓ«r op jou plaaslike rekenaar en op die bedieners waartoe jy noodtoegang wil hΓͺ. Ubuntu 20.04 word saam met OpenSSH 8.2 gestuur.
  • (opsioneel, maar aanbeveel) 'n CLI-instrument om sertifikate na te gaan.

Opleiding

Eerstens moet u 'n sertifiseringsowerheid skep wat op die hardeware-sekuriteitsleutel geleΓ« sal wees. Plaas die sleutel in en hardloop:

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

As kommentaar (-C) het ek aangedui [e-pos beskerm]sodat jy nie vergeet aan watter sekuriteitsleutel hierdie sertifikaatowerheid behoort nie.

Benewens die byvoeging van die sleutel tot die Yubikey, sal twee lΓͺers plaaslik gegenereer word:

  1. sk-user-ca, 'n sleutelhandvatsel wat verwys na die private sleutel wat in die sekuriteitsleutel gestoor is,
  2. sk-user-ca.pub, wat die publieke sleutel vir jou sertifikaatowerheid sal wees.

Maar moenie bekommerd wees nie, die Yubikey stoor nog 'n private sleutel wat nie herwin kan word nie. Daarom is alles hier betroubaar.

Op gashere, as root, voeg (as jy nog nie het nie) die volgende by jou SSHD-konfigurasie (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

Voeg dan op die gasheer die publieke sleutel (sk-user-ca.pub) by /etc/ssh/ca.pub

Herbegin die daemon:

# /etc/init.d/ssh restart

Nou kan ons probeer om toegang tot die gasheer te kry. Maar eers het ons 'n sertifikaat nodig. Skep 'n sleutelpaar wat met die sertifikaat geassosieer sal word:

$ ssh-keygen -t ecdsa -f emergency

Sertifikate en SSH-pare
Soms is dit aanloklik om 'n sertifikaat te gebruik as 'n plaasvervanger vir 'n publieke/private sleutelpaar. Maar 'n sertifikaat alleen is nie genoeg om 'n gebruiker te verifieer nie. Elke sertifikaat het ook 'n private sleutel wat daarmee geassosieer word. Dit is hoekom ons hierdie "nood" sleutelpaar moet genereer voordat ons vir onsself 'n sertifikaat uitreik. Die belangrikste ding is dat ons die getekende sertifikaat aan die bediener wys, wat die sleutelpaar aandui waarvoor ons 'n private sleutel het.

Die uitruil van publieke sleutels leef dus nog steeds. Dit werk selfs met sertifikate. Sertifikate skakel eenvoudig die behoefte uit dat die bediener publieke sleutels moet stoor.

Skep dan die sertifikaat self. Ek benodig ubuntu-gebruikersmagtiging binne 10 minute interval. Jy kan dit op jou manier doen.

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

Jy sal gevra word om die sertifikaat met jou vingerafdruk te onderteken. Jy kan bykomende gebruikersname byvoeg wat deur kommas geskei word, byvoorbeeld -n ubuntu, carl, ec2-gebruiker

Dis dit, nou het jy 'n sertifikaat! Vervolgens moet u die korrekte toestemmings spesifiseer:

$ chmod 600 emergency-cert.pub

Hierna kan jy die inhoud van jou sertifikaat bekyk:

$ step ssh inspect emergency-cert.pub

Dit is hoe myne lyk:

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

Hier is die publieke sleutel die noodsleutel wat ons geskep het, en sk-user-ca word geassosieer met die sertifiseringsowerheid.

Uiteindelik is ons gereed om die SSH-opdrag uit te voer:


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

  1. Jy kan nou sertifikate skep vir enige gebruiker op 'n gasheer wat jou sertifikaatowerheid vertrou.
  2. U kan noodgevalle verwyder. Jy kan sk-user-ca stoor, maar jy hoef nie, want dit is ook op die sekuriteitsleutel. Jy sal dalk ook die oorspronklike PEM publieke sleutel van jou gashere wil verwyder (byvoorbeeld in ~/.ssh/authorized_keys vir die ubuntu-gebruiker) as jy dit vir noodtoegang gebruik het.

Noodtoegang: Aksieplan

Plak die sekuriteitsleutel en voer die opdrag uit:

$ ssh-add -K

Dit sal die sertifikaatowerheid se publieke sleutel en sleutelbeskrywing by die SSH-agent voeg.

Voer nou die publieke sleutel uit om 'n sertifikaat te maak:

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

Skep 'n sertifikaat met 'n vervaldatum van byvoorbeeld nie meer as 'n uur nie:

$ 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

En nou weer SSH:

$ ssh -i emergency username@host

As jou .ssh/config-lΓͺer probleme veroorsaak wanneer jy koppel, kan jy ssh met die -F none-opsie laat loop om dit te omseil. As jy 'n sertifikaat aan 'n kollega moet stuur, is die maklikste en veiligste opsie Magiese wurmgat. Om dit te doen, het jy net twee lΓͺers nodig - in ons geval, nood en nood-cert.pub.

Wat ek van hierdie benadering hou, is die hardeware-ondersteuning. Jy kan jou sekuriteitsleutels in 'n kluis sit en hulle sal nΓͺrens heen gaan nie.

Oor die regte van reklame

Epiese bedieners - Is goedkoop VPS met kragtige verwerkers van AMD, CPU-kernfrekwensie tot 3.4 GHz. Die maksimum konfigurasie laat jou toe om byna enige probleem op te los - 128 SVE-kerne, 512 GB RAM, 4000 GB NVMe. Sluit by ons aan!

Ons skryf 'n prosedure voor vir noodtoegang tot SSH-gashere met hardewaresleutels

Bron: will.com

Voeg 'n opmerking