Skriver in proceduren för akut Ätkomst till SSH-vÀrdar med hÄrdvarunycklar

Skriver in proceduren för akut Ätkomst till SSH-vÀrdar med hÄrdvarunycklar

I det hÀr inlÀgget kommer vi att utveckla en procedur för akut Ätkomst till SSH-vÀrdar med hjÀlp av sÀkerhetstangenter i offline-lÀge. Detta Àr bara en av metoderna, och du kan anpassa den efter dina behov. Vi kommer att lagra SSH-certifikatcentret för vÄra vÀrdar pÄ sÀkerhetstangenten. Detta schema kommer att fungera pÄ nÀstan vilken OpenSSH som helst, inklusive SSH med en enda inloggning.

Varför allt detta? Ja, det Àr ett alternativ i nödfall. Detta Àr en baksida som lÄter dig fÄ Ätkomst till din server om ingenting annat fungerar av nÄgon anledning.

Varför anvÀnda certifikat istÀllet för öppna/privata nycklar för akut Ätkomst?

  • Till skillnad frĂ„n öppna nycklar kan giltighetstiden för certifikat vara mycket kort. Du kan generera ett certifikat som Ă€r giltigt i 1 minut eller till och med 5 sekunder. Efter denna tidsperiod blir certifikatet ogiltigt för nya anslutningar. Detta Ă€r perfekt för akut Ă„tkomst.
  • Du kan skapa ett certifikat för vilket konto som helst pĂ„ dina vĂ€rdar och vid behov skicka sĂ„dana "engĂ„ngs"-certifikat till kollegor.

Vad du behöver

  • SĂ€kerhetstangenter som stöder residenta nycklar.
    Residenta nycklar Àr kryptografiska nycklar som helt lagras inuti sÀkerhetstangenten. Ibland skyddas de av en alfanumerisk PIN-kod. Den öppna delen av den residenta nyckeln kan exporteras frÄn sÀkerhetstangenten, vid behov tillsammans med en deskriptor för den privata nyckeln. Stöd för residenta nycklar har till exempel USB-tangenter i Yubikey 5-serien. Det Àr önskvÀrt att de endast anvÀnds för akut Ätkomst till vÀrden. För detta inlÀgg kommer jag att anvÀnda en enda nyckel, men du bör ha en extra för backup.
  • En sĂ€ker plats för att förvara dessa nycklar.
  • OpenSSH version 8.2 eller senare pĂ„ din lokala dator och pĂ„ servrarna som du vill fĂ„ akut Ă„tkomst till. Ubuntu 20.04 kommer med OpenSSH 8.2.
  • (valfritt, men rekommenderas) CLI-verktyg för att verifiera certifikat.

Förberedelse

För att börja mÄste du skapa ett certifikatcentrum som kommer att finnas pÄ sÀkerhetstangenten. SÀtt in nyckeln och kör:

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

Som kommentar (-C) angav jag yubikey-9-512-742@smallstep.com, för att inte glömma vilken sÀkerhetsnyckel som hör till detta certifikatcenter.

Förutom att lÀgga till nyckeln till Yubikey kommer tvÄ filer att genereras lokalt:

  1. sk-user-ca, en nyckeldeskriptor som refererar till den privata nyckeln som lagras i sÀkerhetsnyckeln,
  2. sk-user-ca.pub, som kommer att vara den offentliga nyckeln för ditt certifikatcenter.

Men oroa dig inte, det finns en annan privat nyckel som lagras pÄ Yubikey, vilket Àr omöjligt att extrahera. SÄ det Àr sÀkert hÀr.

PÄ vÀrdarna under anvÀndarnamnet root, lÀgg till (om det inte redan Àr tillagt) följande i din SSHD-konfiguration (\/etc\/ssh\/sshd_config):

TrustedUserCAKeys \/etc\/ssh\/ca.pub

LĂ€gg sedan till den offentliga nyckeln (sk-user-ca.pub) i \/etc\/ssh\/ca.pub

Starta om tjÀnsten:

# /etc/init.d/ssh restart

Nu kan vi försöka fÄ Ätkomst till vÀrden. Men först behöver vi ett certifikat. Skapa ett nyckelpar som kommer att kopplas till certifikatet:

$ ssh-keygen -t ecdsa -f emergency

Certifikat och SSH-par
Ibland Àr man sugen pÄ att anvÀnda ett certifikat som ersÀttning för ett öppet/privat nyckelpar. Men för anvÀndarauthentisering Àr ett certifikat inte tillrÀckligt. Varje certifikat har ocksÄ en privat nyckel kopplad till sig. Det Àr dÀrför vi behöver generera detta "nödnings" nyckelpar innan vi utfÀrdar ett certifikat till oss sjÀlva. Viktigt Àr att vi visar den signerade certifikatet för servern, med angivelse av nyckelpar som vi har den privata nyckeln för.

SÄledes Àr utbytet av offentliga nycklar fortfarande vid liv. Detta fungerar Àven med certifikat. Certifikat befriar bara servern frÄn att behöva lagra offentliga nycklar.

DÀrefter skapar du sjÀlva certifikatet. Jag behöver autentisering av anvÀndaren ubuntu inom en 10-minutersintervall. Du kan göra det pÄ ditt sÀtt.

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

Du kommer att bli ombedd att signera certifikatet med hjÀlp av fingeravtryck. Du kan lÀgga till flera anvÀndarnamn, Ätskilda med kommatecken, exempelvis -n ubuntu,carl,ec2-user

SÄ, nu har du ett certifikat! DÀrefter mÄste du ange rÀtt behörigheter:

$ chmod 600 emergency-cert.pub

Efter detta kan du titta pÄ innehÄllet i ditt certifikat:

$ step ssh inspect emergency-cert.pub

SÄ hÀr ser mitt ut:

emergency-cert.pub
        Typ: ecdsa-sha2-nistp256-cert-v01@openssh.com anvÀndarcertifikat
        Offentligt nyckel: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
        Signerings-CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
        Nyckel-ID: "test-key"
        Serienummer: 0
        Giltig: frÄn 2020-06-24T16:53:03 till 2020-06-24T17:03:03
        Principals:
                ubuntu
        Kritiska alternativ: (inga)
        TillÀgg:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

HĂ€r Ă€r den offentliga nyckeln — det Ă€r den emergency-nyckel som vi har skapat, och den Ă€r kopplad till certifikatutfĂ€rdaren sk-user-ca.

Äntligen Ă€r vi redo att köra SSH-kommandot:


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

  1. Nu kan du skapa certifikat för vilken anvÀndare som helst pÄ vÀrden som litar pÄ din certifikatutfÀrdare.
  2. Du kan ta bort emergency. Du kan behÄlla sk-user-ca, men du behöver det inte, eftersom det ocksÄ finns pÄ sÀkerhetsnyckeln. Du kanske ocksÄ vill ta bort den ursprungliga PEM-offentlig nyckel frÄn dina vÀrdar (t.ex. i ~/.ssh/authorized_keys för anvÀndaren ubuntu) om du har anvÀnt den för nödkontakt.

Nödkontakt: handlingsplan

SÀtt i sÀkerhetsnyckeln och kör kommandot:

$ ssh-add -K

PÄ sÄ sÀtt lÀgger du till den offentliga nyckeln frÄn certifikatutfÀrdaren och nyckelbeskriver i SSH-agenten.

Exportera nu den offentliga nyckeln för att skapa certifikatet:

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

Skapa ett certifikat som Àr giltigt, till exempel, högst en timme:

$ 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

Och nu SSH igen:

$ ssh -i emergency username@host

Om din fil .ssh/config orsakar problem vid anslutning kan du köra ssh med parametern -F none för att undvika det. Om du behöver skicka certifikatet till en kollega, Ă€r det enklaste och sĂ€kraste alternativet — Magic Wormhole. För detta behövs bara tvĂ„ filer — i vĂ„rt fall Ă€r det emergency och emergency-cert.pub.

Vad jag gillar med detta tillvÀgagÄngssÀtt Àr hÄrdvarustödet. Du kan förvara sÀkerhetsnycklarna i ett kassaskÄp, och de försvinner ingenstans.

I reklamens namn

Episk server — detta Ă€r billiga VPS med kraftfulla processorer frĂ„n AMD, CPU-kĂ€rnfrekvens upp till 3.4 GHz. Den maximala konfigurationen klarar nĂ€stan alla uppgifter — 128 CPU-kĂ€rnor, 512 GB RAM, 4000 GB NVMe. GĂ„ med!

Skriver in proceduren för akut Ätkomst till SSH-vÀrdar med hÄrdvarunycklar

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster