Predpišemo postopek za nujni dostop do SSH gostiteljev s strojnimi ključi

Predpišemo postopek za nujni dostop do SSH gostiteljev s strojnimi ključi

V tej objavi bomo razvili postopek za nujni dostop do gostiteljev SSH z uporabo varnostnih ključev strojne opreme brez povezave. To je le en pristop, ki ga lahko prilagodite svojim potrebam. Potrdilo SSH za naše gostitelje bomo shranili na varnostni ključ strojne opreme. Ta shema bo delovala na skoraj vseh OpenSSH, vključno s SSH z enotno prijavo.

Čemu je vse to namenjeno? No, to je zadnja možnost. To so zadnja vrata, ki vam bodo omogočila dostop do vašega strežnika, ko iz nekega razloga nič drugega ne deluje.

Zakaj uporabljati potrdila namesto javnih/zasebnih ključev za dostop v sili?

  • Za razliko od javnih ključev imajo lahko certifikati zelo kratko življenjsko dobo. Ustvarite lahko potrdilo, ki velja 1 minuto ali celo 5 sekund. Po tem obdobju bo potrdilo postalo neuporabno za nove povezave. To je idealno za dostop v sili.
  • Na svojih gostiteljih lahko ustvarite potrdilo za kateri koli račun in po potrebi pošljete takšna »enkratna« potrdila sodelavcem.

Kaj potrebuješ

  • Strojni varnostni ključi, ki podpirajo rezidenčne ključe.
    Rezidenčni ključi so kriptografski ključi, ki so v celoti shranjeni znotraj varnostnega ključa. Včasih so zaščiteni z alfanumerično kodo PIN. Javni del rezidenčnega ključa je mogoče izvoziti iz varnostnega ključa, po želji skupaj z ročajem zasebnega ključa. Na primer, USB ključi serije Yubikey 5 podpirajo rezidentne ključe, priporočljivo je, da so namenjeni samo za nujni dostop do gostitelja. Za to objavo bom uporabil samo en ključ, vendar bi morali imeti dodatnega za varnostno kopijo.
  • Varno mesto za shranjevanje teh ključev.
  • OpenSSH različice 8.2 ali novejšo v vašem lokalnem računalniku in na strežnikih, do katerih želite imeti dostop v sili. Ubuntu 20.04 je dobavljen z OpenSSH 8.2.
  • (neobvezno, vendar priporočljivo) Orodje CLI za preverjanje potrdil.

Izobraževanje

Najprej morate ustvariti overitelja potrdil, ki se bo nahajal na varnostnem ključu strojne opreme. Vstavite ključ in zaženite:

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

Kot komentar (-C) sem navedel [e-pošta zaščitena]tako da ne pozabite, kateremu varnostnemu ključu pripada ta overitelj potrdil.

Poleg dodajanja ključa v Yubikey bosta lokalno ustvarjeni dve datoteki:

  1. sk-user-ca, ročaj ključa, ki se nanaša na zasebni ključ, shranjen v varnostnem ključu,
  2. sk-user-ca.pub, ki bo javni ključ za vaš overitelj potrdil.

Vendar ne skrbite, Yubikey shrani še en zasebni ključ, ki ga ni mogoče pridobiti. Zato je tukaj vse zanesljivo.

Na gostiteljih kot root dodajte (če tega še niste) svoji konfiguraciji SSHD (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

Nato na gostitelju dodajte javni ključ (sk-user-ca.pub) v /etc/ssh/ca.pub

Znova zaženite demon:

# /etc/init.d/ssh restart

Zdaj lahko poskusimo dostopati do gostitelja. Toda najprej potrebujemo potrdilo. Ustvarite par ključev, ki bo povezan s potrdilom:

$ ssh-keygen -t ecdsa -f emergency

Certifikati in SSH pari
Včasih je mamljivo uporabiti potrdilo kot zamenjavo za par javnih/zasebnih ključev. Toda samo potrdilo ni dovolj za avtentikacijo uporabnika. Vsako potrdilo ima z njim povezan tudi zasebni ključ. Zato moramo ustvariti ta "nujni" par ključev, preden si izdamo potrdilo. Pomembno je, da strežniku pokažemo podpisano potrdilo z navedbo para ključev, za katerega imamo zasebni ključ.

Izmenjava javnih ključev je torej še vedno živa in zdrava. To deluje tudi s certifikati. Potrdila preprosto odpravijo potrebo po shranjevanju javnih ključev v strežniku.

Nato ustvarite samo potrdilo. Potrebujem pooblastilo uporabnika ubuntu v intervalu 10 minut. Lahko narediš na svoj način.

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

Potrdilo boste morali podpisati s prstnim odtisom. Dodate lahko dodatna uporabniška imena, ločena z vejicami, na primer -n ubuntu,carl,ec2-uporabnik

To je to, zdaj imate certifikat! Nato morate določiti pravilna dovoljenja:

$ chmod 600 emergency-cert.pub

Po tem si lahko ogledate vsebino vašega potrdila:

$ step ssh inspect emergency-cert.pub

Takole 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

Tu je javni ključ ključ za nujne primere, ki smo ga ustvarili, sk-user-ca pa je povezan z overiteljem potrdil.

Končno smo pripravljeni za zagon ukaza SSH:


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

  1. Zdaj lahko ustvarite potrdila za katerega koli uporabnika na gostitelju, ki zaupa vašemu overitelju potrdil.
  2. Nujno lahko odstranite. Lahko shranite sk-user-ca, vendar vam ni treba, saj je tudi na varnostnem ključu. Morda boste tudi želeli odstraniti izvirni javni ključ PEM iz svojih gostiteljev (na primer v ~/.ssh/authorized_keys za uporabnika ubuntu), če ste ga uporabili za dostop v sili.

Dostop v sili: akcijski načrt

Prilepite varnostni ključ in zaženite ukaz:

$ ssh-add -K

To bo agentu SSH dodalo javni ključ overitelja potrdil in deskriptor ključa.

Zdaj izvozite javni ključ, da naredite potrdilo:

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

Ustvarite potrdilo z rokom veljavnosti, na primer največ eno uro:

$ 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

In zdaj spet SSH:

$ ssh -i emergency username@host

Če vaša datoteka .ssh/config povzroča nekaj težav pri povezovanju, lahko zaženete ssh z možnostjo -F none, da jo zaobidete. Če morate potrdilo poslati sodelavcu, je najpreprostejša in najvarnejša možnost Čarobna črvina. Če želite to narediti, potrebujete le dve datoteki - v našem primeru nujne primere in nujne primere-cert.pub.

Pri tem pristopu mi je všeč strojna podpora. Varnostne ključe lahko shranite v sef in ne bodo nikamor odšli.

O pravicah oglaševanja

Epski strežniki - Je poceni VPS z zmogljivimi procesorji AMD, frekvenco jedra procesorja do 3.4 GHz. Največja konfiguracija vam omogoča, da rešite skoraj vsako težavo - 128 CPU jeder, 512 GB RAM-a, 4000 GB NVMe. Pridruži se nam!

Predpišemo postopek za nujni dostop do SSH gostiteljev s strojnimi ključi

Vir: www.habr.com

Dodaj komentar