Dalawang-factor na pagpapatotoo para sa SSH

Ang "Secure shell" SSH ay isang network protocol para sa pagtatatag ng isang secure na koneksyon sa pagitan ng mga host, karaniwang sa port 22 (na mas mahusay na baguhin). Ang mga kliyente ng SSH at mga server ng SSH ay magagamit para sa karamihan ng mga operating system. Halos anumang iba pang network protocol ay gumagana sa loob ng SSH, iyon ay, maaari kang magtrabaho nang malayuan sa isa pang computer, magpadala ng audio o video stream sa isang naka-encrypt na channel, atbp. Bukod sa, sa pamamagitan ng SOCKS proxy sa isang remote host maaari kang kumonekta sa iba pang mga host sa ngalan ng malayuang host na ito.

Ang pagpapatotoo ay nangyayari gamit ang isang password, ngunit ang mga developer at system administrator ay tradisyonal na gumagamit ng mga SSH key. Ang problema ay ang pribadong susi ay maaaring nakawin. Ang pagdaragdag ng passphrase ay theoretically nagpoprotekta laban sa pagnanakaw ng pribadong key, ngunit sa pagsasanay, kapag nagpapasa at nag-cache ng mga key, sila maaari pa ring gamitin nang walang kumpirmasyon. Ang dalawang-factor na pagpapatotoo ay malulutas ang problemang ito.

Paano ipatupad ang two-factor authentication

Na-publish kamakailan ang mga developer mula sa Honeycomb detalyadong mga tagubilin, kung paano ipatupad ang naaangkop na imprastraktura sa kliyente at server.

Ipinapalagay ng mga tagubilin na mayroon kang isang partikular na pangunahing host na bukas sa Internet (bastion). Gusto mong kumonekta sa host na ito mula sa mga laptop o computer sa pamamagitan ng Internet, at i-access ang lahat ng iba pang device na nasa likod nito. Tinitiyak ng 2FA na hindi magagawa ng isang umaatake ang parehong kahit na magkaroon sila ng access sa iyong laptop, halimbawa sa pamamagitan ng pag-install ng malware.

Ang unang opsyon ay OTP

OTP - isang beses na mga digital na password, na sa kasong ito ay gagamitin para sa pagpapatunay ng SSH kasama ang susi. Isinulat ng mga developer na hindi ito isang mainam na opsyon, dahil ang isang umaatake ay maaaring magtaas ng isang pekeng balwarte, maharang ang iyong OTP at gamitin ito. Ngunit ito ay mas mahusay kaysa sa wala.

Sa kasong ito, sa panig ng server, ang mga sumusunod na linya ay nakasulat sa config ng Chef:

  • metadata.rb
  • attributes/default.rb (mula sa attributes.rb)
  • files/sshd
  • recipes/default.rb (kopya mula sa recipe.rb)
  • templates/default/users.oath.erb

Ang anumang OTP application ay naka-install sa client side: Google Authenticator, Authy, Duo, Lastpass, naka-install brew install oath-toolkit o apt install oathtool openssl, pagkatapos ay nabuo ang isang random na base16 string (key). Ito ay na-convert sa Base32 na format na ginagamit ng mga mobile authenticator at direktang ini-import sa application.

Bilang resulta, maaari kang kumonekta sa Bastion at makita na nangangailangan ito ngayon hindi lamang ng isang passphrase, kundi pati na rin ng isang OTP code para sa pagpapatunay:

➜ ssh -A bastion
Enter passphrase for key '[snip]': 
One-time password (OATH) for '[user]': 
Welcome to Ubuntu 18.04.1 LTS...

Ang ikalawang opsyon ay hardware authentication

Sa kasong ito, hindi kinakailangang ipasok ng user ang OTP code sa bawat oras, dahil ang pangalawang salik ay nagiging hardware device o biometrics.

Narito ang pagsasaayos ng Chef ay medyo mas kumplikado, at ang pagsasaayos ng kliyente ay nakasalalay sa OS. Ngunit pagkatapos makumpleto ang lahat ng mga hakbang, ang mga kliyente sa MacOS ay maaaring kumpirmahin ang pagpapatunay sa SSH gamit ang isang passphrase at paglalagay ng isang daliri sa sensor (pangalawang kadahilanan).

Kinukumpirma ng mga may-ari ng iOS at Android ang pag-login sa pamamagitan ng pagpindot sa isang button sa iyong smartphone. Ito ay isang espesyal na teknolohiya mula sa Krypt.co, na mas ligtas kaysa sa OTP.

Sa Linux/ChromeOS mayroong isang opsyon upang gumana sa mga token ng YubiKey USB. Siyempre, maaaring nakawin ng isang attacker ang iyong token, ngunit hindi pa rin niya alam ang passphrase.

Pinagmulan: www.habr.com

Magdagdag ng komento