Propisujemo proceduru za hitan pristup SSH hostovima s hardverskim ključevima

Propisujemo proceduru za hitan pristup SSH hostovima s hardverskim ključevima

U ovom ćemo postu razviti postupak za hitan pristup SSH hostovima pomoću hardverskih sigurnosnih ključeva izvan mreže. Ovo je samo jedan pristup i možete ga prilagoditi svojim potrebama. Pohranit ćemo autoritet SSH certifikata za naše hostove na hardverskom sigurnosnom ključu. Ova će shema raditi na gotovo svakom OpenSSH-u, uključujući SSH s jedinstvenom prijavom.

Čemu sve ovo? Pa, ovo je krajnja opcija. Ovo je backdoor koji će vam omogućiti pristup vašem poslužitelju kada iz nekog razloga ništa drugo ne radi.

Zašto koristiti certifikate umjesto javnih/privatnih ključeva za pristup u hitnim slučajevima?

  • Za razliku od javnih ključeva, certifikati mogu imati vrlo kratak životni vijek. Možete generirati certifikat koji vrijedi 1 minutu ili čak 5 sekundi. Nakon tog razdoblja certifikat će postati neupotrebljiv za nove veze. Ovo je idealno za hitan pristup.
  • Možete izraditi certifikat za bilo koji račun na svojim hostovima i, ako je potrebno, poslati takve "jednokratne" certifikate kolegama.

Što vam je potrebno

  • Hardverski sigurnosni ključevi koji podržavaju rezidentne ključeve.
    Rezidentni ključevi su kriptografski ključevi koji su u potpunosti pohranjeni unutar sigurnosnog ključa. Ponekad su zaštićeni alfanumeričkim PIN-om. Javni dio rezidentnog ključa može se izvesti iz sigurnosnog ključa, po izboru zajedno s rukovanjem privatnim ključem. Na primjer, USB ključevi serije Yubikey 5 podržavaju rezidentne ključeve. Preporučljivo je da su namijenjeni samo za hitan pristup hostu. Za ovaj post ću koristiti samo jedan ključ, ali vi biste trebali imati dodatni za sigurnosnu kopiju.
  • Sigurno mjesto za pohranu tih ključeva.
  • OpenSSH verzija 8.2 ili novija na vašem lokalnom računalu i na poslužiteljima kojima želite imati hitan pristup. Ubuntu 20.04 isporučuje se s OpenSSH 8.2.
  • (neobavezno, ali preporučeno) CLI alat za provjeru certifikata.

Trening

Najprije morate stvoriti certifikacijsko tijelo koje će se nalaziti na hardverskom sigurnosnom ključu. Umetnite ključ i pokrenite:

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

Kao komentar (-C) sam naveo [e-pošta zaštićena]tako da ne zaboravite kojem sigurnosnom ključu pripada ovaj autoritet certifikata.

Osim dodavanja ključa na Yubikey, dvije datoteke će se generirati lokalno:

  1. sk-user-ca, ručka ključa koja se odnosi na privatni ključ pohranjen u sigurnosnom ključu,
  2. sk-user-ca.pub, koji će biti javni ključ za vaš autoritet za izdavanje certifikata.

Ali ne brinite, Yubikey pohranjuje još jedan privatni ključ koji se ne može dohvatiti. Stoga je ovdje sve pouzdano.

Na hostovima, kao root, dodajte (ako već niste) sljedeće u svoju SSHD konfiguraciju (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

Zatim na hostu dodajte javni ključ (sk-user-ca.pub) u /etc/ssh/ca.pub

Ponovno pokrenite demon:

# /etc/init.d/ssh restart

Sada možemo pokušati pristupiti hostu. Ali prvo nam treba certifikat. Napravite par ključeva koji će biti povezan s certifikatom:

$ ssh-keygen -t ecdsa -f emergency

Certifikati i SSH parovi
Ponekad je primamljivo koristiti certifikat kao zamjenu za par javni/privatni ključ. Ali sam certifikat nije dovoljan za autentifikaciju korisnika. Svaki certifikat također ima privatni ključ povezan s njim. Zbog toga moramo generirati ovaj "hitni" par ključeva prije nego što si izdamo certifikat. Važno je da poslužitelju pokažemo potpisani certifikat s naznakom para ključeva za koji imamo privatni ključ.

Dakle, razmjena javnih ključeva je još uvijek živa i zdrava. Ovo funkcionira čak i sa certifikatima. Certifikati jednostavno eliminiraju potrebu da poslužitelj pohranjuje javne ključeve.

Zatim izradite sam certifikat. Trebam autorizaciju korisnika ubuntu u intervalu od 10 minuta. Možete to učiniti na svoj način.

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

Od vas će se tražiti da potpišete certifikat otiskom prsta. Možete dodati dodatna korisnička imena odvojena zarezima, na primjer -n ubuntu,carl,ec2-user

To je to, sada imate certifikat! Zatim trebate navesti ispravna dopuštenja:

$ chmod 600 emergency-cert.pub

Nakon toga možete vidjeti sadržaj vašeg certifikata:

$ step ssh inspect emergency-cert.pub

Ovako moj izgleda:

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

Ovdje je javni ključ ključ za hitne slučajeve koji smo izradili, a sk-user-ca povezan je s certifikacijskim tijelom.

Konačno smo spremni za pokretanje SSH naredbe:


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

  1. Sada možete stvoriti certifikate za bilo kojeg korisnika na hostu koji vjeruje vašem autoritetu certifikata.
  2. Možete ukloniti hitan slučaj. Možete spremiti sk-user-ca, ali ne morate jer se također nalazi na sigurnosnom ključu. Možda ćete također htjeti ukloniti izvorni PEM javni ključ sa svojih hostova (na primjer u ~/.ssh/authorized_keys za ubuntu korisnika) ako ste ga koristili za hitan pristup.

Pristup u hitnim slučajevima: Akcijski plan

Zalijepite sigurnosni ključ i pokrenite naredbu:

$ ssh-add -K

Ovo će SSH agentu dodati javni ključ i deskriptor ključa izdavatelja certifikata.

Sada izvezite javni ključ za izradu certifikata:

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

Napravite certifikat s datumom isteka, na primjer, najviše sat vremena:

$ 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

A sada opet SSH:

$ ssh -i emergency username@host

Ako vaša .ssh/config datoteka uzrokuje neke probleme prilikom povezivanja, možete pokrenuti ssh s -F none opcijom da je zaobiđete. Ako trebate poslati potvrdu kolegi, najlakša i najsigurnija opcija je Čarobna crvotočina. Da biste to učinili, potrebne su vam samo dvije datoteke - u našem slučaju hitna i hitna-cert.pub.

Ono što mi se sviđa kod ovog pristupa je hardverska podrška. Sigurnosne ključeve možete staviti u sef i oni neće nikamo otići.

O pravima oglašavanja

Epski poslužitelji - Je jeftini VPS sa snažnim AMD procesorima, frekvencijom jezgre procesora do 3.4 GHz. Maksimalna konfiguracija omogućuje vam rješavanje gotovo svakog problema - 128 CPU jezgri, 512 GB RAM-a, 4000 GB NVMe. Pridruži nam se!

Propisujemo proceduru za hitan pristup SSH hostovima s hardverskim ključevima

Izvor: www.habr.com

Dodajte komentar