I dette indlæg vil vi udvikle en procedure for nødadgang til SSH-værter ved hjælp af hardwaresikkerhedsnøgler offline. Dette er kun én tilgang, og du kan tilpasse den, så den passer til dine behov. Vi gemmer SSH-certifikatautoriteten for vores værter på hardwaresikkerhedsnøglen. Denne ordning vil fungere på næsten alle OpenSSH, inklusive SSH med single sign-on.
Hvad er det hele til for? Nå, dette er en sidste udvej mulighed. Dette er en bagdør, der giver dig mulighed for at få adgang til din server, når intet andet virker.
Hvorfor bruge certifikater i stedet for offentlige/private nøgler til nødadgang?
- I modsætning til offentlige nøgler kan certifikater have en meget kort levetid. Du kan generere et certifikat, der er gyldigt i 1 minut eller endda 5 sekunder. Efter denne periode bliver certifikatet ubrugeligt til nye forbindelser. Dette er ideelt til nødadgang.
- Du kan oprette et certifikat for enhver konto på dine værter og om nødvendigt sende sådanne "engangs"-certifikater til kolleger.
Hvad du har brug for
- Hardwaresikkerhedsnøgler, der understøtter indbyggede nøgler.
Residentnøgler er kryptografiske nøgler, der er gemt udelukkende i sikkerhedsnøglen. Nogle gange er de beskyttet af en alfanumerisk PIN-kode. Den offentlige del af den residente nøgle kan eksporteres fra sikkerhedsnøglen, eventuelt sammen med den private nøglehåndtag. For eksempel understøtter Yubikey 5-seriens USB-nøgler residente nøgler. Det anbefales, at de kun er beregnet til nødadgang til værten. Til dette indlæg vil jeg kun bruge én nøgle, men du bør have en ekstra til backup. - Et sikkert sted at opbevare disse nøgler.
- OpenSSH version 8.2 eller nyere på din lokale computer og på de servere, du vil have nødadgang til. Ubuntu 20.04 leveres med OpenSSH 8.2.
- (valgfrit, men anbefalet) Et CLI-værktøj til kontrol af certifikater.
Træning
Først skal du oprette en certificeringsmyndighed, der vil være placeret på hardwaresikkerhedsnøglen. Indsæt nøglen og kør:
$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]
Som en kommentar (-C) angav jeg [e-mail beskyttet]så du ikke glemmer, hvilken sikkerhedsnøgle denne certifikatmyndighed tilhører.
Ud over at tilføje nøglen til Yubikey, vil to filer blive genereret lokalt:
- sk-user-ca, et nøglehåndtag, der refererer til den private nøgle, der er gemt i sikkerhedsnøglen,
- sk-user-ca.pub, som vil være den offentlige nøgle til din certifikatmyndighed.
Men bare rolig, Yubikey gemmer en anden privat nøgle, som ikke kan hentes. Derfor er alt pålideligt her.
På værter, som root, skal du tilføje (hvis du ikke allerede har gjort det) følgende til din SSHD-konfiguration (/etc/ssh/sshd_config):
TrustedUserCAKeys /etc/ssh/ca.pub
Tilføj derefter den offentlige nøgle (sk-user-ca.pub) til /etc/ssh/ca.pub på værten
Genstart dæmonen:
# /etc/init.d/ssh restart
Nu kan vi prøve at få adgang til værten. Men først skal vi have et certifikat. Opret et nøglepar, der vil blive knyttet til certifikatet:
$ ssh-keygen -t ecdsa -f emergency
Certifikater og SSH-par
Nogle gange er det fristende at bruge et certifikat som erstatning for et offentligt/privat nøglepar. Men et certifikat alene er ikke nok til at autentificere en bruger. Hvert certifikat har også en privat nøgle tilknyttet. Det er derfor, vi skal generere dette "nødnøglepar", før vi udsteder et certifikat til os selv. Det vigtige er, at vi viser det signerede certifikat til serveren, hvilket angiver det nøglepar, som vi har en privat nøgle til.Så offentlig nøgleudveksling lever stadig i bedste velgående. Dette fungerer selv med certifikater. Certifikater eliminerer simpelthen behovet for, at serveren skal gemme offentlige nøgler.
Dernæst skal du oprette selve certifikatet. Jeg har brug for ubuntu-brugerautorisation i 10 minutters interval. Du kan gøre det på din måde.
$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency
Du vil blive bedt om at underskrive certifikatet med dit fingeraftryk. Du kan tilføje yderligere brugernavne adskilt af kommaer, for eksempel -n ubuntu,carl,ec2-user
Det er det, nu har du et certifikat! Dernæst skal du angive de korrekte tilladelser:
$ chmod 600 emergency-cert.pub
Herefter kan du se indholdet af dit certifikat:
$ step ssh inspect emergency-cert.pub
Sådan ser min ud:
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
Her er den offentlige nøgle den nødnøgle, vi har oprettet, og sk-user-ca er tilknyttet certificeringsmyndigheden.
Endelig er vi klar til at køre SSH-kommandoen:
$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$
- Du kan nu oprette certifikater for enhver bruger på en vært, der har tillid til din certifikatmyndighed.
- Du kan fjerne nødsituationer. Du kan gemme sk-user-ca, men det behøver du ikke, da det også er på sikkerhedsnøglen. Du vil måske også fjerne den originale PEM offentlige nøgle fra dine værter (for eksempel i ~/.ssh/authorized_keys for ubuntu-brugeren), hvis du brugte den til nødadgang.
Nødadgang: Handlingsplan
Indsæt sikkerhedsnøglen og kør kommandoen:
$ ssh-add -K
Dette vil tilføje certifikatmyndighedens offentlige nøgle og nøglebeskrivelse til SSH-agenten.
Eksporter nu den offentlige nøgle for at lave et certifikat:
$ ssh-add -L | tail -1 > sk-user-ca.pub
Opret et certifikat med en udløbsdato på for eksempel ikke mere end en time:
$ 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
Og nu SSH igen:
$ ssh -i emergency username@host
Hvis din .ssh/config-fil forårsager nogle problemer ved tilslutning, kan du køre ssh med -F none-indstillingen for at omgå den. Skal du sende et certifikat til en kollega, er den nemmeste og sikreste mulighed
Det, jeg godt kan lide ved denne tilgang, er hardwaresupporten. Du kan lægge dine sikkerhedsnøgler i et pengeskab, og de vil ingen steder gå.
Om reklamernes rettigheder
Episke servere - Er
Kilde: www.habr.com