SSH

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 12 iunie 2019; verificările necesită 23 de modificări .
SSH
Nume Shell securizat
Nivel (conform modelului OSI ) Aplicat
Familie TCP/IP
Port/ID 22/ TCP
Scopul protocolului Acces de la distanță
Specificație RFC 4251
Principalele implementări (clienți) OpenSSH , PuTTY / KiTTY , SecureCRT , Xshell
Implementări de bază ( servere ) OpenSSH
 Fișiere media la Wikimedia Commons

SSH ( ing.  Security Shell  - "secure shell" [ 1 ] ) este un protocol de rețea de nivel de aplicație care vă permite să controlați de la distanță sistemul de operare și conexiunile TCP de tunel (de exemplu, pentru a transfera fișiere). Funcționalitate similară cu protocoalele Telnet și rlogin , dar, spre deosebire de acestea, criptează tot traficul, inclusiv parolele transmise . SSH permite alegerea diferiților algoritmi de criptare. Clienții SSH și serverele SSH sunt disponibili pentru majoritatea sistemelor de operare în rețea.

SSH vă permite să transferați în siguranță aproape orice alt protocol de rețea într-un mediu nesigur . Astfel, puteți nu numai să lucrați de la distanță pe un computer printr-un shell de comandă , ci și să transmiteți un flux audio sau video pe un canal criptat (de exemplu, de la o cameră web ) [2] . SSH poate utiliza, de asemenea, compresia datelor transmise pentru criptarea ulterioară, ceea ce este convenabil, de exemplu, pentru lansarea de la distanță a clienților X Window System .

Majoritatea furnizorilor de găzduire oferă clienților acces SSH la directorul lor principal contra cost. Acest lucru poate fi convenabil atât pentru lucrul în linia de comandă, cât și pentru lansarea de la distanță a programelor (inclusiv aplicații grafice).

Informații tehnice despre protocol

SSH este un protocol de nivel de aplicație. Serverul SSH ascultă de obicei conexiunile pe portul TCP 22. Specificația protocolului SSH-2 este în RFC 4251 . Pentru autentificarea pe server, SSH folosește un protocol de autentificare a părții bazat pe algoritmi de semnătură digitală RSA sau DSA , dar este permisă și autentificarea cu parolă (modul compatibil cu Telnet ) și chiar adresa IP a gazdei (modul compatibil cu rlogin ).

  1. Autentificarea prin parolă este cea mai comună. La fel ca https , fiecare conexiune generează o cheie secretă partajată pentru a cripta traficul.
  2. Cu autentificarea perechii de chei, o pereche de chei publice și private este pre-generată pentru un anumit utilizator. Pe mașina de la care doriți să vă conectați, este stocată cheia privată, iar pe mașina de la distanță, cheia publică. Aceste fișiere nu sunt transferate în timpul autentificării, sistemul verifică doar dacă proprietarul cheii publice o deține și pe cea privată. Cu această abordare, de regulă, autentificarea automată este configurată în numele unui anumit utilizator în sistemul de operare .
  3. Autentificarea prin adresa IP nu este sigură, această caracteristică este cel mai adesea dezactivată.

Algoritmul Diffie-Hellman (DH) este utilizat pentru a crea un secret partajat (cheie de sesiune ). Datele transmise sunt criptate folosind algoritmi de criptare simetrică , AES , Blowfish sau 3DES . Integritatea transferului de date este verificată folosind CRC32 în SSH1 sau HMAC - SHA1 / HMAC - MD5 în SSH2.

Pentru a comprima datele criptate, poate fi utilizat algoritmul LempelZiv ( LZ77 ) , care oferă același nivel de compresie ca și arhivatorul ZIP . Comprimarea SSH este activată numai la cererea clientului și este rar folosită în practică.

Istorie și dezvoltare

Versiunea 1.x

În 1995, Tatu Ylönen , cercetător la Universitatea de Tehnologie din Helsinki, Finlanda, a dezvoltat prima versiune a protocolului (acum numită SSH-1), declanșată de un atac de exploatare a parolelor asupra rețelei sale universitare. Scopul SSH a fost să înlocuiască protocoalele anterioare rlogin, TELNET, FTP [16] și rsh, care nu asigurau autentificare și confidențialitate puternice. Ylönen și-a lansat implementarea ca software gratuit în iulie 1995, iar instrumentul a câștigat rapid popularitate. Până la sfârșitul anului 1995, baza de utilizatori SSH a crescut la 20.000 de utilizatori în cincizeci de țări.

În decembrie 1995, Ylönen a fondat SSH Communications Security pentru a promova și dezvolta SSH. Versiunea originală a software-ului SSH a folosit diverse piese de software liber, cum ar fi GNU libgmp, dar versiunile ulterioare lansate de SSH Communications Security au evoluat în software-ul din ce în ce mai proprietar.

S-a estimat că până în 2000 numărul de utilizatori a crescut la 2 milioane.

Versiunea 2.x

„Secsh” a fost numele oficial al Internet Engineering Task Force (IETF) pentru grupul de lucru IETF responsabil pentru versiunea 2 a protocolului SSH. În 2006, o versiune actualizată a protocolului SSH-2 a fost adoptată ca standard. Această versiune este incompatibilă cu SSH-1. SSH-2 oferă atât securitate, cât și funcții îmbunătățite față de SSH-1. De exemplu, o securitate mai bună este obținută prin schimbul de chei Diffie-Hellman și prin verificarea puternică a integrității cu coduri de autentificare a mesajelor. Noile caracteristici SSH-2 includ posibilitatea de a lansa orice număr de sesiuni shell printr-o singură conexiune SSH. Datorită superiorității și popularității SSH-2 față de SSH-1, unele implementări precum libssh (v0.8.0+), Lsh și Dropbear acceptă doar protocolul SSH-2.

Versiunea 1.99

În ianuarie 2006, după ce versiunea 2.1 a fost creată, RFC 4253 a specificat că un server SSH care acceptă atât 2.0, cât și versiunile anterioare de SSH ar trebui să identifice versiunea sa prototip ca 1.99. Aceasta nu este o versiune actualizată, ci o metodă pentru a determina compatibilitatea cu versiunea anterioară.

OpenSSH și OSSH

În 1999, dezvoltatorii, dorind o versiune gratuită a software-ului, au revenit la vechea versiune 1.2.12 a programului SSH original, care a fost lansat ultima dată sub o licență open source. OSSH-ul lui Bjorn Grönwall a fost dezvoltat ulterior din această bază de cod. La scurt timp după aceea, dezvoltatorii OpenBSD au împărțit codul Groenlanda și au lucrat mult la el, creând OpenSSH , care a fost livrat cu versiunea 2.6 a OpenBSD. Începând cu această versiune, s-a format o ramură de „portabilitate” pentru a porta OpenSSH pe alte sisteme de operare.

Începând cu 2005, OpenSSH a fost cea mai populară implementare a SSH, inclusă implicit pe un număr mare de sisteme de operare. OSSH este depreciat între timp. OpenSSH continuă să fie acceptat și acceptă protocolul SSH-2, renunțând suportul pentru SSH-1 din baza de cod odată cu lansarea OpenSSH 7.6 .

Standarde și implementări software

Prima versiune a protocolului, SSH-1, a fost dezvoltată în 1995 de către cercetătorul Tatu Ulönen de la Universitatea de Tehnologie din Helsinki ( Finlanda ). SSH-1 a fost scris pentru a fi mai privat decât protocoalele rlogin, telnet și rsh. În 1996, a fost dezvoltată o versiune mai sigură a protocolului, SSH-2, care este incompatibilă cu SSH-1. Protocolul a câștigat și mai multă popularitate, iar până în 2000 avea aproximativ două milioane de utilizatori. În prezent, termenul „SSH” se referă de obicei la SSH-2, deoarece prima versiune a protocolului, din cauza unor deficiențe semnificative, acum practic nu este utilizată.

În 2006, protocolul a fost aprobat de grupul de lucru IETF ca standard de internet.

Două implementări ale SSH sunt comune: una comercială privată și una gratuită. Implementarea gratuită se numește OpenSSH. Până în 2006, 80% dintre computerele de pe Internet foloseau OpenSSH. O implementare privată este dezvoltată de SSH Communications Security, o subsidiară deținută în totalitate a Tectia [3] și este gratuită pentru uz necomercial. Aceste implementări conțin aproape același set de instrucțiuni.

Protocolul SSH-1, spre deosebire de protocolul telnet , este rezistent la atacurile de sniffing de trafic („ sniffing ”), dar nu este rezistent la atacurile man-in-the-middle . Protocolul SSH-2 este, de asemenea, rezistent la atacuri prin alăturarea la mijloc ( deturnarea sesiunii în engleză  ), deoarece este imposibil să vă alăturați unei sesiuni deja stabilite sau să o interceptați.

Pentru a preveni atacurile „man-in-the-middle ” , atunci când vă conectați la o gazdă a cărei cheie nu este încă cunoscută de client, software -ul client îi arată utilizatorului o amprentă a cheii .  Se recomandă să comparați cu atenție „key cast” afișat de software-ul client cu key cast, de preferință obținut prin canale de comunicare fiabile sau personal.

Suportul SSH este disponibil pe toate sistemele de tip UNIX și majoritatea dintre ele au un client și un server ssh ca utilitare standard. Există multe implementări ale clienților SSH și pentru sistemele de operare non-UNIX. Protocolul a câștigat o mare popularitate după dezvoltarea pe scară largă a analizoarelor de trafic și a metodelor de perturbare a funcționării rețelelor locale, ca alternativă la protocolul nesigur Telnet pentru gestionarea nodurilor importante.

SSH necesită un server SSH și un client SSH. Serverul ascultă conexiunile de la mașinile client și, atunci când se stabilește o conexiune, efectuează autentificarea , după care începe să servească clientul. Clientul este folosit pentru a se conecta la o mașină de la distanță și pentru a executa comenzi.

Pentru a se conecta, serverul și clientul trebuie să creeze perechi de chei — publice și private — și să schimbe chei publice. De obicei, se folosește și o parolă.

Servere SSH

Clienți și shell-uri SSH

Sfaturi de securitate SSH

  1. Interzicerea accesului root de la distanță .
  2. Interziceți conectarea cu o parolă goală sau dezactivați autentificarea prin parolă.
  3. Selectarea unui port non-standard pentru serverul SSH.
  4. Folosind chei lungi SSH2 RSA (2048 biți sau mai mult). Sistemele de criptare bazate pe RSA sunt considerate sigure dacă lungimea cheii este de cel puțin 1024 de biți [5] .
  5. Limitarea listei de adrese IP de la care este permis accesul (de exemplu, prin configurarea unui firewall ).
  6. Interzicerea accesului de la unele adrese potențial periculoase.
  7. Evitați utilizarea autentificărilor de sistem comune sau binecunoscute pentru accesul SSH .
  8. Examinați în mod regulat mesajele de eroare de autentificare .
  9. Instalarea sistemelor de detectare a intruziunilor (IDS) .
  10. Folosind cârlige care falsifică un serviciu SSH ( honeypot ) .
  11. Implementarea tehnologiei.

Exemple de utilizare a SSH

Comanda de conectare la un server SSH local din linia de comandă GNU/Linux sau FreeBSD pentru utilizatorul pacify (serverul ascultă pe portul non-standard 30000):

$ ssh -p 30000 [email protected]

Generarea perechilor de chei (în sistemul de operare asemănător UNIX) este efectuată de comandă

$ ssh-keygen

Generarea unei perechi de chei SSH-2 RSA cu o lungime de 4096 de biți de către puttygen sub sistemul de operare UNIX:

$ puttygen -t rsa -b 4096 -o eșantion

Unii clienți, cum ar fi PuTTY, au și o interfață grafică pentru utilizator .

Pentru a utiliza SSH în Python , există module precum python-paramiko și python-twisted-conch.

Tunnel SSH

Un tunel SSH este un tunel creat printr-o conexiune SSH și folosit pentru a cripta datele tunelizate. Folosit pentru a securiza transmisia de date pe Internet ( IPsec are un scop similar ). Când este transmis printr-un tunel SSH, traficul necriptat al oricărui protocol este criptat la un capăt al conexiunii SSH și decriptat la celălalt.

Implementarea practică se poate face în mai multe moduri:

$ ssh -L 4430 :jabber.example.com:443 somehost

În acest caz, clientul Jabber este configurat să se conecteze la portul 4430 al serverului localhost (dacă clientul ssh rulează pe aceeași mașină cu clientul Jabber).

Pentru a crea un tunel ssh, aveți nevoie de o mașină cu un server ssh care rulează și acces la jabber.example.com. Această configurație poate fi utilizată dacă accesul la jabber.example.com de pe computerul local este blocat de un firewall, dar există acces la un server ssh care nu are restricții de acces la Internet.

Vezi și

Note

  1. Opțiunea de traducere din Yu. A. Semyonov Copie de arhivă din 2 februarie 2008 pe Wayback Machine
  2. Aceasta folosește Port Forwarding Arhivat la 16 decembrie 2005 la conexiunile TCP Wayback Machine .
  3. Despre SSH Communications Security Arhivat 9 iulie 2012 la Wayback Machine 
  4. Instrucțiuni pentru instalarea unui server ssh pentru Windows prin Cygwin (link inaccesibil) . Data accesului: 27 ianuarie 2009. Arhivat din original la 20 ianuarie 2009. 
  5. CyberSecurity.ru: „Cheia RSA pe 768 de biți cracked cu succes” Arhivată 14 ianuarie 2010 la Wayback Machine . 01/08/2010

Link -uri

Standarde Clienți SSH
  • OpenSSH  este o bibliotecă gratuită și un set de utilitare pentru sprijinirea criptării
  • PuTTY  este un client SSH multiplatform popular.
  • https://serverauditor.com/ - popular client SSH multiplatform mobil (Android, iOS, Google Chrome)
  • Comparația clienților  SSH
Programe de acces la fișiere Alte