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:
- sk-user-ca, 'n sleutelhandvatsel wat verwys na die private sleutel wat in die sekuriteitsleutel gestoor is,
- 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:~$
- Jy kan nou sertifikate skep vir enige gebruiker op 'n gasheer wat jou sertifikaatowerheid vertrou.
- 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
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
Bron: will.com