Dvoufaktorová autentizace pro SSH

“Secure shell” SSH je síťový protokol pro navázání zabezpečeného spojení mezi hostiteli, standardně přes port 22 (který je lepší změnit). Klienti SSH a servery SSH jsou k dispozici pro většinu operačních systémů. Téměř jakýkoli jiný síťový protokol funguje uvnitř SSH, to znamená, že můžete pracovat vzdáleně na jiném počítači, přenášet audio nebo video stream přes šifrovaný kanál atd. Kromě, přes SOCKS proxy na vzdáleném hostiteli můžete se připojit k jiným hostitelům jménem tohoto vzdáleného hostitele.

Autentizace probíhá pomocí hesla, ale vývojáři a správci systému tradičně používají klíče SSH. Problém je, že soukromý klíč může být ukraden. Přidání přístupové fráze teoreticky chrání před krádeží soukromého klíče, ale v praxi při předávání a ukládání klíčů do mezipaměti lze stále používat bez potvrzení. Tento problém řeší dvoufaktorová autentizace.

Jak implementovat dvoufaktorovou autentizaci

Vývojáři z Honeycomb nedávno zveřejnili podrobné pokyny, jak implementovat vhodnou infrastrukturu na klientovi a serveru.

Pokyny předpokládají, že máte určitého základního hostitele otevřeného pro internet (baštu). Chcete se k tomuto hostiteli připojit z notebooků nebo počítačů přes internet a přistupovat ke všem ostatním zařízením, která se nacházejí za ním. 2FA zajišťuje, že totéž nemůže udělat útočník, i když získá přístup k vašemu notebooku, například instalací malwaru.

První možností je OTP

OTP - jednorázová digitální hesla, která budou v tomto případě použita pro SSH autentizaci spolu s klíčem. Vývojáři píší, že to není ideální varianta, protože útočník by mohl zvednout falešnou baštu, zachytit vaše OTP a použít ji. Ale je to lepší než nic.

V tomto případě jsou na straně serveru do konfigurace Chef zapsány následující řádky:

  • metadata.rb
  • attributes/default.rb (z attributes.rb)
  • files/sshd
  • recipes/default.rb (kopírovat z recipe.rb)
  • templates/default/users.oath.erb

Na straně klienta je nainstalována jakákoli aplikace OTP: Google Authenticator, Authy, Duo, Lastpass, nainstalováno brew install oath-toolkit nebo apt install oathtool openssl, pak se vygeneruje náhodný řetězec base16 (klíč). Je převeden do formátu Base32, který používají mobilní autentizátori, a importován přímo do aplikace.

Výsledkem je, že se můžete připojit k Bastionu a uvidíte, že nyní vyžaduje nejen přístupovou frázi, ale také OTP kód pro ověření:

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

Druhou možností je hardwarová autentizace

V tomto případě uživatel nemusí pokaždé zadávat OTP kód, protože druhým faktorem je hardwarové zařízení nebo biometrie.

Zde je konfigurace Chef trochu složitější a konfigurace klienta závisí na OS. Ale po dokončení všech kroků mohou klienti na MacOS potvrdit autentizaci v SSH pomocí přístupové fráze a přiložení prstu na senzor (druhý faktor).

Majitelé iOS a Android potvrzují přihlášení stisknutím jednoho tlačítka na smartphonu. Jedná se o speciální technologii od Krypt.co, která je ještě bezpečnější než OTP.

V systému Linux/ChromeOS existuje možnost pracovat s tokeny YubiKey USB. Útočník vám samozřejmě může ukrást token, ale stále nezná heslo.

Zdroj: www.habr.com

Přidat komentář