Protocolul SFTP și FTPS

Prefață

Cu exact o săptămână în urmă, am scris un referat pe tema menționată în titlu și am constatat că, să spunem, informațiile educaționale disponibile online nu sunt atât de multe. În principal, sunt doar fapte seci și instrucțiuni de configurare. De aceea, am decis să corectez puțin textul și să-l public ca articol.

Ce este FTP

FTP (File Transfer Protocol) – protocolul de transfer al fișierelor prin rețea. Este unul dintre protocoalele de bază ale Ethernet. A apărut în 1971 și inițial a funcționat în rețelele DARPA. În prezent, la fel ca HTTP, transferul de fișiere se bazează pe un model compus dintr-o serie de protocoale TCP/IP (Transmission Control Protocol/Internet Protocol). Definit în RFC 959.

Protocolul definește următoarele:

  • Cum se va realiza verificarea erorilor
  • Metoda de structurare a datelor (dacă se folosește o structurare)
  • Cum informează dispozitivul emitent că a terminat mesajul
  • Cum informează dispozitivul receptor că a primit mesajul

Interacțiunea între client și server

Să analizăm mai în detaliu procesele care au loc în timpul funcționării FTP. Conexiunea este inițializată de interpretul protocolului utilizatorului. Gestionarea schimbului de informații se efectuează prin canalul de control, conform standardului TELNET. Comenzile FTP sunt generate de interpretul protocolului utilizatorului și transmise serverului. Răspunsurile serverului sunt trimise utilizatorului tot prin canalul de control. În general, utilizatorul are posibilitatea de a stabili contact cu interpretul protocolului serverului, folosind metode diferite de cele ale interpretului utilizatorului.

Caracteristica principală a FTP este că utilizează o conexiune dublă. Una dintre ele este folosită pentru transmiterea comenzilor către server și se realizează în mod implicit prin TCP-portul 21, care poate fi modificat. Conexiunea de control există tot timpul cât clientul comunică cu serverul. Canalul de control trebuie să fie deschis atunci când se transmit date între mașini. În cazul în care acesta se închide, transmiterea datelor se oprește. Prin a doua conexiune se realizează transmiterea efectivă a datelor. Acesta se deschide de fiecare dată când se efectuează transmiterea unui fișier între client și server. Dacă se transmit simultan mai multe fișiere, pentru fiecare dintre ele se deschide propriul canal de transmitere.

FTP poate funcționa în mod activ sau pasiv, iar alegerea acestuia determină modul de stabilire a conexiunii. În modul activ, clientul creează o conexiune TCP de control cu serverul și trimite serverului adresa sa IP și un număr aleatoriu al portului clientului, după care așteaptă ca serverul să inițieze o conexiune TCP cu această adresă și număr de port. În caz că clientul se află în spatele unui firewall și nu poate accepta o conexiune TCP intrare, poate fi utilizat modul pasiv. În acest mod, clientul folosește canalul de control pentru a trimite serverului comanda PASV și apoi primește de la server adresa sa IP și numărul de port, pe care le folosește pentru a deschide un canal de date din portul său aleatoriu.

Poate exista situația în care datele pot fi transmise către o a treia mașină. În acest caz, utilizatorul stabilește un canal de control cu două servere și organizează un canal direct de date între ele. Comenzile de control trec prin utilizator, iar datele direct între servere.

Pentru transferul de date prin rețea pot fi utilizate patru reprezentări ale datelor:

  • ASCII – este folosit pentru text. Datele, dacă este necesar, sunt convertite înainte de a fi trimise din reprezentarea simbolică a gazdei-emiter către „ASCII pe 8 biți” și (din nou, dacă este necesar) în reprezentarea simbolică a gazdei-receiving. În special, caracterele de sfârșit de linie sunt modificate. Drept urmare, acest mod nu este potrivit pentru fișiere care conțin nu doar text obișnuit.
  • Modul binar – dispozitivul-emitor trimite fiecare fișier byte cu byte, iar receptorul salvează fluxul de biți la primire. Suportul pentru acest mod a fost recomandat pentru toate implementările FTP.
  • EBCDIC – este folosit pentru transferul textului obișnuit între gazde în codificarea EBCDIC. În altă ordine de idei, acest mod este similar cu modul ASCII.
  • Modul local – permite două computere cu configurații identice să transmită date în propriul lor format fără a fi necesară conversia în ASCII.

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

  • Modul de flux – datele sunt trimise sub formă de flux continuu, eliberând FTP de orice procesare. În schimb, întreaga procesare se realizează prin TCP. Indicatorul de sfârșit de fișier nu este necesar, cu excepția separării datelor în înregistrări.
  • Modul bloc – FTP împarte datele în mai multe blocuri (bloc de antet, număr de octeți, câmp de date) și le transferă apoi prin TCP.
  • Modul de comprimare – datele sunt comprimate folosind un algoritm unic (de obicei, codificarea lungimii secvențelor).

FTP server – este un server care permite utilizarea protocolului de transfer de fișiere. Acesta are anumite caracteristici care îl deosebesc de serverele web obișnuite:

  • Este necesară autentificarea utilizatorilor
  • Toate operațiunile se desfășoară în cadrul sesiunii curente
  • Posibilitatea efectuării diferitelor acțiuni asupra sistemului de fișiere
  • Se utilizează un canal separat pentru fiecare conexiune

FTP client – este un program care permite conectarea la un server îndepărtat prin FTP și, de asemenea, efectuarea de acțiuni necesare asupra elementelor sistemului de fișiere. Un client poate fi, de fapt, un browser, în bara de adrese a căruia ar trebui introdusă adresa, care reprezintă calea către un anumit director sau fișier de pe serverul îndepărtat, conform schemei generale URL:

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

Cu toate acestea, utilizarea browserului web în acest mod va permite doar vizualizarea sau descărcarea fișierelor de interes. Pentru a valorifica pe deplin toate avantajele FTP, ca și client ar trebui să utilizăm software specializat.

Autentificarea FTP folosește schema nume utilizator/parolă pentru a oferi acces. Numele utilizatorului este trimis serverului prin comanda USER, iar parola – prin comanda PASS. Dacă informațiile furnizate de client sunt acceptate de server, acesta va trimite clientului o invitație și începe sesiunea. Utilizatorii pot, dacă serverul suportă această caracteristică, să se conecteze fără a furniza datele de autentificare, dar serverul poate oferi doar acces limitat pentru astfel de sesiuni.

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

Schema protocolului

Interacțiunea „client-server” în cadrul unei conexiuni FTP poate fi reprezentată vizual astfel:

Protocolul SFTP și FTPS

FTP Securizat

FTP nu a fost inițial conceput ca un protocol securizat, deoarece era destinat comunicării între diverse obiective și instituții militare. Însă, odată cu dezvoltarea și răspândirea internetului, riscul accesului neautorizat a crescut exponențial. A apărut necesitatea protejării serverelor împotriva diferitelor tipuri de atacuri. În mai 1999, autorii RFC 2577 au compilat vulnerabilitățile într-o listă de probleme:

  • Atacuri ascunse (bounce attacks)
  • Atacuri prin spoofing (spoof attacks)
  • Atacuri prin forță brută (brute force attacks)
  • Interceptarea pachetelor, sniffing (packet capture, sniffing)
  • Furtul de porturi (port stealing)

FTP-ul obișnuit nu oferă capacitatea de a transmite date într-o formă criptată, ceea ce înseamnă că numele de utilizator, parolele, comenzile și alte informații pot fi, la nevoie, ușor interceptate de atacatori. O soluție obișnuită pentru această problemă este utilizarea versiunilor „securizate”, protejate prin TLS (FTPS), sau a unui protocol mai securizat, precum SFTP/SCP, disponibil în majoritatea implementărilor protocolului Secure Shell.

FTPS

FTPS (FTP + SSL) – o extensie a protocolului standard de transfer de fișiere, care adaugă la funcționalitatea sa de bază crearea de sesiuni criptate utilizând protocolul SSL (Secure Sockets Layer — nivelul de siguranta a socket-urilor). În prezent, protecția este asigurată de un analog mai avansat numit TLS (Transport Layer Security — protecția nivelului de transport).

SSL

Protocolul SSL a fost propus de compania Netscape Communications în 1996, având ca scop asigurarea securității și confidențialității conexiunilor pe internet. Protocolul acceptă autentificarea clientului și serverului, este independent de aplicații și este transparent pentru protocoalele HTTP, FTP și Telnet.

Protocolul SSL Handshake constă în două etape: autentificarea serverului și autentificarea opțională a clientului. În prima etapă, serverul trimite, ca răspuns la cererea clientului, certificatul său și parametrii de criptare. Apoi, clientul generează o cheie master, o criptează cu cheia publică a serverului și o trimite serverului. Serverul decriptează cheia master cu cheia sa privată și își confirmă autenticitatea față de client, trimițându-i un mesaj semnat cu cheia master a clientului.

Următoarele date sunt criptate și semnate cu cheile obținute pe baza acestui cheie principală. În a doua etapă, care nu este obligatorie, serverul trimite o solicitare clientului, iar clientul confirmă autenticitatea serverului returnând solicitarea cu propria semnătură digitală și certificatul cheii publice.

SSL suportă o varietate de algoritmi criptografici. În timpul stabilirii conexiunii, se folosește sistemul criptografic cu cheie publică RSA. După schimbul de chei, se utilizează multe alte cifruri: RC2, RC4, IDEA, DES și TripleDES. De asemenea, se folosește MD5 – algoritmul de generare a digestelor de mesaje. Sintaxa certificatelor cheii publice este descrisă în X.509.

Unul dintre avantajele importante ale SSL este independența sa completă de platformă software. Protocolul a fost dezvoltat pe baza principiilor portabilității, iar ideologia sa de construcție nu depinde de aplicațiile din care este utilizat. În plus, este esențial că deasupra protocolului SSL pot fi suprapuse transparenți și alte protocoale; fie pentru a crește și mai mult gradul de protecție al fluxurilor de informații vizate, fie pentru a adapta capacitățile criptografice ale SSL la o altă sarcină bine definită.

Conexiune SSL

Protocolul SFTP și FTPS

Canalul sigur oferit de SSL are trei proprietăți de bază:

  • Canalul este privat. Criptarea este utilizată pentru toate mesajele după dialogul simplu, care servește la determinarea cheii secrete.
  • Canalul este autentificat. Partea serverului dialogului este întotdeauna autentificată, în timp ce partea clientului este autentificată opțional.
  • Canalul este de încredere. Transportul mesajelor include verificarea integrității (cu implicarea MAC).

Caracteristici FTPS

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

  • Metoda implicită presupune utilizarea protocolului standard SSL cu stabilirea sesiunii înainte de trimiterea datelor, ceea ce, la rândul său, afectează compatibilitatea cu clienții și serverele FTP obișnuite. Pentru compatibilitatea inversă cu clienți care nu suportă FTPS, portul TCP 990 este utilizat pentru conexiunea de control, iar 989 pentru transferul de date. Acest lucru permite păstrarea portului standard 21 pentru protocolul FTP. Această metodă este considerată învechită.
  • FTPS explicit – mult mai convenabil, deoarece utilizează comenzi standard FTP, dar criptează datele în timpul transferului, permițând utilizarea unei singure conexiuni de control atât pentru FTP, cât și pentru FTPS. Clientul trebuie să solicite explicit transferul securizat de date de la server și să aprobe ulterior metoda de criptare. Dacă clientul nu solicită transferul securizat, serverul FTPS are dreptul să mențină sau să închidă conexiunea nesecurizată. Mecanismul de negociere a autentificării și protecției datelor a fost adăugat în conformitate cu RFC 2228, care include o nouă comandă FTP AUTH. Deși acest standard nu definește explicit mecanismele de protecție, el stabilește că o conexiune securizată trebuie să fie inițiată de client folosind algoritmul menționat mai sus. Dacă conexiunile securizate nu sunt suportate de server, trebuie returnat codul de eroare 504. Clienții FTPS pot obține informații despre protocoalele de protecție acceptate de server prin comanda FEAT; totuși, serverul nu este obligat să dezvăluie ce niveluri de securitate suportă. Comenzile FTPS cele mai comune sunt AUTH TLS și AUTH SSL, care asigură protecția TLS și SSL, respectiv.

SFTP

SFTP (Secure File Transfer Protocol) – un protocol la nivel de aplicație pentru transferul de fișiere, care funcționează pe un canal securizat. Nu trebuie confundat cu (Simple File Transfer Protocol), care are aceeași abreviere. Dacă FTPS este pur și simplu o extensie a FTP, SFTP este un protocol separat și care nu are legătură cu acesta, bazându-se pe SSH (Secure Shell – o interfață sigură).

Secure Shell

Dezvoltarea protocolului a fost realizată de un grup din IETF numit Secsh. Documentația de lucru pentru noul protocol SFTP nu a devenit un standard oficial, însă a început să fie utilizată activ pentru dezvoltarea aplicațiilor. Au fost lansate ulterior șase versiuni ale protocolului. Cu toate acestea, creșterea treptată a funcționalităților acestuia a dus la decizia din 14 august 2006 de a opri dezvoltarea protocolului, în urma îndeplinirii principalei sarcini a proiectului (dezvoltarea SSH) și a lipsei unui nivel suficient de expertiză pentru a face trecerea la dezvoltarea unui protocol complet de sistem de fișiere remote.

SSH este un protocol de rețea care permite gestionarea de la distanță a sistemului de operare și tunelarea conexiunilor TCP (de exemplu, pentru transferul de fișiere). Funcționează similar cu protocoalele Telnet și rlogin, dar, spre deosebire de acestea, criptează întregul trafic, inclusiv parolele transmise. SSH permite selectarea diferitelor algoritmi de criptare. Clienții SSH și serverele SSH sunt disponibile pentru cele mai multe sisteme de operare de rețea.

SSH permite transmiterea în medii nesecurizate a aproape oricărui alt protocol de rețea în mod sigur. Astfel, se poate lucra nu doar de la distanță pe un computer printr-o linie de comandă, ci și transmite un flux audio sau video (de exemplu, de la o cameră web) printr-un canal criptat. De asemenea, SSH poate folosi compresia datelor transmise pentru a le criptare ulterioară, ceea ce este convenabil, de exemplu, pentru rularea de la distanță a clienților X Window System.

Prima versiune a protocolului, SSH-1, a fost dezvoltată în 1995 de cercetătorul Tatu Ylönen de la Universitatea Tehnologică 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, incompatibilă cu SSH-1. Protocolul a câștigat o popularitate și mai mare, iar până în 2000, avea aproximativ două milioane de utilizatori. În prezent, prin termenul „SSH” se înțelege în principal SSH-2, deoarece prima versiune a protocolului, din cauza deficiențelor sale semnificative, nu mai este practic utilizată. În 2006, protocolul a fost aprobat de grupul de lucru IETF ca standard Internet.

Există două implementări răspândite ale SSH: una comercială privată și una gratuită. Implementarea gratuită se numește OpenSSH. Până în 2006, 80% din computerele rețelei Internet foloseau OpenSSH. Implementarea comercială este dezvoltată de organizația SSH Communications Security, care este o filială 100% a corporației Tectia, fiind gratuită pentru utilizare non-comercială. Aceste implementări conțin practic același set de comenzi.

Protocolul SSH-2, spre deosebire de protocolul telnet, este rezistent la atacurile de ascultare a traficului („sniffing”), dar nu este rezistent la atacurile „man-in-the-middle”. Protocolul SSH-2 este, de asemenea, rezistent la atacurile de preluare a sesiunilor (în engleză, session hijacking), deoarece nu este posibil să te alături unei sesiuni deja stabilite sau să o interceptați.

Pentru a preveni atacurile „man-in-the-middle” atunci când te conectezi la un host, a cărui cheie nu este încă cunoscută clientului, software-ul client arată utilizatorului „amprenta cheii” (în engleză, key fingerprint). Este recomandat să verifici cu atenție amprenta cheii afișată de software-ul client cu amprenta cheii serverului, preferabil obținută prin canale de comunicare sigure sau personal.

Suportul pentru SSH este implementat în toate sistemele UNIX-like, iar pe majoritatea dintre ele sunt disponibile atât clientul, cât și serverul ssh ca utilități standard. Există multe implementări ale clienților SSH și pentru sisteme de operare non-UNIX. Protocolul a câștigat popularitate după dezvoltarea pe scară largă a analizatoarelor de trafic și a metodelor de perturbare a funcționării rețelelor locale, ca o soluție alternativă la protocolul Telnet, care nu este sigur, pentru gestionarea nodurilor importante.

Conexiune utilizând SSH

Pentru a funcționa prin SSH este necesar un server SSH și un client SSH. Serverul ascultă conexiunile de la mașinile client și, la stabilirea conexiunii, efectuează autentificarea, după care începe să deservescă clientul. Clientul este utilizat pentru a te conecta la o mașină la distanță și pentru a executa comenzi.

Protocolul SFTP și FTPS

Compararea 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.

Ambele protocoale FTPS și SFTP folosesc o combinație de algoritmi asimetrici (RSA, DSA), algoritmi simetrici (DES/3DES, AES, Twhofish etc.), precum și algoritmi de schimb de chei. Pentru autentificare, FTPS (sau, dacă vrei să fiu mai precis, SSL/TLS prin protocolul FTP) folosește certificate X.509, în timp ce SFTP (protocol SSH) folosește chei SSH.

Certificatul X.509 include o cheie publică și o anumită informație despre proprietarul certificatului. Această informație permite, de asemenea, verificarea integrității certificatului în sine, autenticitatea și proprietarul atestatului. Certificatul X.509 are 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 în realitate ele nu verifică întreaga lanț de certificare — doar cheia publică este utilizată (ceea ce face verificarea autenticității incompletă).

Concluzie

Protocolul FTP joacă fără îndoială un rol important în stocarea și distribuția informațiilor pe internet, în ciuda vârstei sale înaintate. Este un protocol convenabil, multifuncțional și standardizat. Pe baza lui s-au construit numeroase arhive de fișiere, esențiale pentru eficiența muncii tehnice. În plus, este ușor de configurat, iar programele server și client există practic pentru toate platformele actuale și mai puțin actuale.

Versiunile sale securizate rezolvă problema confidențialității datelor stocate și transmise în lumea modernă. Ambele protocoale noi au avantajele și dezavantajele lor și îndeplinesc roluri puțin diferite. În domeniile în care este necesară o arhivă de fișiere, este preferabil să se folosească FTPS, mai ales dacă anterior s-a utilizat protocolul clasic FTP. SFTP este mai puțin răspândit din cauza incompatibilității sale cu vechiul protocol, dar este mai securizat și are o funcționalitate mai mare, deoarece face parte din sistemul de management la distanță.

Lista surselor

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster