„Secure shell” SSH este un protocol de rețea pentru stabilirea unei conexiuni sigure între gazde, în mod standard prin portul 22 (care este mai bine să îl schimbați). Clienții SSH și serverele SSH sunt disponibile pentru majoritatea sistemelor de operare. Aproape orice alt protocol de rețea funcționează în interiorul SSH, adică puteți lucra de la distanță pe un alt computer, puteți transmite un flux audio sau video pe un canal criptat etc. In afara de asta, vă puteți conecta la alte gazde în numele acestei gazde la distanță.
Autentificarea are loc folosind o parolă, dar dezvoltatorii și administratorii de sistem folosesc în mod tradițional cheile SSH. Problema este că cheia privată poate fi furată. Adăugarea unei fraze de acces protejează teoretic împotriva furtului cheii private, dar în practică, atunci când redirecționează și memorează cheile în cache, acestea . Autentificarea cu doi factori rezolvă această problemă.
Cum se implementează autentificarea cu doi factori
Dezvoltatorii de la Honeycomb au publicat recent , cum să implementați infrastructura adecvată pe client și server.
Instrucțiunile presupun că aveți o anumită gazdă de bază deschisă la Internet (bastion). Doriți să vă conectați la această gazdă de pe laptopuri sau computere prin Internet și să accesați toate celelalte dispozitive care se află în spatele acesteia. 2FA asigură că un atacator nu poate face același lucru chiar dacă obține acces la laptopul tău, de exemplu prin instalarea de programe malware.
Prima opțiune este OTP
OTP - parole digitale unice, care în acest caz vor fi folosite pentru autentificarea SSH împreună cu cheia. Dezvoltatorii scriu că aceasta nu este o opțiune ideală, deoarece un atacator ar putea ridica un bastion fals, vă poate intercepta OTP-ul și îl poate folosi. Dar e mai bine decât nimic.
În acest caz, pe partea serverului, în configurația Chef sunt scrise următoarele rânduri:
metadata.rbattributes/default.rb(deattributes.rb)files/sshdrecipes/default.rb(copie de larecipe.rb)templates/default/users.oath.erb
Orice aplicație OTP este instalată pe partea clientului: Google Authenticator, Authy, Duo, Lastpass, instalat brew install oath-toolkit sau apt install oathtool openssl, atunci este generat un șir aleator de bază16 (cheie). Este convertit în formatul Base32 pe care îl folosesc autentificatorii mobili și importat direct în aplicație.
Ca rezultat, vă puteți conecta la Bastion și puteți vedea că acum necesită nu numai o frază de acces, ci și un cod OTP pentru autentificare:
➜ ssh -A bastion
Enter passphrase for key '[snip]':
One-time password (OATH) for '[user]':
Welcome to Ubuntu 18.04.1 LTS...A doua opțiune este autentificarea hardware
În acest caz, utilizatorului nu i se cere să introducă codul OTP de fiecare dată, deoarece al doilea factor devine dispozitivul hardware sau biometria.
Aici configurația Chef este puțin mai complicată, iar configurația clientului depinde de OS. Dar după parcurgerea tuturor pașilor, clienții de pe MacOS pot confirma autentificarea în SSH folosind o expresie de acces și punând un deget pe senzor (al doilea factor).
Deținătorii de iOS și Android confirmați intrarea . Aceasta este o tehnologie specială de la Krypt.co, care este chiar mai sigură decât OTP.
Pe LinuxChromeOS are o opțiune pentru lucrul cu token-uri USB YubiKey. Deși un atacator ar putea fura token-ul, tot nu ar cunoaște fraza ta de acces.
Sursa: www.habr.com
