Protokoly SFTP a FTPS

Predslov

Len pred týždňom som písal esej na tému uvedenú v názve a čelil som skutočnosti, že povedzme, že na internete nie je toľko vzdelávacích informácií. Väčšinou suché fakty a pokyny na nastavenie. Preto som sa rozhodol text mierne poopraviť a uverejniť ho ako článok.

Čo je FTP

FTP (File Transfer Protocol) je protokol na prenos súborov cez sieť. Je to jeden zo základných ethernetových protokolov. Objavil sa v roku 1971 a spočiatku pracoval v sieťach DARPA. V súčasnosti je prenos súborov podobne ako HTTP založený na modeli pozostávajúcom zo sady protokolov TCP/IP (Transmission Control Protocol/Internet Protocol). Definované v RFC 959.

Protokol definuje nasledovné:

  • Ako bude prebiehať kontrola chýb?
  • Spôsob balenia údajov (ak sa používa balenie)
  • Ako odosielajúce zariadenie signalizuje, že dokončilo správu?
  • Ako prijímacie zariadenie signalizuje, že prijalo správu?

Komunikácia medzi klientom a serverom

Pozrime sa bližšie na procesy, ktoré sa vyskytujú počas prevádzky FTP. Pripojenie je inicializované interpreterom protokolu používateľa. Ústredňa je riadená cez riadiaci kanál v štandarde TELNET. FTP príkazy sú generované interpreterom protokolu používateľa a odosielané na server. Odpovede servera sa tiež odosielajú používateľovi cez riadiaci kanál. Vo všeobecnosti má používateľ možnosť nadviazať kontakt s tlmočníkom protokolu servera a inými prostriedkami, ako je tlmočník používateľa.

Hlavnou črtou FTP je, že využíva duálne pripojenia. Jeden z nich sa používa na odosielanie príkazov na server a štandardne prebieha cez TCP port 21, ktorý je možné zmeniť. Riadiace spojenie existuje, pokiaľ klient komunikuje so serverom. Riadiaci kanál musí byť otvorený pri prenose dát medzi strojmi. Ak je zatvorený, prenos údajov sa zastaví. Prostredníctvom druhého dochádza k priamemu prenosu údajov. Otvorí sa vždy, keď dôjde k prenosu súboru medzi klientom a serverom. Ak sa súčasne prenáša niekoľko súborov, každý z nich otvorí svoj vlastný prenosový kanál.

FTP môže fungovať v aktívnom alebo pasívnom režime, ktorého výber určuje spôsob nadviazania spojenia. V aktívnom režime klient vytvorí riadiace spojenie TCP so serverom a odošle svoju IP adresu a ľubovoľné číslo klientskeho portu na server a potom čaká, kým server spustí TCP spojenie s touto adresou a číslom portu. V prípade, že je klient za firewallom a nemôže akceptovať prichádzajúce TCP spojenie, je možné použiť pasívny režim. V tomto režime klient používa riadiaci tok na odoslanie príkazu PASV na server a potom dostane od servera svoju IP adresu a číslo portu, ktoré potom klient použije na otvorenie toku údajov zo svojho ľubovoľného portu.

Je možné, že údaje môžu byť prenesené do tretieho zariadenia. V tomto prípade užívateľ organizuje riadiaci kanál s dvoma servermi a organizuje medzi nimi priamy dátový kanál. Riadiace príkazy prechádzajú cez užívateľa a dáta prechádzajú priamo medzi servermi.

Pri prenose údajov cez sieť možno použiť štyri reprezentácie údajov:

  • ASCII – používa sa pre text. Údaje sa v prípade potreby pred prenosom prevedú zo znakovej reprezentácie na odosielajúcom hostiteľovi na "osembitové ASCII" a (opäť, ak je to potrebné) na znakovú reprezentáciu na prijímacom hostiteľovi. Menia sa najmä znaky nového riadku. V dôsledku toho tento režim nie je vhodný pre súbory obsahujúce viac ako obyčajný text.
  • Binárny režim – odosielajúce zariadenie posiela každý súbor bajt po byte a príjemca po prijatí uloží prúd bajtov. Podpora tohto režimu bola odporúčaná pre všetky implementácie FTP.
  • EBCDIC – používa sa na prenos obyčajného textu medzi hostiteľmi v kódovaní EBCDIC. Inak je tento režim podobný režimu ASCII.
  • Lokálny režim – umožňuje dvom počítačom s identickým nastavením odosielať dáta vo vlastnom formáte bez konverzie do ASCII.

Prenos dát sa môže uskutočniť v ktoromkoľvek z troch režimov:

  • Režim streamu – údaje sa odosielajú ako nepretržitý tok, čím sa FTP oslobodzuje od akéhokoľvek spracovania. Namiesto toho sa celé spracovanie vykonáva pomocou protokolu TCP. Indikátor konca súboru nie je potrebný s výnimkou oddelenia údajov do záznamov.
  • Blokový režim – FTP rozdelí dáta do niekoľkých blokov (blok hlavičky, počet bajtov, dátové pole) a následne ich odošle TCP.
  • Režim kompresie – dáta sú komprimované pomocou jediného algoritmu (zvyčajne kódovaním dĺžok chodu).

FTP server je server, ktorý poskytuje možnosť používať File Transfer Protocol. Má určité vlastnosti, ktoré ho odlišujú od bežných webových serverov:

  • Vyžaduje sa overenie používateľa
  • Všetky operácie sa vykonávajú v rámci aktuálnej relácie
  • Schopnosť vykonávať rôzne akcie so systémom súborov
  • Pre každé pripojenie sa používa samostatný kanál

FTP klient je program, ktorý vám umožňuje pripojiť sa k vzdialenému serveru cez FTP a tiež na ňom vykonávať potrebné akcie s prvkami súborového systému. Klientom môže byť prehliadač, do ktorého by ste mali zadať adresu, ktorá je cestou ku konkrétnemu adresáru alebo súboru na vzdialenom serveri, v súlade so všeobecným blokovým diagramom adresy URL:

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

Používanie webového prehliadača v tomto kontexte vám však umožní iba prezerať alebo sťahovať súbory, ktoré vás zaujímajú. Aby ste naplno využili všetky výhody FTP, mali by ste ako klient používať špecializovaný softvér.

Autentifikácia FTP používa na udelenie prístupu schému používateľského mena/hesla. Používateľské meno sa odošle na server príkazom USER a heslo sa odošle príkazom PASS. Ak informácie poskytnuté klientom prijme server, server odošle klientovi pozvánku a relácia sa začne. Používatelia sa môžu, ak server podporuje túto funkciu, prihlásiť bez poskytnutia poverení, ale server môže takýmto reláciám udeliť iba obmedzený prístup.

Hostiteľ poskytujúci službu FTP môže poskytnúť anonymný FTP prístup. Používatelia sa zvyčajne prihlasujú pomocou „anonymného“ (na niektorých serveroch FTP môže rozlišovať veľké a malé písmená) ako používateľské meno. Hoci sa od používateľov zvyčajne vyžaduje, aby namiesto hesla poskytli svoju e-mailovú adresu, v skutočnosti sa nevykonáva žiadne overenie. Mnoho hostiteľov FTP, ktorí poskytujú aktualizácie softvéru, podporuje anonymný prístup.

Schéma protokolu

Interakciu klient-server počas pripojenia FTP možno vizualizovať takto:

Protokoly SFTP a FTPS

Zabezpečené FTP

FTP nebolo pôvodne zamýšľané ako bezpečné, pretože bolo určené na komunikáciu medzi viacerými vojenskými zariadeniami a agentúrami. Ale s rozvojom a rozširovaním internetu sa nebezpečenstvo neoprávneného prístupu mnohonásobne zvýšilo. Bolo potrebné chrániť servery pred rôznymi typmi útokov. V máji 1999 autori RFC 2577 zhrnuli zraniteľnosti do nasledujúceho zoznamu problémov:

  • Skryté útoky (odrazové útoky)
  • Spoof útoky
  • Útoky hrubou silou
  • Zachytávanie paketov, čuchanie
  • Krádež prístavov

Bežný FTP nemá schopnosť prenášať dáta v šifrovanej podobe, v dôsledku čoho môžu byť užívateľské mená, heslá, príkazy a ďalšie informácie ľahko a ľahko zachytené útočníkmi. Zvyčajným riešením tohto problému je použitie "zabezpečených", TLS chránených verzií zraniteľného protokolu (FTPS) alebo iného, ​​bezpečnejšieho protokolu, ako je SFTP/SCP, ktorý je súčasťou väčšiny implementácií protokolu Secure Shell.

FTPS

FTPS (FTP + SSL) je rozšírenie štandardného protokolu na prenos súborov, ktoré k jeho základnej funkcionalite pridáva vytváranie šifrovaných relácií pomocou protokolu SSL (Secure Sockets Layer). Dnes ochranu zabezpečuje jeho pokročilejší analógový TLS (Transport Layer Security).

SSL

Protokol SSL bol navrhnutý spoločnosťou Netscape Communications v roku 1996 na zabezpečenie bezpečnosti a súkromia internetových pripojení. Protokol podporuje autentifikáciu klienta a servera, je nezávislý od aplikácie a je transparentný pre protokoly HTTP, FTP a Telnet.

Protokol SSL Handshake pozostáva z dvoch fáz: autentifikácia servera a voliteľná autentifikácia klienta. V prvej fáze server odpovie na požiadavku klienta odoslaním jeho certifikátu a parametrov šifrovania. Klient potom vygeneruje hlavný kľúč, zašifruje ho verejným kľúčom servera a odošle ho na server. Server dešifruje hlavný kľúč pomocou svojho súkromného kľúča a autentifikuje sa klientovi vrátením správy overenej hlavným kľúčom klienta.

Nasledujúce údaje sú zašifrované a overené kľúčmi odvodenými od tohto hlavného kľúča. V druhom kroku, ktorý je voliteľný, server odošle požiadavku klientovi a klient sa autentifikuje na serveri vrátením požiadavky s vlastným digitálnym podpisom a certifikátom verejného kľúča.

SSL podporuje rôzne kryptografické algoritmy. Pri nadväzovaní komunikácie sa používa kryptosystém verejného kľúča RSA. Po výmene kľúčov sa používa mnoho rôznych šifier: RC2, RC4, IDEA, DES a TripleDES. Používa sa aj MD5 - algoritmus na vytváranie súhrnu správ. Syntax pre certifikáty verejného kľúča je popísaná v X.509.

Jednou z dôležitých výhod SSL je jeho úplná nezávislosť na softvérovej platforme. Protokol je vyvinutý na princípoch prenosnosti a ideológia jeho konštrukcie nezávisí od aplikácií, v ktorých sa používa. Okrem toho je tiež dôležité, aby sa nad protokol SSL mohli transparentne prekrývať iné protokoly; buď na ďalšie zvýšenie stupňa ochrany cieľových informačných tokov, alebo na prispôsobenie kryptografických schopností SSL pre nejakú inú, dobre definovanú úlohu.

SSL pripojenie

Protokoly SFTP a FTPS

Zabezpečený kanál poskytovaný protokolom SSL má tri hlavné vlastnosti:

  • Kanál je súkromný. Šifrovanie sa používa pre všetky správy po jednoduchom dialógu, ktorý slúži na určenie tajného kľúča.
  • Kanál je overený. Serverová strana konverzácie je vždy overená, zatiaľ čo klientska strana je voliteľne overená.
  • Kanál je spoľahlivý. Prenos správ zahŕňa kontrolu integrity (pomocou MAC).

Vlastnosti FTPS

Existujú dve implementácie FTPS, ktoré používajú rôzne metódy zabezpečenia:

  • Implicitná metóda zahŕňa použitie štandardného protokolu SSL na vytvorenie relácie pred odoslaním údajov, čo zase narúša kompatibilitu s bežnými FTP klientmi a servermi. Pre spätnú kompatibilitu s klientmi, ktorí nepodporujú FTPS, sa na riadiace spojenie používa TCP port 990 a na prenos dát 989. Tým je zachovaný štandardný port 21 pre FTP protokol. Táto metóda sa považuje za zastaranú.
  • Explicitné je oveľa pohodlnejšie, pretože používa štandardné FTP príkazy, ale pri odpovedi šifruje dáta, čo vám umožňuje použiť rovnaké riadiace pripojenie pre FTP aj FTPS. Klient musí výslovne požiadať o bezpečný prenos údajov zo servera a potom schváliť metódu šifrovania. Ak klient nepožiada o zabezpečený prenos, server FTPS má právo nezabezpečené pripojenie buď zachovať, alebo zatvoriť. V rámci RFC 2228 bol pridaný mechanizmus vyjednávania autentifikácie a zabezpečenia údajov, ktorý obsahuje nový príkaz FTP AUTH. Hoci tento štandard explicitne nedefinuje bezpečnostné mechanizmy, špecifikuje, že zabezpečené pripojenie musí iniciovať klient pomocou algoritmu opísaného vyššie. Ak server nepodporuje zabezpečené pripojenia, mal by sa vrátiť kód chyby 504. Klienti FTPS môžu získať informácie o bezpečnostných protokoloch podporovaných serverom pomocou príkazu FEAT, server však nemusí zverejniť, aké úrovne zabezpečenia má podporuje. Najbežnejšie príkazy FTPS sú AUTH TLS a AUTH SSL, ktoré poskytujú zabezpečenie TLS a SSL.

SFTP

SFTP (Secure File Transfer Protocol) je protokol na prenos súborov aplikačnej vrstvy, ktorý beží nad zabezpečeným kanálom. Nezamieňajte s (Simple File Transfer Protocol), ktorý má rovnakú skratku. Ak je FTPS jednoducho rozšírením FTP, potom SFTP je samostatný a nesúvisiaci protokol, ktorý ako svoj základ používa SSH (Secure Shell).

Secure Shell

Protokol bol vyvinutý jednou zo skupín IETF s názvom Secsh. Pracovná dokumentácia k novému protokolu SFTP sa nestala oficiálnym štandardom, ale začala sa aktívne využívať na vývoj aplikácií. Následne bolo vydaných šesť verzií protokolu. Postupné zvyšovanie funkčnosti v ňom však viedlo k tomu, že 14. augusta 2006 bolo rozhodnuté ukončiť práce na vývoji protokolu z dôvodu dokončenia hlavnej úlohy projektu (vývoj SSH) a nedostatku dostatočnej expertnej úrovne na to, aby sme mohli prejsť k vývoju plnohodnotného protokolu vzdialeného súborového systému.

SSH je sieťový protokol, ktorý umožňuje vzdialené ovládanie operačného systému a tunelovanie TCP spojení (napríklad na prenos súborov). Funkčnosťou je podobná protokolom Telnet a rlogin, ale na rozdiel od nich šifruje všetku komunikáciu vrátane prenášaných hesiel. SSH umožňuje výber rôznych šifrovacích algoritmov. Klienti SSH a servery SSH sú k dispozícii pre väčšinu sieťových operačných systémov.

SSH vám umožňuje bezpečne prenášať takmer akýkoľvek iný sieťový protokol v nezabezpečenom prostredí. Môžete teda nielen vzdialene pracovať na svojom počítači prostredníctvom príkazového shellu, ale tiež prenášať audio stream alebo video (napríklad z webovej kamery) cez šifrovaný kanál. SSH dokáže využiť aj kompresiu prenášaných dát na následné šifrovanie, čo je výhodné napríklad pre vzdialené spúšťanie klientov X WindowSystem.

Prvú verziu protokolu, SSH-1, vyvinul v roku 1995 výskumník Tatu Ulönen z Helsinskej technickej univerzity (Fínsko). SSH-1 bol napísaný tak, aby poskytoval väčšie súkromie ako protokoly rlogin, telnet a rsh. V roku 1996 bola vyvinutá bezpečnejšia verzia protokolu SSH-2, ktorá je nekompatibilná s SSH-1. Protokol si získal ešte väčšiu popularitu a do roku 2000 mal približne dva milióny používateľov. V súčasnosti výraz „SSH“ zvyčajne znamená SSH-2, pretože Prvá verzia protokolu sa v súčasnosti prakticky nepoužíva pre značné nedostatky. V roku 2006 bol protokol schválený pracovnou skupinou IETF ako internetový štandard.

Existujú dve bežné implementácie SSH: súkromná komerčná a bezplatný open source. Bezplatná implementácia sa nazýva OpenSSH. Do roku 2006 používalo OpenSSH 80 % počítačov na internete. Proprietárnu implementáciu vyvinula spoločnosť SSH Communications Security, XNUMX% dcérska spoločnosť Tectia Corporation, a je bezplatná na nekomerčné použitie. Tieto implementácie obsahujú takmer rovnakú sadu príkazov.

Protokol SSH-2, na rozdiel od protokolu telnet, je odolný voči útokom na odpočúvanie prevádzky („sniffing“), ale nie je odolný voči útokom typu man-in-the-middle. Protokol SSH-2 je tiež odolný voči útokom na ukradnutie relácie, pretože nie je možné pripojiť sa alebo uniesť už nadviazanú reláciu.

Aby sa predišlo útokom typu man-in-the-middle pri pripájaní k hostiteľovi, ktorého kľúč ešte klient nepozná, klientsky softvér zobrazí používateľovi „odtlačok kľúča“. Odporúča sa dôkladne skontrolovať „snímku kľúča“ zobrazenú klientskym softvérom so snímkou ​​kľúča servera, najlepšie získanú prostredníctvom spoľahlivých komunikačných kanálov alebo osobne.

Podpora SSH je dostupná na všetkých systémoch podobných UNIX a väčšina z nich má ssh klienta a server ako štandardné nástroje. Existuje mnoho implementácií klientov SSH pre operačné systémy iné ako UNIX. Protokol si získal veľkú obľubu po rozšírenom rozvoji analyzátorov premávky a metód na rušenie prevádzky lokálnych sietí ako alternatívne riešenie k nezabezpečenému protokolu Telnet na správu dôležitých uzlov.

Komunikácia pomocou SSH

Na prácu cez SSH potrebujete SSH server a SSH klienta. Server počúva pripojenia z klientskych počítačov a po vytvorení pripojenia vykoná autentifikáciu, po ktorej začne obsluhovať klienta. Klient sa používa na prihlásenie do vzdialeného počítača a vykonávanie príkazov.

Protokoly SFTP a FTPS

Porovnanie s FTPS

Hlavná vec, ktorá odlišuje SFTP od štandardných FTP a FTPS, je to, že SFTP šifruje absolútne všetky príkazy, používateľské mená, heslá a ďalšie dôverné informácie.

Protokoly FTPS aj SFTP využívajú kombináciu asymetrických algoritmov (RSA, DSA), symetrických algoritmov (DES/3DES, AES, Twhofish atď.), ako aj algoritmu výmeny kľúčov. Na overenie používa FTPS (alebo presnejšie SSL/TLS cez FTP) certifikáty X.509, zatiaľ čo SFTP (protokol SSH) používa kľúče SSH.

Certifikáty X.509 obsahujú verejný kľúč a niektoré informácie o certifikáte vlastníka. Tieto informácie umožňujú na druhej strane overiť integritu samotného certifikátu, pravosť a vlastníka certifikátu. Certifikáty X.509 majú zodpovedajúci súkromný kľúč, ktorý je zvyčajne z bezpečnostných dôvodov uložený oddelene od certifikátu.

Kľúč SSH obsahuje iba verejný kľúč (zodpovedajúci súkromný kľúč je uložený samostatne). Neobsahuje žiadne informácie o majiteľovi kľúča. Niektoré implementácie SSH používajú na autentifikáciu certifikáty X.509, ale v skutočnosti neoverujú celý reťazec certifikátov – používa sa iba verejný kľúč (čo robí takúto autentifikáciu neúplnou).

Záver

Protokol FTP nepochybne stále hrá dôležitú úlohu pri ukladaní a distribúcii informácií v sieti napriek svojmu úctyhodnému veku. Je to pohodlný, multifunkčný a štandardizovaný protokol. Na jeho základe boli vybudované mnohé archívy spisov, bez ktorých by technická práca nebola taká efektívna. Okrem toho sa dá ľahko nastaviť a serverové a klientske programy existujú pre takmer všetky súčasné aj menej aktuálne platformy.

Jeho chránené verzie zase riešia problém dôvernosti uložených a prenášaných údajov v modernom svete. Oba nové protokoly majú svoje klady a zápory a plnia mierne odlišné úlohy. V oblastiach, kde je potrebný archív súborov, je vhodnejšie použiť FTPS, najmä ak sa tam už predtým používal klasický FTP. SFTP je menej bežný kvôli jeho nekompatibilite so starým protokolom, ale je bezpečnejší a má viac funkcií, keďže je súčasťou systému vzdialenej správy.

Zoznam zdrojov

Zdroj: hab.com

Pridať komentár