Protocoale SFTP și FTPS

Prefață

Cu doar o săptămână în urmă scriam un eseu pe tema indicată în titlu și mă confruntam cu faptul că, să spunem, nu există atât de multe informații educaționale pe internet. În cea mai mare parte, fapte uscate și instrucțiuni de configurare. Prin urmare, am decis să corectez ușor textul și să-l postez ca articol.

Ce este FTP

FTP (File Transfer Protocol) este un protocol pentru transferul de fișiere într-o rețea. Este unul dintre protocoalele de bază Ethernet. A apărut în 1971 și a lucrat inițial în rețelele DARPA. În prezent, ca și HTTP, transferul de fișiere se bazează pe un model format dintr-un set de protocoale TCP/IP (Transmission Control Protocol/Internet Protocol). Definit în RFC 959.

Protocolul definește următoarele:

  • Cum va fi efectuată verificarea erorilor?
  • Metoda de ambalare a datelor (dacă se utilizează ambalajul)
  • Cum indică dispozitivul expeditor că a terminat un mesaj?
  • Cum indică dispozitivul receptor că a primit un mesaj?

Comunicare între client și server

Să aruncăm o privire mai atentă la procesele care au loc în timpul funcționării FTP. Conexiunea este inițializată de interpretul de protocol al utilizatorului. Schimbul este controlat printr-un canal de control în standardul TELNET. Comenzile FTP sunt generate de interpretul de protocol al utilizatorului și trimise la server. Răspunsurile serverului sunt de asemenea trimise utilizatorului prin canalul de control. În general, utilizatorul are capacitatea de a stabili contactul cu interpretul de protocol al serverului și prin alte mijloace decât interpretul utilizatorului.

Caracteristica principală a FTP este că folosește conexiuni duale. Una dintre ele este folosită pentru a trimite comenzi către server și are loc implicit prin portul TCP 21, care poate fi schimbat. Conexiunea de control există atâta timp cât clientul comunică cu serverul. Canalul de control trebuie să fie deschis când se transferă date între mașini. Dacă este închis, transmiterea datelor se oprește. Prin al doilea, are loc transferul direct de date. Se deschide de fiecare dată când are loc un transfer de fișiere între client și server. Dacă mai multe fișiere sunt transferate simultan, fiecare dintre ele își deschide propriul canal de transmisie.

FTP poate funcționa în modul activ sau pasiv, a cărui alegere determină modul în care este stabilită conexiunea. În modul activ, clientul creează o conexiune de control TCP cu serverul și trimite adresa sa IP și un număr arbitrar de port al clientului către server, apoi așteaptă ca serverul să înceapă o conexiune TCP cu această adresă și numărul de port. În cazul în care clientul se află în spatele unui firewall și nu poate accepta o conexiune TCP de intrare, poate fi utilizat modul pasiv. În acest mod, clientul folosește fluxul de control pentru a trimite o comandă PASV către server și apoi primește adresa sa IP și numărul de port de la server, pe care clientul le folosește apoi pentru a deschide un flux de date din portul său arbitrar.

Este posibil ca datele să fie transferate pe o a treia mașină. În acest caz, utilizatorul organizează un canal de control cu ​​două servere și organizează un canal de date direct între ele. Comenzile de control trec prin utilizator, iar datele trec direct între servere.

La transmiterea datelor printr-o rețea, pot fi utilizate patru reprezentări de date:

  • ASCII – folosit pentru text. Datele sunt, dacă este necesar, convertite din reprezentarea caracterelor pe gazda de trimitere la „ASCII pe opt biți” înainte de transmitere și (din nou, dacă este necesar) în reprezentarea caracterelor pe gazda receptoare. În special, caracterele newline sunt modificate. Prin urmare, acest mod nu este potrivit pentru fișierele care conțin mai mult decât text simplu.
  • Modul binar - dispozitivul expeditor trimite fiecare fișier octet cu octet, iar destinatarul stochează fluxul de octeți la primire. Suportul pentru acest mod a fost recomandat pentru toate implementările FTP.
  • EBCDIC – folosit pentru a transfera text simplu între gazde în codificare EBCDIC. În caz contrar, acest mod este similar cu modul ASCII.
  • Modul local - permite două computere cu setări identice să trimită date în format propriu fără a fi convertite în ASCII.

Transferul de date poate fi efectuat în oricare dintre cele trei moduri:

  • Modul Stream - datele sunt trimise ca flux continuu, eliberând FTP-ul de a efectua orice procesare. În schimb, toată procesarea este efectuată de TCP. Indicatorul de sfârșit al fișierului nu este necesar decât pentru separarea datelor în înregistrări.
  • Modul bloc - FTP împarte datele în mai multe blocuri (bloc antet, număr de octeți, câmp de date) și apoi le transmite către TCP.
  • Modul de compresie – datele sunt comprimate folosind un singur algoritm (de obicei prin codificarea lungimilor de rulare).

Serverul FTP este un server care oferă posibilitatea de a utiliza protocolul de transfer de fișiere. Are anumite caracteristici care îl deosebesc de serverele web convenționale:

  • Este necesară autentificarea utilizatorului
  • Toate operațiunile sunt efectuate în cadrul sesiunii curente
  • Abilitatea de a efectua diverse acțiuni cu sistemul de fișiere
  • Pentru fiecare conexiune este utilizat un canal separat

Clientul FTP este un program care vă permite să vă conectați la un server la distanță prin FTP și, de asemenea, să efectuați acțiunile necesare asupra acestuia cu elemente ale sistemului de fișiere. Clientul poate fi un browser, în bara de adrese a căruia ar trebui să introduceți adresa, care este calea către un anumit director sau fișier de pe serverul de la distanță, în conformitate cu diagrama bloc generală a URL:

ftp://user:pass@address:port/directory/file

Cu toate acestea, utilizarea unui browser web în acest context vă va permite doar să vizualizați sau să descărcați fișierele de interes. Pentru a profita pe deplin de toate avantajele FTP, ar trebui să utilizați software specializat ca client.

Autentificarea FTP utilizează o schemă de nume de utilizator/parolă pentru a acorda acces. Numele de utilizator este trimis la server cu comanda USER, iar parola este trimisă cu comanda PASS. Dacă informațiile furnizate de client sunt acceptate de server, atunci serverul va trimite o invitație clientului și începe sesiunea. Utilizatorii pot, dacă serverul acceptă această caracteristică, să se autentifice fără a furniza acreditări, dar serverul poate acorda doar acces limitat pentru astfel de sesiuni.

Gazda care furnizează serviciul FTP poate oferi acces FTP anonim. Utilizatorii se conectează în mod obișnuit cu „anonim” (poate fi sensibil la majuscule pe unele servere FTP) ca nume de utilizator. Deși utilizatorii sunt rugați de obicei să furnizeze adresa lor de e-mail în loc de o parolă, nu se efectuează de fapt nicio verificare. Multe gazde FTP care oferă actualizări de software acceptă accesul anonim.

Diagrama protocolului

Interacțiunea client-server în timpul unei conexiuni FTP poate fi vizualizată după cum urmează:

Protocoale SFTP și FTPS

FTP securizat

FTP nu a fost inițial destinat să fie sigur, deoarece era destinat comunicațiilor între mai multe instalații și agenții militare. Dar odată cu dezvoltarea și răspândirea internetului, pericolul accesului neautorizat a crescut de multe ori. Era nevoie de a proteja serverele de diferite tipuri de atacuri. În mai 1999, autorii RFC 2577 au rezumat vulnerabilitățile în următoarea listă de probleme:

  • Atacurile ascunse (atacuri cu sărituri)
  • Atacurile falsificate
  • Atacurile de forță brută
  • Captură de pachete, adulmecare
  • Furtul de port

FTP obișnuit nu are capacitatea de a transfera date în formă criptată, drept urmare numele de utilizator, parolele, comenzile și alte informații pot fi ușor și ușor interceptate de atacatori. Soluția obișnuită la această problemă este să folosiți versiuni „securizate”, protejate cu TLS ale protocolului vulnerabil (FTPS) sau alt protocol mai sigur, cum ar fi SFTP/SCP, furnizat cu majoritatea implementărilor de protocol Secure Shell.

FTPS

FTPS (FTP + SSL) este o extensie a protocolului standard de transfer de fișiere care adaugă la funcționalitatea sa de bază crearea de sesiuni criptate folosind protocolul SSL (Secure Sockets Layer). Astăzi, protecția este oferită de TLS (Transport Layer Security) analogic mai avansat.

SSL

Protocolul SSL a fost propus de Netscape Communications în 1996 pentru a asigura securitatea și confidențialitatea conexiunilor la Internet. Protocolul acceptă autentificarea client și server, este independent de aplicație și este transparent pentru protocoalele HTTP, FTP și Telnet.

Protocolul SSL Handshake constă din două etape: autentificarea serverului și autentificarea opțională a clientului. În prima etapă, serverul răspunde la cererea clientului prin trimiterea certificatului și a parametrilor de criptare. Clientul generează apoi o cheie principală, o criptează cu cheia publică a serverului și o trimite către server. Serverul decriptează cheia principală cu cheia sa privată și se autentifică clientului prin returnarea unui mesaj autentificat de cheia principală a clientului.

Datele ulterioare sunt criptate și autentificate cu chei derivate din această cheie principală. În a doua etapă, care este opțională, serverul trimite o cerere către client, iar clientul se autentifică la server returnând cererea cu propria semnătură digitală și un certificat de cheie publică.

SSL acceptă o varietate de algoritmi criptografici. În timpul stabilirii comunicării, se utilizează criptosistemul cu cheie publică RSA. După schimbul de chei, sunt utilizate multe cifruri diferite: RC2, RC4, IDEA, DES și TripleDES. Se folosește și MD5 - un algoritm pentru crearea unui rezumat de mesaje. Sintaxa pentru certificatele de cheie publică este descrisă în X.509.

Unul dintre avantajele importante ale SSL este independența completă a platformei software. Protocolul este dezvoltat pe principiile portabilității, iar ideologia construcției acestuia nu depinde de aplicațiile în care este utilizat. În plus, este de asemenea important ca alte protocoale să poată fi suprapuse transparent peste protocolul SSL; fie pentru a crește și mai mult gradul de protecție a fluxurilor de informații țintă, fie pentru a adapta capabilitățile criptografice ale SSL pentru o altă sarcină bine definită.

Conexiune SSL

Protocoale SFTP și FTPS

Canalul securizat oferit de SSL are trei proprietăți principale:

  • Canalul este privat. Criptarea este folosită pentru toate mesajele după un dialog simplu care servește la determinarea cheii secrete.
  • Canalul este autentificat. Partea de server a conversației este întotdeauna autentificată, în timp ce partea de client este autentificată opțional.
  • Canalul este de încredere. Transportul mesajelor include verificarea integrității (folosind MAC).

Caracteristicile FTPS

Există două implementări ale FTPS, folosind metode diferite de asigurare a securității:

  • Metoda implicită presupune utilizarea protocolului SSL standard pentru a stabili o sesiune înainte de a trimite date, ceea ce, la rândul său, întrerupe compatibilitatea cu clienții și serverele FTP obișnuite. Pentru compatibilitatea cu clienții care nu acceptă FTPS, portul TCP 990 este utilizat pentru conexiunea de control și 989 este utilizat pentru transferul de date. Acesta păstrează portul standard 21 pentru protocolul FTP. Această metodă este considerată învechită.
  • Explicit este mult mai convenabil, deoarece folosește comenzi FTP standard, dar criptează datele atunci când răspunde, ceea ce vă permite să utilizați aceeași conexiune de control atât pentru FTP, cât și pentru FTPS. Clientul trebuie să solicite în mod explicit transferul securizat de date de la server și apoi să aprobe metoda de criptare. Dacă clientul nu solicită un transfer securizat, serverul FTPS are dreptul fie să mențină, fie să închidă conexiunea nesecurizată. Sub RFC 2228 a fost adăugat un mecanism de autentificare și de negociere a securității datelor, care include noua comandă FTP AUTH. Deși acest standard nu definește în mod explicit mecanismele de securitate, el specifică că o conexiune securizată trebuie inițiată de către client folosind algoritmul descris mai sus. Dacă conexiunile securizate nu sunt acceptate de server, trebuie returnat un cod de eroare de 504. Clienții FTPS pot obține informații despre protocoalele de securitate acceptate de server folosind comanda FEAT, cu toate acestea, serverul nu este obligat să dezvăluie ce niveluri de securitate. suporturi. Cele mai comune comenzi FTPS sunt AUTH TLS și AUTH SSL, care oferă securitate TLS și, respectiv, SSL.

SFTP

SFTP (Secure File Transfer Protocol) este un protocol de transfer de fișiere la nivel de aplicație care rulează pe un canal securizat. A nu se confunda cu (Simple File Transfer Protocol), care are aceeași abreviere. Dacă FTPS este pur și simplu o extensie a FTP, atunci SFTP este un protocol separat și fără legătură care folosește SSH (Secure Shell) ca bază.

Secure Shell

Protocolul a fost dezvoltat de unul dintre grupurile IETF numite Secsh. Documentația de lucru pentru noul protocol SFTP nu a devenit un standard oficial, ci a început să fie utilizată în mod activ pentru dezvoltarea aplicațiilor. Ulterior, au fost lansate șase versiuni ale protocolului. Cu toate acestea, creșterea treptată a funcționalității în acesta a dus la faptul că, la 14 august 2006, s-a decis încetarea lucrărilor la dezvoltarea protocolului din cauza finalizării sarcinii principale a proiectului (dezvoltarea SSH) și a lipsa unui nivel suficient de expert pentru a trece la dezvoltarea unui protocol complet de sistem de fișiere la distanță .

SSH este un protocol de rețea care permite controlul de la distanță al sistemului de operare și tunelarea conexiunilor TCP (de exemplu, pentru transferul de 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 nesecurizat. Astfel, puteți nu numai să lucrați de la distanță pe computer prin intermediul shell-ului de comandă, ci și să transmiteți un flux audio sau video (de exemplu, de la o cameră web) pe un canal criptat. SSH poate folosi, de asemenea, compresia datelor transmise pentru criptarea ulterioară, ceea ce este convenabil, de exemplu, pentru lansarea de la distanță a clienților X WindowSystem.

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 oferi o confidențialitate mai mare 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” înseamnă de obicei SSH-2, deoarece Prima versiune a protocolului nu este acum utilizată din cauza unor deficiențe semnificative. În 2006, protocolul a fost aprobat de grupul de lucru IETF ca standard de internet.

Există două implementări comune ale SSH: comerciale private și sursă deschisă gratuită. Implementarea gratuită se numește OpenSSH. Până în 2006, 80% dintre computerele de pe Internet foloseau OpenSSH. Implementarea proprietară este dezvoltată de SSH Communications Security, o subsidiară deținută în totalitate a Tectia Corporation și este gratuită pentru utilizare necomercială. Aceste implementări conțin aproape același set de comenzi.

Protocolul SSH-2, spre deosebire de protocolul telnet, este rezistent la atacurile de interceptare a traficului („sniffing”), dar nu este rezistent la atacurile man-in-the-middle. Protocolul SSH-2 este, de asemenea, rezistent la atacurile de deturnare a sesiunii, deoarece este imposibil să se alăture sau să deturneze o sesiune deja stabilită.

Pentru a preveni atacurile de tip 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 clientului arată utilizatorului o „amprentă a cheii”. Se recomandă să verificați cu atenție „instantaneul cheii” afișat de software-ul client cu instantaneul cheii serverului, de preferință obținut prin canale de comunicare fiabile sau personal.

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

Comunicare folosind SSH

Pentru a lucra prin SSH, aveți nevoie de 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.

Protocoale SFTP și FTPS

Comparație cu FTPS

Principalul lucru care distinge SFTP de FTP standard și FTPS este că SFTP criptează absolut toate comenzile, numele de utilizator, parolele și alte informații confidențiale.

Atât protocoalele FTPS, cât și SFTP utilizează o combinație de algoritmi asimetrici (RSA, DSA), algoritmi simetrici (DES/3DES, AES, Twhofish etc.), precum și un algoritm de schimb de chei. Pentru autentificare, FTPS (sau pentru a fi mai precis, SSL/TLS prin FTP) folosește certificate X.509, în timp ce SFTP (protocol SSH) folosește chei SSH.

Certificatele X.509 includ o cheie publică și câteva informații despre certificatul proprietarului. Aceste informații permit, pe de altă parte, verificarea integrității certificatului în sine, a autenticității și a proprietarului certificatului. Certificatele X.509 au o cheie privată corespunzătoare, care este de obicei stocată separat de certificat din motive de securitate.

Cheia SSH conține doar cheia publică (cheia privată corespunzătoare este stocată separat). Nu conține nicio informație despre proprietarul cheii. Unele implementări SSH folosesc certificate X.509 pentru autentificare, dar nu verifică de fapt întregul lanț de certificate - este folosită doar cheia publică (ceea ce face ca o astfel de autentificare să fie incompletă).

Concluzie

Protocolul FTP joacă, fără îndoială, un rol important în stocarea și distribuirea informațiilor în rețea, în ciuda vechimii sale venerabile. Este un protocol convenabil, multifuncțional și standardizat. Pe baza ei au fost construite multe arhive de fișiere, fără de care munca tehnică nu ar fi atât de eficientă. În plus, este ușor de configurat, iar programele server și client există pentru aproape toate platformele actuale și nu atât de actuale.

La rândul lor, versiunile sale protejate rezolvă problema confidențialității datelor stocate și transmise în lumea modernă. Ambele protocoale noi au avantajele și dezavantajele lor și au roluri ușor diferite. În acele zone în care este necesară o arhivă de fișiere, este de preferat să folosiți FTPS, mai ales dacă FTP-ul clasic a fost deja folosit acolo înainte. SFTP este mai puțin comun din cauza incompatibilității cu vechiul protocol, dar este mai sigur și are mai multe funcționalități, deoarece face parte din sistemul de management de la distanță.

Lista surselor

Sursa: www.habr.com

Adauga un comentariu