Dvojfaktorová autentifikácia pre SSH

“Secure shell” SSH je sieťový protokol na vytvorenie bezpečného spojenia medzi hostiteľmi, štandardne cez port 22 (ktorý je lepšie zmeniť). SSH klienti a SSH servery sú dostupné pre väčšinu operačných systémov. Takmer každý iný sieťový protokol funguje v rámci SSH, to znamená, že môžete pracovať na diaľku na inom počítači, prenášať audio alebo video stream cez šifrovaný kanál atď. okrem toho cez SOCKS proxy na vzdialenom hostiteľovi môžete sa pripojiť k iným hostiteľom v mene tohto vzdialeného hostiteľa.

Autentifikácia prebieha pomocou hesla, ale vývojári a správcovia systému tradične používajú kľúče SSH. Problém je, že súkromný kľúč môže byť ukradnutý. Pridanie prístupovej frázy teoreticky chráni pred krádežou súkromného kľúča, ale v praxi pri preposielaní a ukladaní kľúčov do vyrovnávacej pamäte možno použiť aj bez potvrdenia. Tento problém rieši dvojfaktorová autentifikácia.

Ako implementovať dvojfaktorovú autentifikáciu

Vývojári z Honeycomb nedávno zverejnili podrobné pokynyako implementovať vhodnú infraštruktúru na klientovi a serveri.

Pokyny predpokladajú, že máte určitého základného hostiteľa otvoreného pre internet (baštu). Chcete sa pripojiť k tomuto hostiteľovi z notebookov alebo počítačov cez internet a získať prístup ku všetkým ostatným zariadeniam, ktoré sa nachádzajú za ním. 2FA zaisťuje, že útočník nemôže urobiť to isté, aj keď získa prístup k vášmu notebooku, napríklad inštaláciou malvéru.

Prvou možnosťou je OTP

OTP - jednorazové digitálne heslá, ktoré sa v tomto prípade použijú na overenie SSH spolu s kľúčom. Vývojári píšu, že to nie je ideálna možnosť, pretože útočník by mohol zdvihnúť falošnú baštu, zachytiť vaše OTP a použiť ho. Ale je to lepšie ako nič.

V tomto prípade sa na strane servera do konfigurácie Chef zapíšu nasledujúce riadky:

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

Na strane klienta je nainštalovaná akákoľvek aplikácia OTP: nainštalovaný Google Authenticator, Authy, Duo, Lastpass brew install oath-toolkit alebo apt install oathtool openssl, potom sa vygeneruje náhodný reťazec base16 (kľúč). Je konvertovaný do formátu Base32, ktorý používajú mobilné autentifikátory, a importovaný priamo do aplikácie.

V dôsledku toho sa môžete pripojiť k Bastion a uvidíte, že teraz vyžaduje nielen prístupovú frázu, ale aj OTP kód na overenie:

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

Druhou možnosťou je hardvérová autentifikácia

V tomto prípade používateľ nemusí zakaždým zadávať OTP kód, keďže druhým faktorom je hardvérové ​​zariadenie alebo biometria.

Tu je konfigurácia Chef trochu komplikovanejšia a konfigurácia klienta závisí od operačného systému. Po dokončení všetkých krokov však môžu klienti v systéme MacOS potvrdiť autentifikáciu v SSH pomocou prístupovej frázy a priložením prsta na senzor (druhý faktor).

Majitelia iOS a Android potvrdia prihlásenie stlačením jedného tlačidla na smartfóne. Ide o špeciálnu technológiu od Krypt.co, ktorá je ešte bezpečnejšia ako OTP.

V systéme Linux/ChromeOS existuje možnosť pracovať s tokenmi YubiKey USB. Útočník vám samozrejme môže ukradnúť token, no stále nepozná prístupovú frázu.

Zdroj: hab.com

Pridať komentár