SSH: Shell securizat
SSH înseamnă Secure Shell. Este cunoscut și sub numele de Secure Socket Shell. Un protocol de rețea criptografic numit Secure Shell (SSH) este utilizat pentru a opera în siguranță serviciile de rețea în rețele nesigure. Arhitectura client-server este baza aplicațiilor SSH, care leagă o instanță client SSH cu un server SSH.
Ca succesor pentru Telnet și protocoalele shell Unix la distanță nesigure, cum ar fi Berkeley Remote Shell (rsh) și protocoalele asociate rlogin și rexec, SSH a fost creat pentru sistemele de operare asemănătoare Unix care utilizează comunicații nesecurizate cu simboluri de autentificare în text simplu.
Definiție
Putem aplica SSH în mai multe moduri diferite. Cea mai simplă implementare criptează datele utilizând perechi de chei public-private generate automat la ambele capete ale unui canal de comunicație și ale unei conexiuni de rețea. După aceea, autentifică utilizatorul folosind o parolă. Când un utilizator generează manual o pereche de chei public-private, autentificarea este practic finalizată atunci când perechea de chei este stabilită, permițând lansarea instantanee a unei sesiuni fără solicitarea unei parole.
miez microlitic
În acest caz, proprietarul păstrează secretul cheii private corespunzătoare, iar cheia publică este instalată pe toate mașinile care trebuie să acorde acces proprietarului. Deși cheia privată servește drept bază pentru autentificare, cheia nu este niciodată trimisă prin rețea atunci când se efectuează autentificare. SSH confirmă că furnizorul cheii publice deține și cheia privată corespunzătoare.
Conectarea cheii publice necunoscute cu o cheie privată cunoscută în toate versiunile de SSH este crucială înainte de a le accepta ca chei publice legitime cu ID-uri. Acceptarea unei chei publice de la un atacator fără validarea acesteia va accepta un atacator care nu are încredere ca utilizator legitim.
Creare
Tatu Ylönen, un informatician din Finlanda, a creat SSH pentru prima dată în 1995. Dezvoltarea ulterioară a suitei de protocoale a avut loc în multe grupuri de dezvoltatori, ducând la diverse iterații de implementare. Există implementări disponibile pentru toate sistemele de operare populare, inclusiv sistemele încorporate. OpenSSH, pe care creatorii OpenBSD l-au pus la dispoziție ca software open-source în 1999, este cel mai frecvent utilizat stiva de software.
Gestionarea cheilor OpenSSH pentru autentificare
Lista de chei publice aprobate este păstrată în mod obișnuit pe sistemele de tip Unix în fișierul ~/.ssh/authorized keys din directorul principal al utilizatorului, care are privilegii de conectare la distanță. SSH respectă acest fișier numai dacă nu poate fi modificat de nimeni altul decât proprietarul și root. Parola nu mai este necesară atunci când sunt prezente atât cheia publică a terminalului la distanță, cât și cheia privată corespunzătoare a terminalului local. Dar putem folosi o expresie de acces pentru a bloca cheia privată pentru mult mai multă protecție. De asemenea, putem căuta codul secret în locații comune și putem folosi o opțiune de linie de comandă pentru a furniza calea completă (opțiunea -i pentru ssh).
SSH oferă în plus o autentificare bazată pe parole criptate cu generarea automată a cheilor. Atacatorul în acest scenariu poate uzurpa identitatea serverului de încredere, poate solicita parola și o poate obține (atac de tip man-in-the-middle). Pe partea de server, putem dezactiva autentificarea prin parolă.
Utilizare
SSH folosește paradigma client-server. De obicei, SSH este folosit pentru înregistrare. De asemenea, poate face tunel porturi TCP, transmite conexiuni X11 și executa comenzi pe un sistem de la distanță. De obicei, conexiunile la un daemon SSH care permite conexiuni la distanță sunt realizate folosind o aplicație client SSH. Ambele se găsesc adesea pe majoritatea sistemelor de operare contemporane, cum ar fi macOS, distribuțiile Linux, OpenBSD, FreeBSD, NetBSD, Solaris și OpenVMS. Unele versiuni sunt proprietare, freeware și open source, cu diferite grade de complexitate și exhaustivitate (cum ar fi PuTTY și versiunea OpenSSH inclusă cu Cygwin și OpenSSH). În special, SSH nu este inclus în mod implicit în versiunile Windows până la Windows 10 versiunea 1709.
Funcționalitatea similară de gestionare a fișierelor (sincronizare, copiere și ștergere de la distanță) este oferită de aplicația Windows gratuită și open-source WinSCP, care utilizează PuTTY ca back-end. Fără a fi nevoie să fie instalate pe computerul client, WinSCP și PuTTY sunt disponibile ambalate pentru a funcționa direct de pe o unitate USB. Activarea unei funcții în aplicația de setări este adesea necesară pentru a configura un server SSH în Windows.
Pentru a gestiona problemele legate de conexiune și pentru a preveni riscurile de securitate legate de expunerea directă a unei mașini virtuale bazate pe cloud la Internet, SSH este crucial în cloud computing. O conexiune sigură prin Internet poate fi posibilă printr-un computer virtual tunel SSH printr-un firewall. Pentru acest protocol, IANA a desemnat portul TCP 22, portul UDP 22 și portul SCTP 22.
Încă din 2001, IANA a clasificat portul TCP implicit 22 pentru serverele SSH drept unul dintre porturile binecunoscute. Protocolul de nivel de transport orientat spre conexiune SCTP poate fi utilizat pentru a rula SSH în loc de TCP.
Progresul istoric
Iterația 1
Un atac de adulmecare a parolelor asupra rețelei instituției sale l-a inspirat pe Tatu Ylönen, un cercetător de la Universitatea de Tehnologie din Helsinki din Finlanda, care a creat iterația inițială a protocolului (cunoscut astăzi ca SSH-1) în 1995.
SSH a fost conceput pentru a prelua rolul protocoalelor anterioare, inclusiv rlogin, TELNET, FTP și rsh, cărora le lipseau garanțiile solide de autentificare și secret. Ylönen și-a făcut aplicația disponibilă ca program gratuit. În iulie 1995, dispozitivul a devenit rapid popular. Până la sfârșitul anului 1995, existau 20.000 de utilizatori SSH răspândiți în 50 de națiuni diferite.
Pentru a promova și promova SSH, Ylönen a înființat SSH Communications Security în decembrie 1995. Diverse componente software libere, inclusiv GNU libgmp, au fost utilizate în prima lansare a programului SSH, dar iterațiile ulterioare furnizate de SSH Communications Security au devenit software din ce în ce mai proprietar. Potrivit estimărilor, până în anul 2000 erau 2 milioane de utilizatori.
Iterația 2
Internet Engineering Task Force (IETF) a desemnat grupul de lucru responsabil cu crearea protocolului SSH versiunea 2 ca „Secsh” în documentația sa oficială.
converti un obiect java în json
SSH-2, o iterație îmbunătățită a protocolului, a devenit un standard în 2006. SSH-1 nu este compatibil cu această versiune. SSH-2 oferă upgrade de funcționalitate și securitate peste SSH-1. De exemplu, schimbul de chei Diffie-Hellman și verificarea robustă a integrității prin coduri de autentificare a mesajelor oferă o securitate mai mare. Capacitatea de a opera un număr nelimitat de sesiuni shell pe o singură conexiune SSH este una dintre noile capabilități ale SSH-2. Deoarece SSH-2 este mai avansat și utilizat pe scară largă decât SSH-1, anumite implementări, cum ar fi libssh (v0.8.0+), Lsh și Dropbear, acceptă doar SSH-2.
Iterația 1.99
RFC 4253 a cerut ca un server SSH care acceptă 2.0, precum și versiunile anterioare, să indice versiunea sa de protocol ca 1.99 în ianuarie 2006, mult după ce versiunea 2.1 a fost dezvoltată. Acest număr de versiune este folosit pentru a indica compatibilitatea cu versiunea anterioară, mai degrabă decât pentru a reprezenta o revizuire anterioară a software-ului.
OSSH și OpenSSH
De când ultima versiune a programului SSH original, versiunea 1.2.12, a fost distribuită sub o licență open-source în 1999, dezvoltatorii au lucrat la o versiune de software gratuită. Acesta a fost folosit ca bază pentru programul OSSH al lui Björn Grönvall. Curând după aceea, echipa OpenBSD a clonat munca lui Grönvall pentru a produce OpenSSH, care a fost inclus în OpenBSD Release 2.6. Ei au creat o ramură de „portabilitate” din această versiune pentru a transfera OpenSSH pe diferite sisteme de operare.
Cea mai utilizată implementare SSH din 2005 a fost OpenSSH, versiunea implicită în multe distribuții de sisteme de operare. După eliminarea suportului SSH-1 din baza de cod în versiunea OpenSSH 7.6, OpenSSH este încă în curs de actualizare și acceptă protocolul SSH-2. Între timp, OSSH nu mai este relevant.
Utilizări
Utilizatorul „josh” „SSHed” de la computerul local „foo fighter” la mașina îndepărtată „tengwar” pentru a rula xeyes ca exemplu de tunelare a unui program X11 prin SSH. Oamenii folosesc clientul Windows SSH PuTTY pentru a accesa OpenWrt.
SSH este un protocol care funcționează cu multe sisteme, inclusiv Microsoft Windows și majoritatea variantelor Unix (Linux, BSD, inclusiv macOS Apple și Solaris). Următoarele aplicații pot avea nevoie de capabilități care sunt exclusive sau compatibile cu anumiți clienți sau servere SSH. De exemplu, în prezent este doar fezabil să utilizați serverul OpenSSH și implementarea clientului a protocolului SSH pentru a construi un VPN.
- Pentru a accesa un shell pe o gazdă îndepărtată (înlocuind Telnet și rlogin)
- Pentru efectuarea unei comenzi solitare pe o gazdă îndepărtată (înlocuind rsh)
- Pentru configurarea autentificarii automate (fără parolă) a unui server îndepărtat (de exemplu, folosind OpenSSH)
- Fiind un VPN criptat complet funcțional, rețineți că numai clientul și serverul OpenSSH acceptă această capacitate.
- Pentru transmiterea X de la o gazdă îndepărtată (posibil prin mai multe gazde intermediare)
- Pentru utilizarea clienților SSH care acceptă protocolul SOCKS pentru a naviga pe Internet printr-o conexiune proxy criptată.
- Pentru montarea în siguranță a directorului unui server la distanță ca sistem de fișiere pe o mașină locală care utilizează SSHFS.
- Prin una sau mai multe dintre tehnologiile menționate mai sus pentru monitorizarea și administrarea automată a serverului de la distanță.
- Pentru dezvoltarea dispozitivelor mobile sau încorporate compatibile cu SSH.
- Pentru a proteja mecanismele de transfer de fișiere.
Metode de transfer pentru fișiere
Mai multe sisteme de transfer de fișiere folosesc protocoale Secure Shell, cum ar fi
- Prin SSH, Secure Copy (SCP) este dezvoltată din protocolul RCP.
- rsync, care se presupune a fi mai eficient decât SCP, este adesea operat printr-o conexiune SSH.
- O alternativă la FTP care este sigură este SSH File Transfer Protocol (SFTP) (a nu se confunda cu FTP prin SSH sau FTPS)
- FISH, sau fișierele transferate prin protocolul shell, a fost introdus în 1998 și dezvoltat din SSH prin instrucțiuni shell Unix.
- Aspera, cunoscut și sub numele de Fast and Secure Protocol (FASP), folosește SSH pentru comandă și pentru transportul de date, porturi UDP.
Arhitectură
Trei componente distincte alcătuiesc arhitectura stratificată a protocolului SSH:
- Protocolul de control al transmisiei (TCP) al TCP/IP este utilizat în mod obișnuit de stratul de transport (RFC 4253), cu numărul portului 22 pus deoparte ca port de ascultare a serverului. Acest nivel implementează criptarea, compresia, verificarea integrității, schimbul inițial de chei și autentificarea serverului. Deși fiecare implementare poate permite mai mult, ea expune stratului superior o interfață pentru transmiterea și primirea pachetelor de text simplu de până la 32.768 de octeți fiecare. De obicei, după ce 1 GB de date a fost transportat sau după ce a trecut o oră, oricare dintre acestea survine primul, stratul de transport aranjează schimbul de chei.
- Autentificarea clientului este gestionată prin intermediul stratului de autentificare a utilizatorului (RFC 4252), care oferă, de asemenea, mai multe tehnici de autentificare. Autentificarea condusă de client înseamnă că clientul SSH, nu serverul, poate cere utilizatorului o parolă. Doar cererile de autentificare ale clientului primesc un răspuns de la server. Următoarele tehnici de autentificare a utilizatorului sunt adesea utilizate:
Parola , o tehnică simplă de autentificare a parolei care include posibilitatea de a modifica parola. Nu toate programele utilizează această tehnică. - Acceptând de obicei cel puțin perechi de chei DSA, ECDSA sau RSA, sistemul cheie publică este o tehnică de autentificare bazată pe chei publice. Alte implementări acceptă în plus certificate X.509.
- Funcționalitatea de conectare unică pentru sesiunile SSH este furnizată prin GSSAPI tehnici de autentificare, care oferă un sistem extensibil pentru a gestiona autentificarea SSH folosind mecanisme externe precum Kerberos 5 sau NTLM. Deși OpenSSH are o implementare GSSAPI funcțională, implementările SSH comerciale integrează adesea aceste tehnici pentru utilizare în companii.
- Ideea canalelor care definesc serviciile SSH oferite este definită de nivelul de conexiune (RFC 4254). Putem multiplexa mai multe conexiuni SSH de la una singură. Ambele transmit date în ambele direcții. Solicitările de canal transmit date în afara benzii specifice unui canal dat, cum ar fi codul de ieșire al unui proces de partea serverului sau modificarea dimensiunii ferestrei unui terminal. În plus, folosind dimensiunea ferestrei de recepție, fiecare canal își controlează fluxul. Clientul SSH face o solicitare globală pentru a redirecționa un port pe partea serverului. Tipurile de canale care sunt comune includ:
- Shell pentru SFTP, exec și terminale (inclusiv transferuri SCP)
- Direct-TCPIP pentru conexiuni redirecționate de la client la server.
- Conexiuni redirecționate de la server la client folosind forwarded-tcpip
- Pentru a confirma legitimitatea gazdei, înregistrarea SSHFP DNS (RFC 4255) oferă amprentele digitale ale cheii gazdei publice.
Datorită designului său deschis, putem folosi SSH pentru o gamă largă de sarcini pe lângă securizarea cochiliilor, oferindu-i o mare versatilitate.
Vulnerabilități
SSH-1
Datorită protecției inadecvate a integrității datelor oferite de CRC-32 în această versiune de protocol, în 1998 a fost identificată o vulnerabilitate în SSH 1.5 care a permis inserarea neautorizată a materialului într-un flux SSH criptat. În majoritatea implementărilor, au adăugat un patch cunoscut sub numele de SSH Compensation Attack Detector. Câteva dintre aceste implementări revizuite au inclus o nouă eroare de depășire a numărului întreg, permițând atacatorilor să ruleze cod arbitrar cu root sau capabilitățile demonului SSH.
O defecțiune care le permite atacatorilor să schimbe ultimul bloc al unei sesiuni criptate IDEA a fost găsită în ianuarie 2001. O altă defecțiune care a permis unui server necinstiți să transmită autentificarea unui client către alt server a fost găsită în aceeași lună.
Datorită vulnerabilităților sale inerente, SSH-1 este în general considerat ca fiind învechit și ar trebui evitat prin eliminarea explicită a rezervării SSH-1. Majoritatea serverelor și clienților actuali acceptă SSH-2.
Recuperare text simplu pentru CBC
O vulnerabilitate teoretică care a permis recuperarea a până la 32 de biți de text simplu dintr-un bloc de text cifrat criptat folosind metoda de criptare standard a timpului, CBC, a fost descoperită în toate versiunile de SSH în noiembrie 2008. Cea mai simplă remediere este trecerea la CTR, counter modul, în loc de modul CBC, care face SSH imun la atac.
NSA suspectată de decriptare
Eliberarea de către Edward Snowden a documentelor sensibile către Der Spiegel pe 28 decembrie 2014 implică că Agenția Națională de Securitate va putea decoda anumite comunicații SSH.
cadru de primăvară