Nagrereseta kami ng pamamaraan para sa emergency na pag-access sa mga host ng SSH na may mga hardware key

Nagrereseta kami ng pamamaraan para sa emergency na pag-access sa mga host ng SSH na may mga hardware key

Sa post na ito, bubuo kami ng pamamaraan para sa emergency na pag-access sa mga SSH host gamit ang mga hardware security key offline. Isa lang itong diskarte, at maaari mo itong iakma sa iyong mga pangangailangan. Iimbak namin ang SSH certificate authority para sa aming mga host sa hardware security key. Gagana ang scheme na ito sa halos anumang OpenSSH, kabilang ang SSH na may single sign-on.

Para saan ang lahat ng ito? Well, ito ay isang pagpipilian sa huling resort. Ito ay isang backdoor na magbibigay-daan sa iyong makakuha ng access sa iyong server kapag sa ilang kadahilanan ay wala nang ibang gumagana.

Bakit gagamit ng mga certificate sa halip na pampubliko/pribadong key para sa emergency na pag-access?

  • Hindi tulad ng mga pampublikong susi, ang mga sertipiko ay maaaring magkaroon ng napakaikling habang-buhay. Maaari kang bumuo ng isang sertipiko na may bisa sa loob ng 1 minuto o kahit na 5 segundo. Pagkatapos ng panahong ito, hindi na magagamit ang certificate para sa mga bagong koneksyon. Ito ay mainam para sa emergency na pag-access.
  • Maaari kang lumikha ng isang sertipiko para sa anumang account sa iyong mga host at, kung kinakailangan, magpadala ng mga naturang "isang beses" na mga sertipiko sa mga kasamahan.

Ano ang kailangan mo

  • Mga security key ng hardware na sumusuporta sa mga resident key.
    Ang mga resident key ay mga cryptographic key na ganap na nakaimbak sa loob ng security key. Minsan sila ay protektado ng isang alphanumeric PIN. Ang pampublikong bahagi ng resident key ay maaaring i-export mula sa security key, opsyonal kasama ang private key handle. Halimbawa, sinusuportahan ng mga USB key ng Yubikey 5 series ang mga resident key. Maipapayo na ang mga ito ay inilaan lamang para sa emergency na pag-access sa host. Para sa post na ito gagamit lang ako ng isang susi, ngunit dapat ay mayroon kang karagdagang isa para sa backup.
  • Isang ligtas na lugar upang iimbak ang mga susi na iyon.
  • OpenSSH bersyon 8.2 o mas mataas sa iyong lokal na computer at sa mga server na gusto mong magkaroon ng emergency na access. Nagpapadala ang Ubuntu 20.04 gamit ang OpenSSH 8.2.
  • (opsyonal, ngunit inirerekomenda) Isang CLI tool para sa pagsuri ng mga certificate.

Pagsasanay

Una, kailangan mong lumikha ng awtoridad sa sertipikasyon na matatagpuan sa key ng seguridad ng hardware. Ipasok ang susi at patakbuhin:

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

Bilang isang komento (-C) ipinahiwatig ko [protektado ng email]para hindi mo makalimutan kung saang security key kabilang ang certificate authority na ito.

Bilang karagdagan sa pagdaragdag ng susi sa Yubikey, dalawang file ang bubuo ng lokal:

  1. sk-user-ca, isang key handle na tumutukoy sa pribadong key na nakaimbak sa security key,
  2. sk-user-ca.pub, na magiging pampublikong susi para sa iyong awtoridad sa sertipiko.

Ngunit huwag mag-alala, nag-iimbak ang Yubikey ng isa pang pribadong susi na hindi maaaring makuha. Samakatuwid, ang lahat ay maaasahan dito.

Sa mga host, bilang root, idagdag (kung hindi mo pa nagagawa) ang sumusunod sa iyong SSHD configuration (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

Pagkatapos sa host, idagdag ang pampublikong key (sk-user-ca.pub) sa /etc/ssh/ca.pub

I-restart ang daemon:

# /etc/init.d/ssh restart

Ngayon ay maaari na nating subukang i-access ang host. Ngunit kailangan muna namin ng isang sertipiko. Gumawa ng key pair na iuugnay sa certificate:

$ ssh-keygen -t ecdsa -f emergency

Mga pares ng sertipiko at SSH
Minsan nakakaakit na gumamit ng certificate bilang kapalit ng pampubliko/pribadong key pair. Ngunit ang isang sertipiko lamang ay hindi sapat upang mapatunayan ang isang gumagamit. Ang bawat sertipiko ay mayroon ding pribadong key na nauugnay dito. Ito ang dahilan kung bakit kailangan nating buuin ang "emergency" na key pair na ito bago tayo mag-isyu ng certificate sa ating sarili. Ang mahalagang bagay ay ipinapakita namin ang nilagdaang sertipiko sa server, na nagpapahiwatig ng key pair kung saan mayroon kaming pribadong key.

Kaya't ang pagpapalitan ng pampublikong susi ay buhay pa rin at maayos. Gumagana ito kahit na may mga sertipiko. Tinatanggal lang ng mga sertipiko ang pangangailangan para sa server na mag-imbak ng mga pampublikong susi.

Susunod, lumikha ng sertipiko mismo. Kailangan ko ng ubuntu user authorization sa loob ng 10 minutong pagitan. Magagawa mo ito sa iyong paraan.

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

Hihilingin sa iyo na lagdaan ang sertipiko gamit ang iyong fingerprint. Maaari kang magdagdag ng mga karagdagang username na pinaghihiwalay ng mga kuwit, halimbawa -n ubuntu,carl,ec2-user

Ayan, may certificate ka na! Susunod na kailangan mong tukuyin ang mga tamang pahintulot:

$ chmod 600 emergency-cert.pub

Pagkatapos nito, maaari mong tingnan ang mga nilalaman ng iyong sertipiko:

$ step ssh inspect emergency-cert.pub

Ito ang hitsura ng akin:

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

Narito ang pampublikong key ay ang emergency key na aming ginawa, at ang sk-user-ca ay nauugnay sa awtoridad sa sertipikasyon.

Sa wakas handa na kaming patakbuhin ang utos ng SSH:


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

  1. Maaari ka na ngayong gumawa ng mga certificate para sa sinumang user sa isang host na nagtitiwala sa iyong awtoridad sa certificate.
  2. Maaari mong alisin ang emergency. Maaari mong i-save ang sk-user-ca, ngunit hindi mo na kailangan dahil nasa security key din ito. Maaaring gusto mo ring tanggalin ang orihinal na PEM public key mula sa iyong mga host (halimbawa sa ~/.ssh/authorized_keys para sa ubuntu user) kung ginamit mo ito para sa emergency na pag-access.

Emergency Access: Plano ng Aksyon

I-paste ang security key at patakbuhin ang command:

$ ssh-add -K

Idaragdag nito ang pampublikong susi at tagapaglarawan ng susi ng awtoridad sa sertipiko sa ahente ng SSH.

Ngayon i-export ang pampublikong susi upang makagawa ng isang sertipiko:

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

Gumawa ng certificate na may petsa ng pag-expire na, halimbawa, hindi hihigit sa isang oras:

$ 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

At ngayon SSH muli:

$ ssh -i emergency username@host

Kung ang iyong .ssh/config file ay nagdudulot ng ilang mga problema kapag kumokonekta, maaari mong patakbuhin ang ssh gamit ang -F none na opsyon upang i-bypass ito. Kung kailangan mong magpadala ng sertipiko sa isang kasamahan, ang pinakamadali at pinaka-secure na opsyon ay Magic Wormhole. Upang gawin ito, kailangan mo lamang ng dalawang file - sa aming kaso, emergency at emergency-cert.pub.

Ang gusto ko sa diskarteng ito ay ang suporta sa hardware. Maaari mong ilagay ang iyong mga security key sa isang safe at hindi ito mapupunta kahit saan.

Sa Mga Karapatan ng Pag-advertise

Mga epic na server - Ay murang VPS na may malalakas na processor mula sa AMD, CPU core frequency hanggang 3.4 GHz. Ang maximum na configuration ay nagbibigay-daan sa iyo upang malutas ang halos anumang problema - 128 CPU core, 512 GB RAM, 4000 GB NVMe. Sumali ka!

Nagrereseta kami ng pamamaraan para sa emergency na pag-access sa mga host ng SSH na may mga hardware key

Pinagmulan: www.habr.com

Magdagdag ng komento