
În această postare, vom dezvolta o procedură pentru accesul de urgență la gazdele SSH, folosind chei de securitate hardware în mod offline. Aceasta este doar una dintre abordări și o puteți adapta nevoilor dumneavoastră. Vom stoca centrul de certificare SSH pentru gazdele noastre pe cheia de securitate hardware. Acest sistem va funcționa practic pe orice OpenSSH, inclusiv SSH cu autentificare unificată.
De ce toate acestea? Ei bine, aceasta este o soluție de rezervă. Aceasta este o ușă din spate care vă va permite să accesați serverul dumneavoastră în cazul în care, din anumite motive, nimic altceva nu funcționează.
De ce să folosiți certificate în loc de chei publice / private pentru accesul de urgență?
- Spre deosebire de cheile publice, durata de valabilitate a certificatelor poate fi foarte scurtă. Puteți genera un certificat care să fie valabil timp de 1 minut sau chiar 5 secunde. După această perioadă, certificatul va deveni invalid pentru noi conexiuni. Aceasta este ideal pentru accesul de urgență.
- Puteți crea un certificat pentru orice cont de pe gazdele dumneavoastră și, dacă este necesar, să trimiteți astfel de certificate «de unică folosință» colegilor.
Ce vă trebuie
- Chei de securitate hardware care suportă chei rezidente.
Cheile rezidente sunt chei criptografice care sunt stocate complet în interiorul cheii de securitate. Uneori, acestea sunt protejate printr-un PIN alfanumeric. Partea deschisă a cheii rezidente poate fi exportată din cheia de securitate, dacă este necesar, împreună cu descriptorul cheii private. Cheile USB din seria Yubikey 5, de exemplu, suportă chei rezidente. Este preferabil ca acestea să fie destinate doar pentru accesul de urgență la gazdă. În această postare, voi folosi doar o cheie, dar ar trebui să aveți una suplimentară pentru backup. - Un loc sigur pentru stocarea acestor chei.
- OpenSSH versiunea 8.2 sau mai recentă pe computerul dumneavoastră local și pe serverele la care doriți să obțineți acces de urgență. Ubuntu 20.04 vine cu OpenSSH 8.2.
- (opțional, dar recomandat) Un instrument CLI pentru verificarea certificatelor.
Pregătire
Pentru început, trebuie să creați un centru de certificare care va fi situat pe cheia de securitate hardware. Introduceți cheia și rulați:
$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]Ca observație (-C), am specificat yubikey-9-512-742@smallstep.com pentru a nu uita la ce cheie de securitate se referă acest centru de certificare.
În plus față de adăugarea cheii la Yubikey, vor fi generate local două fișiere:
- sk-user-ca, un descriptor al cheii care face referire la cheia privată stocată în cheia de securitate,
- sk-user-ca.pub, care va fi cheia publică pentru centrul dvs. de certificare.
Dar nu vă faceți griji, pe Yubikey mai este o cheie privată, care nu poate fi extrasă. Așadar, totul este sigur aici.
Pe gazde în numele utilizatorului root, adăugați (dacă nu ați adăugat deja) în configurația SSHD-ului dvs. (\/etc\/ssh\/sshd_config) următoarele:
TrustedUserCAKeys \/etc\/ssh\/ca.pubApoi, pe gazdă, adăugați cheia publică (sk-user-ca.pub) în \/etc\/ssh\/ca.pub
Reporniți demonul:
# /etc/init.d/ssh restartAcum putem încerca să accesăm gazda. Dar mai întâi avem nevoie de un certificat. Creați o pereche de chei, care va fi asociată cu certificatul:
$ ssh-keygen -t ecdsa -f emergencyCertificate și perechi SSH
Uneori, ai tendința de a folosi certificatul ca substitut pentru perechea de chei publică / privată. Dar pentru autentificarea utilizatorului, un singur certificat nu este suficient. Fiecare certificat are, de asemenea, o cheie privată asociată cu acesta. Din acest motiv, trebuie să generăm această pereche de chei „de urgență” înainte de a ne emite certificatul. Este important să prezentăm serverului certificat semnat, indicând perechea de chei pentru care avem cheia privată.Astfel, schimbul de chei publice este în continuare viu. Funcționează chiar și cu certificatele. Certificatele pur și simplu scutesc serverul de necesitatea de a stoca cheile publice.
Apoi creați certificatul propriu-zis. Am nevoie de autorizarea utilizatorului ubuntu într-un interval de 10 minute. Puteți face cum doriți.
$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergencyVeți fi solicitat să semnați certificatul folosind amprenta digitală. Puteți adăuga nume de utilizatori suplimentari, separate prin virgule, de exemplu, -n ubuntu,carl,ec2-user
Gata, acum aveți certificat! Următorul pas este să specificați permisiunile corecte:
$ chmod 600 emergency-cert.pubDupă aceasta, puteți vizualiza conținutul certificatului dvs.:
$ step ssh inspect emergency-cert.pubIată cum arată al meu:
emergency-cert.pub
Tip: ecdsa-sha2-nistp256-cert-v01@openssh.com certificat de utilizator
Cheie publică: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
CA de semnare: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
ID cheie: "test-key"
Seria: 0
Valabil: de la 2020-06-24T16:53:03 până la 2020-06-24T17:03:03
Principalii:
ubuntu
Opțiuni critice: (niciuna)
Extensii:
permit-X11-forwarding
permit-agent-forwarding
permit-port-forwarding
permit-pty
permit-user-rcAici cheia publică este cheia de urgență creată de noi, iar cu centrul de certificare se leagă sk-user-ca.
În sfârșit, suntem gata să lansăm comanda SSH:
$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$- Acum puteți crea certificate pentru orice utilizator pe gazda care are încredere în centrul dumneavoastră de certificare.
- Puteți șterge emergency. Puteți păstra sk-user-ca, dar nu aveți nevoie de el, deoarece se află de asemenea pe cheiul de securitate. Este posibil să doriți să ștergeți și cheia publică PEM originală de pe gazdele dumneavoastră (de exemplu, în ~/ .ssh/authorized_keys pentru utilizatorul ubuntu), dacă ați folosit-o pentru acces de urgență.
Acces de urgență: plan de acțiune
Introduceți cheia de securitate și rulați comanda:
$ ssh-add -KAstfel veți adăuga cheia publică a centrului de certificare și descriptorul cheii în agentul SSH.
Acum exportați cheia publică pentru a crea certificatul:
$ ssh-add -L | tail -1 > sk-user-ca.pubCreați un certificat cu o valabilitate, de exemplu, de maximum o oră:
$ 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Și acum din nou SSH:
$ ssh -i emergency username@hostDacă fișierul dvs. .ssh/config cauzează probleme la conectare, puteți rula ssh cu parametrul -F none pentru a ocoli. Dacă trebuie să trimiteți certificatul unui coleg, cea mai simplă și mai sigură opțiune este . Pentru asta aveți nevoie de doar două fișiere — în cazul nostru acestea sunt emergency și emergency-cert.pub.
Ce îmi place la această abordare este suportul hardware. Puteți așeza cheile de securitate în seif, iar acestea nu vor dispărea nicăieri.
În numele publicității
Servere epice — acesta este cu procesoare puternice de la AMD, frecvența nucleului CPU până la 3.4 GHz. Configurația maximă permite rezolvarea practic oricăror sarcini — 128 de nuclee CPU, 512 GB RAM, 4000 GB NVMe. Alăturați-vă!
Sursa: habr.com
