Dvojfaktorová autentifikácia pre SSH

„Bezpečný protokol“ SSH je sieťový protokol na vytváranie zabezpečeného spojenia medzi hosťami, štandardne na porte 22 (čo je lepšie zmeniť). SSH klienti a SSH servery sú dostupné pre väčšinu operačných systémov. V rámci SSH funguje prakticky akýkoľvek iný sieťový protokol, t.j. je možné na diaľku pracovať na inom počítači, prenášať cez šifrovaný kanál zvukový alebo video prenos a podobne. Okrem toho, cez SOCKS proxy na vzdialenom hostiteľovi sa môžeš pripojiť k iným hostiteľom už na meno tohto vzdialeného hostiteľa.

Autentifikácia prebieha pomocou hesla, ale vývojári a systémoví administrátori tradične používajú SSH kľúče. Problém je v tom, že tajný kľúč môže byť ukradnutý. Pridanie heslovej frázy teoreticky chráni pred krádežou tajného kľúča, ale v praxi pri presmerovaní a cachovaní kľúčov sa aj tak môžu používať bez potvrdenia. Dvojfaktorová autentifikácia tento problém rieši.

Ako implementovať dvojfaktorovú autentifikáciu

Vývojári zo spoločnosti Honeycomb nedávno publikovali podrobný návod, ako realizovať potrebnú infraštruktúru na klientovi a serveri.

Návod predpokladá, že máš nejaký základný hosť, otvorený na internete (bastion). Chceš sa k tomuto hostiteľovi pripojiť 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 zabezpečuje, že útočník nemôže urobiť to isté, aj keby mal prístup k tvojmu notebooku, napríklad nainštalovaním škodlivého softvéru.

Prvá možnosť — OTP

OTP — jednorazové digitálne heslá, ktoré sa v tomto prípade budú používať na SSH autentifikáciu spolu s kľúčom. Vývojári píšu, že to nie je ideálna možnosť, pretože útočník môže vybudovať falošný bastion, zachytiť tvoje OTP a použiť ho. Ale je to lepšie ako nič.

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

  • metadata.rb
  • attributes/default.rb (z attributes.rb)
  • files/sshd
  • recipes/default.rb (kópia z recipe.rb)
  • templates/default/users.oath.erb

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

Nakoniec sa môžete pripojiť k bastionu a overiť, že teraz vyžaduje nielen heslovú frázu, ale aj OTP kód na autentifikáciu:

➜ ssh -A bastion
Zadajte heslovú frázu pre kľúč '[snip]': 
Jednorazové heslo (OATH) pre '[user]': 
Vitajte v Ubuntu 18.04.1 LTS...

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

V tomto prípade sa od používateľa nevyžaduje, aby zakaždým zadával OTP kód, pretože druhým faktorom sa stáva hardvérové zariadenie alebo biometria.

Tu je konfigurácia Chef trochu zložitejšia a konfigurácia klientov závisí od OS. Ale po vykonaní všetkých krokov môžu klienti na MacOS potvrdiť autentifikáciu v SSH pomocou heslovej frázy a priložením prsta k senzoru (druhý faktor).

Majitelia iOS a Android potvrdenia prihlásenia stlačením jedného tlačidla na smartfóne. Je to špeciálna technológia od Krypt.co, ktorá je bezpečnejšia ako OTP.

Na Linuxe/ChromeOS existuje možnosť práce s USB tokenmi YubiKey. Samozrejme, útočník môže ukradnúť váš token, ale aj tak nevie heslovú frázu.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster