După patru luni de dezvoltare lansare , o implementare deschisă a clientului și serverului pentru funcționarea pe protocoalele SSH 2.0 și SFTP.
Îmbunătățirea cheie adusă de lansarea OpenSSH 8.2 a fost posibilitatea de a utiliza autentificarea în doi pași cu dispozitive care suportă protocolul , dezvoltat de alianță . U2F permite crearea de token-uri hardware ieftine pentru confirmarea prezenței fizice a utilizatorului, interacțiunea cu care se realizează prin USB, Bluetooth sau NFC. Castele de acest tip sunt promovate ca un mijloc de autentificare cu doi factori pe site-uri, fiind deja susținute de majoritatea browserelor și fiind produse de diverși manufacturatori, inclusiv Yubico, Feitian, Thetis și Kensington.
Pentru interacțiunea cu dispozitivele care confirmă prezența utilizatorului, OpenSSH a adăugat noi tipuri de chei «ecdsa-sk» și «ed25519-sk», care utilizează algoritmii de semnare digitală ECDSA și Ed25519, împreună cu hash-ul SHA-256. Procesele de interacțiune cu token-uri au fost extrase într-o bibliotecă intermediară, care se încarcă similar cu biblioteca pentru suportul PKCS#11 și este un wrapper pentru bibliotecă. , care oferă mijloacele de comunicație cu token-urile prin USB (suportă protocoalele FIDO U2F/CTAP 1 și FIDO 2.0/CTAP 2). Biblioteca intermediară pregătită de dezvoltatorii OpenSSH, libsk-libfido2 face parte din libfido2, la fel ca și pentru OpenBSD.
Pentru autentificare și generarea cheii, trebuie să specificați în setări parametrul «SecurityKeyProvider» sau să setați variabila de mediu SSH_SK_PROVIDER, indicând calea către biblioteca externă libsk-libfido2.so (export SSH_SK_PROVIDER=\/path\/to\/libsk-libfido2.so). Este posibilă compilarea openssh cu suport încorporat pentru biblioteca intermediară (—with-security-key-builtin), în acest caz trebuie să setați parametrul «SecurityKeyProvider=internal».
Apoi trebuie să rulați «ssh-keygen -t ecdsa-sk» sau, dacă cheile sunt deja create și configurate, să vă conectați la server cu «ssh». La rularea ssh-keygen, perechea de chei creată va fi salvată în «~\/ .ssh\/id_ecdsa_sk» și poate fi utilizată similar altor chei.
Cheia publică (id_ecdsa_sk.pub) trebuie copiată pe server în fișierul authorized_keys. Pe partea serverului, doar semnătura digitală este verificată, iar interacțiunea cu token-urile se desfășoară pe partea clientului (pe server nu este necesară instalarea libsk-libfido2, dar serverul trebuie să suporte tipurile de chei «ecdsa-sk»). Cheia privată generată (id_ecdsa_sk) este, de fapt, un descriptor de cheie, formând cheia reală doar în combinație cu secvența secretă stocată pe token-ul U2F. În cazul în care cheia id_ecdsa_sk ajunge în mâinile unui atacator, pentru a trece de autentificare va necesita, de asemenea, acces la token-ul hardware, fără de care cheia privată stocată în fișierul id_ecdsa_sk este inutilizabilă.
În plus, prin definiție, la executarea oricăror operațiuni cu cheile (atât la generare, cât și la autentificare) este necesară o confirmare locală a prezenței fizice a utilizatorului, de exemplu, se solicită atingerea senzorului de pe token, ceea ce îngreunează desfășurarea atacurilor de la distanță asupra sistemelor cu token conectat. Ca o altă măsură de protecție, la etapa de inițiere a ssh-keygen poate fi solicitată o parolă pentru accesul la fișierul cu cheia.
În noua versiune OpenSSH s-a anunțat, de asemenea, că algoritmii care folosesc hash-uri SHA-1 vor fi clasificați ca fiind depășiți, din cauza eficiența atacurilor de coliziune cu un prefix dat (costul generării unei coliziuni este estimat la aproximativ 45.000 de dolari). Într-unul dintre următoarele versiuni, se intenționează dezactivarea implicită a algoritmului de semnătură digitală cu cheie publică „ssh-rsa”, care este menționat în RFC-ul original pentru protocolul SSH și rămâne larg răspândit în practică (pentru a verifica utilizarea ssh-rsa în sistemele dvs., puteți încerca să vă conectați prin ssh cu opțiunea „-oHostKeyAlgorithms=-ssh-rsa”).
Pentru a facilita tranziția către noile algoritmi în OpenSSH, într-una dintre următoarele versiuni va fi activată în mod implicit setarea UpdateHostKeys, care va permite clienților să fie transferați automat la algoritmi mai siguri. Printre algoritmii recomandați pentru migrare se numără rsa-sha2-256/512 bazat pe RFC8332 RSA SHA-2 (susținut din OpenSSH 7.2 și utilizat implicit), ssh-ed25519 (susținut din OpenSSH 6.5) și ecdsa-sha2-nistp256/384/521 bazat pe RFC5656 ECDSA (susținut din OpenSSH 5.7).
În versiunea OpenSSH 8.2, posibilitatea de conectare utilizând „ssh-rsa” este încă disponibilă, dar acest algoritm a fost eliminat din lista CASignatureAlgorithms, care definește algoritmii permis pentru semnarea digitală a noilor certificatelor. În mod similar, algoritmul diffie-hellman-group14-sha1 a fost eliminat din algoritmii de schimb de chei acceptați implicit. Se observă că utilizarea SHA-1 în certificate este asociată cu un risc suplimentar, deoarece un atacator are timp nelimitat pentru a căuta o coliziune pentru un certificat existent, în timp ce timpul de atac asupra cheilor gazdelor este limitat de timeout-ul conexiunii (LoginGraceTime).
La executarea ssh-keygen, acum, prin definiție, se aplică algoritmul rsa-sha2-512, care este acceptat începând cu OpenSSH 7.2, ceea ce poate crea probleme de compatibilitate atunci când se încearcă procesarea certificatelor semnate în OpenSSH 8.2 pe sisteme cu versiuni mai vechi de OpenSSH (pentru a evita problema la formarea semnăturii, se poate specifica explicit „ssh-keygen -t ssh-rsa” sau se pot utiliza algoritmii ecdsa-sha2-nistp256/384/521, acceptați începând cu OpenSSH 5.7).
Paleta de culori a fost modificată, oferind o separare mai contrastantă între text și fundal.
- În sshd_config a fost adăugată directiva Include, care permite includerea conținutului altor fișiere în poziția curentă a fișierului de configurare (la specificarea numelui fișierului se pot utiliza măști glob);
- În ssh-keygen a fost adăugată opțiunea „no-touch-required”, care dezactivează necesitatea unei confirmări fizice pentru accesul la token la generarea cheii;
- În sshd_config a fost adăugată directiva PubkeyAuthOptions, care combină diferite opțiuni legate de autentificarea pe baza cheilor publice. În prezent, este acceptat doar flagul „no-touch-required” pentru a sări peste verificarea prezenței fizice la autorizarea cu ajutorul tokenului. De asemenea, în fișierul authorized_keys a fost adăugată opțiunea „no-touch-required”;
- La ssh-keygen a fost adăugată opțiunea „-O write-attestation=\/path”, care permite scrierea certificatelor de atestare FIDO suplimentare în timpul generării cheilor. OpenSSH momentan nu folosește aceste certificate, dar ele ar putea fi utilizate pentru a verifica plasarea cheii în stocarea hardware de încredere.
- În setările ssh și sshd, prin directiva IPQoS acum este posibilă stabilirea modului de prioritizare a traficului. (Lower-Effort Per-Hop Behavior);
- În ssh, atunci când se setează valoarea „AddKeysToAgent=yes”, dacă cheia nu conține un câmp de comentariu, aceasta va fi adăugată în ssh-agent cu indicarea căii către cheie ca comentariu. În
ssh-keygen și ssh-agent ca comentarii pentru cheie sunt acum folosite și etichete PKCS#11 și numele subiectului X.509 în locul căii către bibliotecă. - La ssh-keygen a fost adăugată capacitatea de a exporta PEM pentru cheile DSA și ECDSA.
- A fost adăugat un nou fișier executabil ssh-sk-helper, folosit pentru izolarea bibliotecii de acces la token-uri FIDO\/U2F.
- În ssh și sshd a fost adăugată opțiunea de compilare „—with-zlib” pentru compilarea cu suport pentru biblioteca zlib.
- Conform cerințelor RFC4253, bannerul de conectare a fost actualizat pentru a arăta o avertizare cu privire la blocarea accesului din cauza depășirii limitelor MaxStartups. Pentru a simplifica diagnosticul, în antetul procesului sshd, vizibil prin utilizarea utilitarului ps, a fost adăugată afișarea numărului de conexiuni autentificate în acel moment și starea limitelor MaxStartups.
- În ssh și ssh-agent, atunci când se apelează programul pentru a afișa promptul definit prin $SSH_ASKPASS, acum este transmis și un flag cu tipul promptului: „confirm” - dialog de confirmare (da/nu), „none” - mesaj informativ, „blank” - solicitare de parolă.
- La ssh-keygen a fost adăugată o nouă operațiune cu semnături digitale „find-principals” pentru căutarea în fișierul allowed-signers al utilizatorului asociat cu semnătura digitală specificată.
- A fost îmbunătățită suportul pentru izolarea procesului sshd în Linux prin mecanismul seccomp: au fost interzise apelurile de sistem IPC, dar sunt permise clock_gettime64(), clock_nanosleep_time64 și clock_nanosleep().
Sursa: opennet.ro
