Despre SSH

Ce este SSH ?
Secure Shell (SSH) este un protocol de rețea criptografic pentru operarea serviciilor de rețea în siguranță printr-o rețea securizată.

SSH, cunoscut și sub numele de Secure Shell sau Secure Socket Shell, este un protocol de rețea care oferă utilizatorilor, în special administratorilor de sistem, o modalitate sigură de a accesa computerul printr-o rețea securizată. Pe lângă furnizarea de servicii de rețea sigure, SSH se referă la pachetul de utilități care implementează protocolul SSH. Secure Shell oferă o autentificare puternică a parolei și o autentificare a cheii publice, precum și comunicațiile de date criptate între două computere care se conectează la o rețea deschisă, cum ar fi internetul. Pe lângă faptul că asigură o criptare puternică, SSH este utilizat pe scară largă de administratorii de rețea pentru gestionarea sistemelor și aplicațiilor de la distanță, permițându-le să se conecteze la un alt computer printr-o rețea, să execute comenzi și să mute fișierele de la un computer la altul.

SSH se referă atât la protocolul de rețea criptografică, cât și la suita de utilități care implementează acel protocol. SSH utilizează modelul server-client, conectând o aplicație client Secure Shell, în care este afișată sesiunea, cu un server SSH, în care se execută sesiunea. Implementările SSH includ adesea suport pentru protocoalele de aplicație utilizate pentru emularea terminalelor sau transferurile de fișiere. SSH poate fi de asemenea utilizat pentru a crea tunele sigure pentru alte protocoale de aplicație, de exemplu, pentru a rula în siguranță sesiunile grafice ale sistemului X Window System de la distanță. În mod implicit, un server SSH ascultă portul standard TCP (Transmission Control Protocol) (TCP) 22.





Cum funcționează SSH

Secure Shell a fost creat pentru a înlocui programele de emulare sau autentificare a terminalelor nesigure, cum ar fi Telnet, rlogin (conectare la distanță) și rsh (shell de la distanță); SSH activează aceleași funcții (conectarea și rularea sesiunilor de terminal pe sisteme la distanță). SSH înlocuiește, de asemenea, programele de transfer de fișiere, cum ar fi Protocolul de transfer de fișiere (FTP) și rcp (copie la distanță).

Utilizări

Prezent în toate centrele de date, SSH se livrează în mod implicit cu fiecare server Unix, Linux și Mac. Conexiunile SSH au fost utilizate pentru a asigura multe tipuri diferite de comunicații între o mașină locală și o gazdă la distanță, inclusiv accesul securizat de la distanță la resurse, executarea de la distanță a comenzilor, livrarea de patch-uri software și actualizări și alte activități administrative sau de gestionare. Pe lângă crearea unui canal sigur între computerele locale și la distanță, SSH este utilizat pentru gestionarea rutelor, hardware-ului serverului, platformelor de virtualizare, sistemelor de operare (sisteme de operare) și aplicațiilor interne de gestionare a sistemelor și a transferurilor de fișiere.

Secure Shell este utilizat pentru a vă conecta la servere, a face modificări, a efectua încărcări și a ieși, fie folosind instrumente, fie direct prin terminal. Cheile SSH pot fi folosite pentru automatizarea accesului la servere și adesea sunt utilizate în scripturi, sisteme de rezervă și instrumente de gestionare a configurației. Conceput pentru a fi convenabil și să funcționeze peste granițele organizaționale, cheile SSH oferă conectare unică (SSO), astfel încât utilizatorii să se poată deplasa între conturile lor fără să tasteze o parolă de fiecare dată.

În timp ce joacă roluri esențiale în gestionarea identității și gestionarea accesului, SSH face mai mult decât autentificarea printr-o conexiune criptată. Tot traficul SSH este criptat; indiferent dacă utilizatorii transferă un fișier, navighează pe web sau execută o comandă, acțiunile lor sunt private.

Deși este posibil să folosești SSH cu un ID de utilizator și o parolă obișnuita ca credențiale, SSH se bazează mai des pe perechi de chei publice pentru a autentifica gazdele reciproc. Utilizatorii individuali trebuie să folosească în continuare ID-ul de utilizator și parola - sau alte metode de autentificare - pentru a se conecta la gazda de la distanță în sine, dar mașina locală și mașina de la distanță se autentifică separat între ele. Acest lucru se realizează prin generarea unei perechi de chei publice unice pentru fiecare gazdă în comunicare; o singură sesiune necesită două perechi de chei publice: o pereche de chei publice pentru a autentifica mașina la distanță la mașina locală și o a doua pereche de chei publice pentru a autentifica mașina locală la mașina de la distanță.

Capabilități Secure Shell

Funcțiile pe care le permite SSH includ următoarele:

  • asigurarea accesului la distanță la sisteme sau dispozitive de rețea activate pentru SSH pentru utilizatori, precum și la procese automatizate;
  • sesiuni de transfer de fișiere sigure și interactive;
  • transferuri automatizate și securizate de fișiere;
  • emiterea sigură a comenzilor pe dispozitive sau sisteme la distanță și gestionarea sigură a componentelor infrastructurii de rețea.
  • SSH poate fi utilizat în mod interactiv pentru a activa sesiunile terminale și ar trebui utilizat în locul programului Telnet mai puțin sigur. SSH este de asemenea utilizat frecvent în scripturi și alte programe software pentru a permite programelor și sistemelor să acceseze de la distanță și în siguranță date și alte resurse.

Istoric SSH

Prima versiune a SSH a apărut în 1995 și a fost proiectată de Tatu Ylönen, care era, la acea vreme, cercetător la Universitatea de Tehnologie din Helsinki și ulterior a început să înceapă SSH Communications Security, un furnizor de cibersecuritate cu sediul în Finlanda. De-a lungul timpului, s-au descoperit diverse defecte în SSH-1, iar versiunea este considerată ca fiind învechită și nu este sigură de utilizat.

SSH-2, versiunea actuală a protocoalelor Secure Shell, a fost adoptată ca Standard Track de către Internet Engineering Task Force (IETF) în 2006. SSH-2 nu este compatibil cu SSH-1 și folosește un schimb de chei Diffie-Hellman și o verificare mai puternică a integrității care utilizează coduri de autentificare a mesajelor pentru a îmbunătăți securitatea. Clienții și serverele SSH pot utiliza o serie de metode de criptare, cele mai utilizate pe scară largă fiind Advanced Encryption Standard (AES) și Blowfish.

Până în prezent, nu există vulnerabilități exploatabile cunoscute în SSH-2, deși informațiile scurse de Edward Snowden în 2013 sugerau că Agenția de Securitate Națională (NSA) ar putea fi în măsură să decripteze un anumit trafic SSH.

Probleme de securitate SSH

Cei care folosesc SSH ar trebui să ia în considerare modalitățile de gestionare a cheilor gazdă stocate pe sistemele client; aceste chei se pot acumula în timp, în special pentru personalul tehnologiei informației (IT) care trebuie să poată accesa gazdele la distanță în scopuri de management. Deoarece datele stocate într-un fișier SSH known_hosts pot fi utilizate pentru a obține acces autentificat la sisteme la distanță, organizațiile ar trebui să fie conștiente de existența acestor fișiere și ar trebui să aibă un proces standard pentru păstrarea controlului asupra fișierelor, chiar și după ce un sistem este preluat.

Dezvoltatorii ar trebui, de asemenea, să fie atenți atunci când încorporează comenzi sau funcții SSH într-un script sau un alt tip de program. Deși este posibil să se emită o comandă SSH care include un ID de utilizator și o parolă pentru autentificarea utilizatorului mașinii locale într-un cont de pe gazda de la distanță, acest lucru poate expune datele de acreditare unui atacator cu acces la codul sursă.

Shellshock, o gaură de securitate a procesorului de comandă Bash, poate fi executat prin SSH, dar este o vulnerabilitate în Bash, nu în SSH. Cea mai mare amenințare la adresa SSH este gestionarea slabă a cheilor. Fără crearea centralizată corespunzătoare, rotirea și eliminarea cheilor SSH, organizațiile pot pierde controlul asupra persoanelor care au acces la resurse, în special când SSH este utilizat în procesele automate de la aplicație la aplicație.

SSH vs. Telnet

Telnet a fost unul dintre primele protocoale de aplicare a internetului - celălalt este FTP - iar Telnet este folosit pentru inițierea și menținerea unei sesiuni de emulare a terminalelor pe o gazdă la distanță.

SSH și Telnet au funcții similare, diferența primară dintre ele fiind faptul că protocolul SSH utilizează criptografia cu chei publice pentru a autentifica punctele finale la configurarea unei sesiuni terminale, precum și pentru criptarea comenzilor și ieșirii sesiunii.

În timp ce Telnet este utilizat în principal pentru emularea terminalului, SSH poate fi utilizat pentru a realiza emulația terminalului - similar cu comanda rlogin - precum și pentru emiterea de comenzi de la distanță ca și cu rsh, transferul fișierelor folosind SSH File Transfer Protocol (SFTP) și tunelarea altor aplicații.

SSH vs. SSL / TLS

Protocolul Transport Layer Security (TLS), care actualizează protocolul Secure Sockets Layer (SSL), a fost proiectat pentru a oferi securitate pentru transmisiile de rețea la nivelul de transport. Protocolul SSH funcționează, de asemenea, la sau chiar deasupra stratului de transport, dar există diferențe importante între cele două protocoale.

În timp ce ambele se bazează pe perechi de chei publice / private pentru autentificarea gazdelor, sub TLS, numai serverul este autentificat cu o pereche de chei. SSH utilizează o pereche de chei separate pentru a autentifica fiecare conexiune: o pereche de chei pentru o conexiune de la o mașină locală la o mașină de la distanță și o a doua pereche de chei pentru a autentifica conexiunea de la mașina de la distanță la mașina locală.

O altă diferență între SSH și TLS este faptul că TLS permite criptarea conexiunilor fără autentificare sau autentificarea fără criptare; SSH criptează și autentifică toate conexiunile. SSH oferă profesioniștilor IT și securitate informațională (infosec) un mecanism sigur pentru gestionarea de la distanță a clienților SSH. În loc să necesite autentificare cu parolă pentru inițializarea unei conexiuni între un client SSH și server, SSH autentifică dispozitivele în sine. Aceasta permite personalului IT să se conecteze cu sisteme la distanță și să modifice configurațiile SSH, inclusiv adăugarea sau eliminarea perechilor de chei de gazdă în fișierul known_hosts.

Implementări SSH

Ca un protocol deschis, SSH a fost implementat pentru majoritatea platformelor de calcul, iar implementarea OpenSSH open source este cea mai frecvent întâlnită pe Linux, Unix și alte sisteme de operare bazate pe Berkeley Software Distribution (BSD), inclusiv macOS-ul Apple.
OpenSSH a fost portat să ruleze în Windows PowerShell începând din 2015, iar în 2018, suportul opțional OpenSSH a fost adăugat la Windows 10. În timp ce SSH este direct accesibil implicit în majoritatea sistemelor de operare asemănătoare Unix, versiunea portată a Microsoft a OpenSSH trebuie să fie activată în mod explicit în aplicația Setări Windows.
PuTTY este o altă implementare open source a SSH și, în timp ce este disponibilă în prezent pentru Windows, macOS și Unix / BSD, PuTTY a fost scris inițial pentru a rula pe Windows. A fost mult timp una dintre opțiunile de top pentru utilizarea SSH pe un sistem Windows.
Cele mai multe implementări ale suitei SSH cuprind trei utilități - slogin (conectare sigură), ssh și scp (copiere sigură) - care sunt versiuni sigure ale utilităților Unix nesigure anterioare: rlogin, rsh și rcp. SSH utilizează criptografia cu chei publice pentru autentificarea computerului de la distanță și permite computerului de la distanță să autentifice utilizatorul, dacă este necesar.
În prezent, există zeci de implementări SSH disponibile pentru diverse platforme și sub o varietate de licențe de tip open source și proprietate.

Tunel SSH

Tunelarea SSH, cunoscută și sub numele de SSH port forwarding, este o tehnică care permite utilizatorului să deschidă un tunel securizat între o gazdă locală și o gazdă la distanță. Redirecționarea porturilor SSH este o tehnică de redirecționare a traficului de rețea către un anumit port / adresă IP, astfel încât o gazdă la distanță să fie accesibilă direct de aplicațiile de la gazda locală. Destinația poate fi pe serverul SSH de la distanță sau poate fi configurat serverul pentru a-l redirecționa către o altă gazdă la distanță.




Tunelurile SSH sunt instrumente puternice pentru administratorii IT, precum și pentru actorii nocivi, deoarece pot tranzita un firewall de întreprindere nedetectat. Drept urmare, există instrumente disponibile pentru a preveni utilizarea neautorizată a tunelurilor SSH printr-un firewall corporativ.

Comenzi SSH

Deși există implementări grafice ale SSH, programul este de obicei invocat la linia de comandă sau executat ca parte a unui script. Rulând comanda ssh de unul singur, fără argumente, cum ar fi o gazdă de destinație sau un ID de utilizator, returnează o listă de parametri și opțiuni de comandă SSH.

Cea mai de bază formă de comandă SSH este de a invoca programul și numele gazdă de destinație sau adresa IP Protocol (Internet):

ssh server.example.org
Aceasta se va conecta la destinație, server.example.org; gazda de destinație va răspunde solicitând o parolă pentru ID-ul de utilizator al contului pe care rulează clientul. Cu alte cuvinte, dacă ID-ul de utilizator utilizat este jsmith, atunci gazda la distanță va solicita o parolă asociată cu contul jsmith de pe gazda de la distanță. În multe cazuri, ID-ul utilizatorului pentru gazda de la distanță va fi diferit, caz în care comanda ar trebui să fie emisă cu ID-ul de utilizator gazdă la distanță, astfel:

ssh remote_host_userID@server.example.org
SSH poate fi de asemenea utilizat de la linia de comandă pentru a emite o singură comandă pe gazda de la distanță și apoi pentru a ieși - de exemplu:

ssh exemplu.org ls
Această comandă execută comanda Unix ls, care listează tot conținutul directorului curent pe gazda de la distanță. Deși acest exemplu este banal, demonstrează că SSH poate fi utilizat pentru a executa comenzi mai interesante pe o gazdă de la distanță. De exemplu, poate fi creată o comandă care inițializează o instanță a serverului care va oferi accesului unei mașini la distanță la un singur fișier - sau la o altă resursă - și apoi a terminat serverul după ce fișierul este accesat de gazda la distanță specificată.

Pe lângă executabilul ssh, SSH are alte comenzi executabile utilizate la linia de comandă pentru funcții suplimentare, inclusiv următoarele:

  • sshd inițiază serverul SSH, care așteaptă solicitări de conectare SSH primite și permite sistemelor autorizate să se conecteze la gazda locală. ssh-keygen este un program pentru crearea unei noi perechi de chei de autentificare pentru SSH, care poate fi utilizat pentru a automatiza conectările, pentru a implementa SSO și pentru a autentifica gazdele.
  • ssh-copy-id este un program folosit pentru a copia, instala și configura o cheie SSH pe un server pentru a automatiza conectările fără parolă și SSO.
  • ssh-agent este un program de ajutor care urmărește cheile de identitate și parolele lor - din care SSH derivă o cheie de criptare - și permite utilizatorului să utilizeze cheile de identitate pentru a se conecta la diferite servere, fără a fi nevoie să reintroduceți parolele sau parolele.
  • ssh-add este folosit pentru a adăuga o cheie la agentul de autentificare SSH și este utilizat cu ssh-agent pentru a implementa SSO folosind SSH.
  • scp este un program folosit pentru copierea fișierelor de la un computer la altul și este o versiune securizată de SSH a rcp.
  • sftp este un program folosit pentru copierea fișierelor de la un computer la altul și este o versiune securizată de SSH de ftp, Protocolul original de transfer de fișiere. SFTP a devenit mecanismul preferat de partajare a fișierelor pe internet, înlocuind atât FTP cât și FTP / S (FTP Secure), care este un protocol pentru utilizarea FTP peste un tunel SSL / TLS.