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:
- sk-user-ca, isang key handle na tumutukoy sa pribadong key na nakaimbak sa security key,
- 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:~$
- Maaari ka na ngayong gumawa ng mga certificate para sa sinumang user sa isang host na nagtitiwala sa iyong awtoridad sa certificate.
- 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
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
Pinagmulan: www.habr.com