Protokoly SFTP a FTPS

Úvod

Presne pred týždňom som písal referát na tému uvedenú v nadpise a zistil som, že, povedzme, informačných zdrojov na webe nie je až tak veľa. Väčšinou sú to suché fakty a pokyny na nastavenie. Preto som sa rozhodol niekoľko úprav textu a zverejniť ho ako článok.

Čo je FTP

FTP (File Transfer Protocol) – protokol na prenos súborov po sieti. Je jedným zo základných protokolov Ethernet. Objavil sa v roku 1971 a pôvodne fungoval v sieťach DARPA. V súčasnosti, podobne ako HTTP, prenos súborov vychádza z modelu pozostávajúceho z množiny protokolov TCP/IP (Transmission Control Protocol/Internet Protocol). Definovaný v RFC 959.

Protokol určuje nasledujúce:

  • Ako bude prebiehať kontrola chýb
  • Metóda balenia údajov (ak sa balenie používa)
  • Spôsob, akým odosielajúce zariadenie oznamuje, že ukončilo správu
  • Spôsob, akým prijímajúce zariadenie oznamuje, že prijalo správu

Interakcia medzi klientom a serverom

Pozrime sa podrobnejšie na procesy, ktoré prebiehajú pri práci FTP. Spojenie sa inicializuje interpretátorom protokolu používateľa. Riadenie výmeny prebieha cez riadiaci kanál v štandarde TELNET. Príkazy FTP generuje interpretátor protokolu používateľa a odosiela ich na server. Odpovede servera sa zasielajú používateľovi taktiež cez riadiaci kanál. Vo všeobecnosti má používateľ možnosť nadviazať kontakt s interpretátorom protokolu servera aj prostriedkami odlišnými od interpretátora používateľa.

Hlavnou charakteristikou FTP je, že používa dvojité pripojenie. Jedno z nich sa používa na prenos príkazov serveru a prebieha väčšinou cez TCP-port 21, ktorý môže byť zmenený. Riadiace spojenie existuje po celú dobu, kým klient komunikuje so serverom. Riadiaci kanál musí byť otvorený pri prenose údajov medzi strojmi. V prípade jeho uzavretia sa prenos údajov zastaví. Prostredníctvom druhého sa uskutočňuje priamy prenos údajov. Otvára sa vždy, keď sa vykonáva prenos súboru medzi klientom a serverom. Ak sa súčasne prenáša niekoľko súborov, pre každý z nich sa otvorí svoj kanál prenosu.

FTP môže fungovať v aktívnom alebo pasívnom režime, od čoho závisí spôsob nadviazania spojenia. V aktívnom režime klient vytvorí riadiace TCP spojenie so serverom a odošle serveru svoju IP adresu a ľubovoľné číslo klientského portu, po čom čaká, kým server spustí TCP spojenie na tejto adrese a čísle portu. Ak sa klient nachádza za firewallom a nemôže prijať prichádzajúce TCP spojenie, môže sa použiť pasívny režim. V tomto režime klient využíva riadiaci prúd na odoslanie príkazu PASV serveru, po čom od servera získa jeho IP adresu a číslo portu, ktoré následne klient použije na otvorenie dátového prúdu z ľubovoľného portu.

Môže nastať situácia, keď môžu byť dáta prenášané na tretí stroj. V tomto prípade používateľ organizuje riadiaci kanál s dvoma servermi a organizuje priamy kanál dát medzi nimi. Riadiace príkazy idú cez používateľa, zatiaľ čo dáta idú priamo medzi servermi.

Pri prenose dát po sieti môžu byť použité štyri reprezentácie dát:

  • ASCII – používa sa pre text. Dáta sa, ak je to potrebné, pred prenosom konvertujú z konfekčného zobrazenia na hostiteľa odosielateľa na „osembitový ASCII“ a (opäť, ak je to potrebné) na konfekčné zobrazenie prijímajúceho hostiteľa. V tomto režime sa najmä menia znaky konca riadku. V dôsledku toho tento režim nie je vhodný pre súbory, ktoré obsahujú nielen bežný text.
  • Binarťný režim – zariadenie odosielateľa posiela každý súbor bite po bíte, zatiaľ čo príjemca uchováva prúd bajtov pri prijímaní. Podpora tohto režimu bola odporúčaná pre všetky realizácie FTP.
  • EBCDIC – používa sa na prenos bežného textu medzi hostiteľmi v kódovaní EBCDIC. V ostatných ohľadoch je tento režim podobný ASCII režimu.
  • Lokálny režim – umožňuje dvom počítačom s identickými nastaveniami posielať dáta vo vlastnom formáte bez konverzie na ASCII.

Prenos dát môže prebiehať v ktoromkoľvek z troch režimov:

  • Prúdový režim – dáta sa posielajú vo forme kontinuálneho prúdu, čím FTP oslobodzuje od vykonávania akejkoľvek spracovateľskej činnosti. Namiesto toho sa celé spracovanie vykonáva pomocou TCP. Indikátor konca súboru nie je potrebný, okrem rozdelenia dát na záznamy.
  • Blokový režim – FTP rozdeľuje dáta na niekoľko blokov (blok hlavičky, množstvo bajtov, pole dát) a následne ich prenáša pomocou TCP.
  • Režim kompresie – dáta sa komprimujú jediným algoritmom (zvyčajne kódovaním dlhých sekvencií).

FTP server – to je server, ktorý umožňuje použitie protokolu prenášaní súborov. Má určité špecifiká, ktoré ho odlišujú od bežných webových serverov:

  • Je potrebná autentifikácia používateľov
  • Všetky operácie sa vykonávajú v rámci aktuálnej relácie
  • Možnosť vykonávať rôzne akcie so súborovým systémom
  • Používa sa samostatný kanál pre každé pripojenie

FTP klient – to je program, ktorý umožňuje pripojiť sa k vzdialenému serveru cez FTP a vykonávať na ňom potrebné akcie so súbormi. Klientom môže byť aj prehliadač, do ktorého adresného riadku treba zadať adresu, ktorá predstavuje cestu k určitému adresáru alebo súboru na vzdialenom serveri, v súlade s pravidelnou blokovou schémou URL:

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

Avšak, používanie webového prehliadača v takomto prípade umožní iba prezerať alebo sťahovať zaujímavé súbory. Aby ste naplno využili všetky výhody FTP, je potrebné použiť špecializovaný softvér ako klient.

FTP autentifikácia využíva schému meno používateľa/heslo na zabezpečenie prístupu. Meno používateľa sa posiela serveru príkazom USER, a heslo príkazom PASS. Ak server prijme poskytnuté informácie od klienta, odošle pozvánku a začne reláciu. Používatelia môžu, ak server podporuje túto funkciu, vstúpiť do systému bez poskytnutia prihlasovacích údajov, ale server môže poskytnúť len obmedzený prístup pre takéto relácie.

Hostiteľ poskytujúci FTP službu môže umožniť anonymný prístup k FTP. Používatelia sa zvyčajne prihlasujú ako „anonymous“ (môže byť citlivé na veľké písmená na niektorých FTP serveroch) ako meno používateľa. Hoci sa zvyčajne žiada, aby používatelia poslali svoju e-mailovú adresu namiesto hesla, v skutočnosti sa neuskutočňuje žiadna kontrola. Mnohé FTP hostitelia, poskytujúce aktualizácie softvéru, podporujú anonymný prístup.

Schéma protokolu

Interakcia medzi "klientom a serverom" pri FTP pripojení sa dá jasne zobraziť nasledujúcim spôsobom:

Protokoly SFTP a FTPS

Bezpečný FTP

FTP pôvodne nebol navrhnutý ako zabezpečený, keďže bol určený na komunikáciu medzi niekoľkými vojenskými objektmi a inštitúciami. Avšak s rozvojom a expanziou internetu sa riziko neoprávneného prístupu mnohonásobne zvýšilo. Objavila sa potreba ochrá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 (bounce attacks)
  • Spoofing útoky (spoof attacks)
  • Utoky metódou hrubej sily (brute force attacks)
  • Zachytávanie paketov, sniffing (packet capture, sniffing)
  • Zabranenie portov (port stealing)

Štandardný FTP nemá schopnosť prenášať dáta zašifrovane, čo znamená, že používateľské mená, heslá, príkazy a iné informácie môžu byť ľahko zachytené útočníkmi. Bežným riešením tohto problému je používať "bezpečné" verzie zraniteľného protokolu chránené TLS (FTPS) alebo iný, bezpečnejší protokol, ako SFTP/SCP, ktorý je dostupný v väčšine implementácií protokolu Secure Shell.

FTPS

FTPS (FTP + SSL) – rozšírenie štandardného protokolu na prenos súborov, ktoré pridáva do jeho základnej funkcionality vytváranie zašifrovaných relácií pomocou protokolu SSL (Secure Sockets Layer – úroveň zabezpečených soketov). V súčasnosti je ochrana zabezpečovaná jeho pokročilejšou náhradou TLS (Transport Layer Security – ochrana na úrovni prenosu).

SSL

Protokol SSL bol navrhnutý spoločnosťou Netscape Communications v roku 1996 s cieľom zabezpečiť bezpečnosť a dôvernosť internetových pripojení. Protokol podporuje autentifikáciu (stanovenie pravosti) klienta a servera, nezávisí od aplikácií 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 v odpovedi na žiadosť klienta odošle svoj certifikát a parametre šifrovania. Potom klient vygeneruje master-kľúč, zašifruje ho verejným kľúčom servera a pošle ho serveru. Server dešifruje master-kľúč svojim súkromným kľúčom a potvrdzuje svoju pravosť klientovi tým, že mu vracia správu potvrdenú master-kľúčom klienta.

Nasledujúce údaje sú šifrované a podpisované kľúčmi, ktoré boli získané na základe tohto hlavného kľúča. V druhom kroku, ktorý nie je povinný, server posiela klientovi požiadavku, a klient potvrdzuje serveru svoju pravosť tým, že vracia požiadavku s vlastným digitálnym podpisom a certifikátom verejného kľúča.

SSL podporuje rôzne kryptografické algoritmy. Počas nadväzovania spojenia sa používa kryptosystém verejného kľúča RSA. Po výmene kľúčov sa používajú rôzne šifry: RC2, RC4, IDEA, DES a TripleDES. Taktiež sa využíva MD5 — algoritmus na vytváranie digestu správ. Syntax certifikátov verejného kľúča je popísaná v X.509.

Jednou z dôležitých výhod SSL je jeho úplná softvérovo-platformová nezávislosť. Protokol bol vyvinutý na princípoch prenosnosti, a ideológia jeho konštrukcie nezávisí od aplikácií, v ktorých je používaný. Okrem toho je dôležité, že nad protokolom SSL môžu transparentne bežať iné protokoly; či už pre ešte väčšie zvýšenie úrovne ochrany cieľových informačných tokov, alebo na prispôsobenie kryptografických schopností SSL na nejakú špecifickú úlohu.

SSL pripojenie

Protokoly SFTP a FTPS

Poskytovaný SSL bezpečný kanál 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 autentifikovaný. Serverová strana dialógu je vždy autentifikovaná, zatiaľ čo klientská strana je autentifikovaná voliteľne.
  • Kanál je spoľahlivý. Transport správ zahŕňa kontrolu integrity (s použitím MAC).

Charakteristiky FTPS

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

  • Nezdokumentovaná metóda predpokladá použitie štandardného protokolu SSL s nadväzovaním relácie pred odoslaním údajov, čo zase narušuje kompatibilitu s bežnými FTP klientmi a servermi. Pre spätnú kompatibilitu s klientmi, ktorí nepodporujú FTPS, sa pre kontrolné spojenie používa TCP-port 990 a pre prenos údajov — 989. To umožňuje zachovať štandardný port 21 pre protokol FTP. Táto metóda bola uznaná za zastaranú.
  • Explicitný režim je omnoho pohodlnejší, pretože využíva príkazy standardného FTP, ale počas odpovede šifruje údaje, čo umožňuje použiť jedno a to isté riadiace spojenie ako pre FTP, tak aj pre FTPS. Klient musí výslovne požiadať server o zabezpečený prenos údajov a následne schváliť spôsob šifrovania. Ak klient nepožaduje zabezpečený prenos, FTPS server má právo buď uchovať, alebo ukončiť nešifrované spojenie. Mechanizmus vyjednávania identifikácie a ochrany údajov bol pridaný pod RFC 2228, ktorý obsahuje nový príkaz FTP AUTH. Hoci tento štandard nevymedzuje priamo mechanizmy ochrany, určuje, že zabezpečené spojenie by mal iniciovať klient pomocou vyššie opísaného algoritmu. Ak server nepodporuje zabezpečené spojenia, mal by byť vrátený kód chyby 504. FTPS klienti môžu získať informácie o podporovaných protokoloch ochrany servera pomocou príkazu FEAT, avšak server nie je povinný zverejniť, aké úrovne bezpečnosti podporuje. Najbežnejšie sú FTPS príkazy AUTH TLS a AUTH SSL, ktoré zabezpečujú ochranu TLS a SSL.

SFTP

SFTP (Secure File Transfer Protocol) je protokol aplikatívnej úrovne na prenos súborov, ktorý pracuje nad zabezpečeným kanálom. Nemal by sa zamieňať s (Simple File Transfer Protocol), ktorý má rovnakú skratku. Kým FTPS je len rozšírením FTP, SFTP je úplne oddelený a nijak nesúvisiaci protokol, ktorý ako základ používa SSH (Secure Shell – zabezpečená škrupina).

Secure Shell

Na vývoji protokolu pracovala jedna z skupín IETF pod názvom Secsh. Pracovná dokumentácia k novému protokolu SFTP sa nestala oficiálnym štandardom, avšak začala sa aktívne používať na vývoj aplikácií. Následne bolo vydaných šesť verzií protokolu. S postupným rozširovaním jeho funkcií došlo však k tomu, že 14. augusta 2006 bolo prijaté rozhodnutie o ukončení práce na rozvoji protokolu v súvislosti s vykonaním hlavnej úlohy projektu (vývoj SSH) a nedostatkom dostatočnej odbornej úrovne na prechod k vývoju plnohodnotného protokolu vzdialeného súborového systému.

SSH je sieťový protokol, ktorý umožňuje diaľkové ovládanie operačného systému a tunelovanie TCP pripojení (napríklad na prenos súborov). Je funkčne podobný protokolom Telnet a rlogin, ale na rozdiel od nich šifruje celý prenos, vrátane zasielaných hesiel. SSH umožňuje výber rôznych šifrovacích algoritmov. SSH klienti a SSH servery sú dostupné pre väčšinu sieťových operačných systémov.

SSH umožňuje bezpečne prenášať takmer akýkoľvek iný sieťový protokol v nezabezpečenej sieti. Týmto spôsobom je možné nielen pracovať na počítači vzdialene cez príkazový riadok, ale aj prenášať cez šifrovaný kanál zvukový alebo video prenos (napríklad z webovej kamery). SSH môže tiež použiť kompresiu prenášaných dát pre následné šifrovanie, čo je užitočné napríklad na vzdialené spúšťanie klientov X Window System.

Prvá verzia protokolu, SSH-1, bola vyvinutá v roku 1995 výskumníkom Tatu Ulénenom z Technickej univerzity v Helsinkách (Fínsko). SSH-1 bol naprogramovaný na zabezpečenie väčšej dôvernosti ako protokoly rlogin, telnet a rsh. V roku 1996 bola vyvinutá bezpečnejšia verzia protokolu, SSH-2, ktorá nie je kompatibilná so SSH-1. Protokol sa stal ešte populárnejším a do roku 2000 mal približne dva milióny používateľov. V súčasnosti sa pod pojmom 'SSH' obvykle rozumie práve SSH-2, pretože prvá verzia protokolu kvôli značným nedostatkom sa teraz prakticky nepoužíva. V roku 2006 bol protokol schválený pracovnou skupinou IETF ako internetový štandard.

Rozšírené sú dve implementácie SSH: komerčná a bezplatná otvorená. Bezplatná implementácia sa nazýva OpenSSH. K roku 2006 80 % počítačov v sieti Internet využívalo práve OpenSSH. Komerčná verzia je vyvíjaná spoločnosťou SSH Communications Security, ktorá je sto percentným podielom korporácie Tectia a je bezplatná na nekomerčné použitie. Tieto implementácie obsahujú prakticky rovnaký súbor príkazov.

Protokol SSH-2, na rozdiel od protokolu telnet, odoláva útokom odpočúvania prenosu ('sniffing'), ale nie je odolný voči útokom 'človek medzi' (man-in-the-middle). Protokol SSH-2 je tiež odolný voči útokom prostredníctvom prevzatia relácie (session hijacking), pretože nie je možné pripojiť sa k už existujúcej relácii alebo ju odchytiť.

Na prevenciu útokov 'človek medzi' pri pripojení k hostiteľovi, ktorého kľúč ešte nie je klientovi známy, klientský softvér zobrazuje používateľovi 'odtlačok kľúča' (key fingerprint). Odporúča sa starostlivo porovnať zobrazený odtlačok kľúča v klientskom softvéri s odtlačkom kľúča servera, ideálne získaným cez spoľahlivé komunikačné kanály alebo osobne.

Podpora SSH je implementovaná vo všetkých UNIX-ových systémoch a väčšina z nich má medzi štandardnými nástrojmi prítomného klienta a servera ssh. Existuje množstvo implementácií SSH klientov aj pre ne-UNIX operačné systémy. Protokol sa stal veľmi populárnym po širokom rozvoji analyzátorov prenosov a metód narušenia fungovania lokálnych sietí ako alternatívneho nebezpečného protokolu Telnet na správu dôležitých uzlov.

Spojenie s použitím SSH

Na prácu prostredníctvom SSH je potrebný SSH server a SSH klient. Server počúva pripojenia od klientských zariadení a pri nadviazaní spojenia vykonáva autentifikáciu, po ktorej začína obsluhovať klienta. Klient sa používa na prihlásenie na vzdialený počítač a vykonávanie príkazov.

Protokoly SFTP a FTPS

Porovnanie s FTPS

Hlavné, čo odlišuje SFTP od štandardného FTP a FTPS, je, že SFTP šifruje úplne všetky príkazy, mená používateľov, heslá a ďalšie citlivé informácie.

Obidva protokoly FTPS a SFTP používajú kombináciu asymetrických algoritmov (RSA, DSA), symetrických algoritmov (DES/3DES, AES, Twofish atď.), ako aj algoritmus výmeny kľúčov. Na autentifikáciu FTPS (alebo, ak sme presnejší, SSL/TLS prostredníctvom FTP) používa certifikáty X.509, zatiaľ čo SFTP (SSH protokol) používa SSH kľúče.

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

SSH kľúč obsahuje iba verejný kľúč (zodpovedajúci súkromný kľúč sa uchováva oddelene). Neobsahuje žiadne informácie o vlastníku kľúča. Niektoré implementácie SSH používajú certifikáty X.509 na autentifikáciu, avšak v skutočnosti nekontrolujú celú reťaz certifikátov — iba verejný kľúč sa používa (čo robí takúto autentifikáciu neúplnou).

Záver

Protokol FTP bezpochyby stále zohráva dôležitú úlohu pri uložení a distribúcii informácií na internete, napriek svojmu požehnanému veku. Je to pohodlný, multifunkčný a štandardizovaný protokol. Na jeho základe vzniklo množstvo súborových archívov, bez ktorých by technická práca bola menej efektívna. Okrem toho je ľahko nastaviteľný a serverové a klientské programy existujú takmer pre všetky aktuálne aj menej populárne platformy.

Jeho zabezpečené verzie zase riešia problém dôvernosti uchovaných a prenášaných dát v súčasnom svete. Obe nové protokoly majú svoje výhody a nevýhody a plnia trochu odlišné úlohy. V oblastiach, kde je potrebný práve súborový archív, je výhodnejšie použiť FTPS, najmä ak sa predtým už používal klasický FTP. SFTP je menej rozšírené kvôli svojej nekompatibilite so starým protokolom, ale je viac chránené a má väčšiu funkcionalitu, pretože je súčasťou systému vzdialeného riadenia.

Zoznam zdrojov

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster