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

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

U ovom postu ćemo razviti proceduru za hitan pristup SSH hostovima koristeći hardverske sigurnosne ključeve van mreže. Ovo je samo jedan pristup, a možete ga prilagoditi svojim potrebama. Pohranit ćemo SSH certifikat ovlaštenja za naše hostove na hardverskom sigurnosnom ključu. Ova šema će raditi na gotovo svakom OpenSSH-u, uključujući SSH sa jedinstvenom prijavom.

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

Zašto koristiti certifikate umjesto javnih/privatnih ključeva za hitan pristup?

  • Za razliku od javnih ključeva, certifikati mogu imati vrlo kratak vijek trajanja. Možete generirati certifikat koji vrijedi 1 minut ili čak 5 sekundi. Nakon ovog perioda, certifikat će postati neupotrebljiv za nove veze. Ovo je idealno za pristup u hitnim slučajevima.
  • Možete kreirati certifikat za bilo koji račun na svojim hostovima i, ako je potrebno, poslati takve "jednokratne" certifikate kolegama.

Šta vam treba

  • Hardverski sigurnosni ključevi koji podržavaju rezidentne ključeve.
    Stalni 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, opciono zajedno sa ručkom privatnog ključa. 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 bi trebali imati dodatni za backup.
  • Sigurno mjesto za čuvanje tih ključeva.
  • OpenSSH verzija 8.2 ili novija na vašem lokalnom računaru i na serverima kojima želite da imate pristup u hitnim slučajevima. Ubuntu 20.04 se isporučuje sa OpenSSH 8.2.
  • (opciono, ali preporučeno) CLI alat za provjeru certifikata.

Trening

Prvo morate kreirati 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) naznačio sam [email zaštićen]tako da ne zaboravite kojem sigurnosnom ključu pripada ovo certifikacijsko tijelo.

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

  1. sk-user-ca, rukohvat ključa koji se odnosi na privatni ključ pohranjen u sigurnosnom ključu,
  2. sk-user-ca.pub, koji će biti javni ključ vašeg certifikacijskog tijela.

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

Na hostovima, kao root, dodajte (ako već niste) sljedeće u vašu 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

Ponovo pokrenite demona:

# /etc/init.d/ssh restart

Sada možemo pokušati pristupiti hostu. Ali prvo nam je potreban sertifikat. Kreirajte par ključeva koji će biti pridružen certifikatu:

$ 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 par ključeva za "hitne slučajeve" prije nego što sebi izdamo certifikat. Bitno je da serveru pokažemo potpisani certifikat, koji označava par ključeva za koji imamo privatni ključ.

Dakle, razmjena javnih ključeva je i dalje živa i zdrava. Ovo funkcionira čak i sa certifikatima. Certifikati jednostavno eliminišu potrebu da server pohranjuje javne ključeve.

Zatim kreirajte sam certifikat. Treba mi autorizacija ubuntu korisnika 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 sertifikat! Zatim morate navesti ispravne dozvole:

$ chmod 600 emergency-cert.pub

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

$ step ssh inspect emergency-cert.pub

Ovako izgleda moj:

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 kreirali, a sk-user-ca je povezan s certifikacijskim tijelom.

Konačno smo spremni za pokretanje SSH naredbe:


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

  1. Sada možete kreirati certifikate za bilo kojeg korisnika na hostu koji vjeruje vašem autoritetu certifikata.
  2. Možete ukloniti hitne slučajeve. Možete sačuvati sk-user-ca, ali ne morate jer je također na sigurnosnom ključu. Možda ćete želeti da uklonite originalni PEM javni ključ sa svojih hostova (na primer u ~/.ssh/authorized_keys za korisnika ubuntua) ako ste ga koristili za hitan pristup.

Pristup u hitnim slučajevima: Akcioni plan

Zalijepite sigurnosni ključ i pokrenite naredbu:

$ ssh-add -K

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

Sada izvezite javni ključ da napravite certifikat:

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

Kreirajte certifikat s datumom isteka, na primjer, ne dužim od 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 pri povezivanju, možete pokrenuti ssh sa opcijom -F none da biste je zaobišli. Ako trebate poslati certifikat kolegi, najlakša i najsigurnija opcija je Magic Wormhole. Da biste to učinili, potrebna su vam samo dva fajla - u našem slučaju, emergency i emergency-cert.pub.

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

O pravima reklame

Epic serveri Je jeftin VPS sa moćnim AMD procesorima, frekvencija jezgre CPU-a do 3.4 GHz. Maksimalna konfiguracija vam omogućava da riješite gotovo svaki problem - 128 CPU jezgri, 512 GB RAM-a, 4000 GB NVMe. Pridruži nam se!

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

izvor: www.habr.com

Dodajte komentar