Autentificare cu două factori pentru SSH

„Shell-ul sigur” SSH este un protocol de rețea pentru stabilirea unei conexiuni securizate între gazde, standard pe portul 22 (pe care este mai bine să-l schimbi). Clienții SSH și serverele SSH sunt disponibile pentru cele mai multe sisteme de operare. În interiorul SSH funcționează practic orice alt protocol de rețea, ceea ce înseamnă că poți lucra de la distanță pe un alt computer, transmite fluxuri audio sau video printr-un canal criptat etc. În plus, prin intermediul unui proxy SOCKS pe gazda de la distanță poți să te conectezi la alte gazde deja în numele acelei gazde îndepărtate.

Autentificarea se face pe baza parolei, dar dezvoltatorii și administratorii de sistem aplică în mod tradițional chei SSH. Problema este că cheia secretă poate fi furată. Adăugarea unei fraze de parolă teoretic protejează împotriva furtului cheii secrete, dar în practică, atunci când se realizează redirecționarea și stocarea cheilor, acestea pot fi totuși utilizate fără confirmare. Autentificarea în doi pași rezolvă această problemă.

Cum să implementăm autentificarea în doi pași

Dezvoltatorii de la compania Honeycomb au publicat recent un ghid detaliat, despre cum să implementezi infrastructura corespunzătoare pe client și server.

Ghidul presupune că ai un anumit gazdă de bază, deschisă pe internet (bastion). Vrei să te conectezi la acest gazdă de pe laptopuri sau computere prin internet și să obții acces la toate celelalte dispozitive care se află în spatele său. 2FA garantează că un atacator nu va putea face același lucru, chiar dacă obține acces la laptopul tău, de exemplu, instalând malware.

Prima opțiune — OTP

OTP sunt parole digitale unice care în acest caz vor fi utilizate pentru autentificarea SSH împreună cu cheia. Dezvoltatorii menționează că aceasta nu este o opțiune ideală, deoarece un atacator ar putea crea un bastion fals, să-ți intercepteze OTP-ul și să-l folosească. Dar este mai bine decât nimic.

În acest caz, pe partea serverului, în configurația Chef sunt adăugate următoarele linii:

  • metadata.rb
  • attributes/default.rb (din attributes.rb)
  • files/sshd
  • recipes/default.rb (copie din recipe.rb)
  • templates/default/users.oath.erb

Pe partea clientului, se instalează orice aplicație OTP: Google Authenticator, Authy, Duo, Lastpass, se instalează brew install oath-toolkit sau apt install oathtool openssl, apoi se generează un șir aleatoriu base16 (cheia). Acesta este convertit în format Base32, folosit de autentificatoarele mobile, și importat direct în aplicație.

În final, vă puteți conecta la bastion și să verificați că acesta cere acum nu doar fraza de parolă, ci și codul OTP pentru autentificare:

➜ ssh -A bastion
Introduceti fraza de parolă pentru cheia '[snip]': 
Parola unică (OATH) pentru '[user]': 
Bine ați venit la Ubuntu 18.04.1 LTS...

A doua variantă — autentificarea hardware

În acest caz, utilizatorul nu este nevoit să introducă de fiecare dată codul OTP, deoarece al doilea factor devine un dispozitiv hardware sau biometrie.

Aici configurația Chef este puțin mai complexă, iar configurația clienților depinde de sistemul de operare. Totuși, după finalizarea tuturor acțiunilor, clienții pe MacOS pot confirma autentificarea în SSH prin fraza de parolă și prin aplicarea degetului pe senzor (al doilea factor).

Deținătorii de iOS și Android confirmă accesul prin apăsarea unui buton pe smartphone. Aceasta este o tehnologie specială de la Krypt.co, care este chiar mai sigură decât OTP.

Pe Linux/ChromeOS există o variantă de lucru cu token-uri USB YubiKey. Desigur, un atacator poate fura tokenul dvs., dar tot nu cunoaște fraza de parolă.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster