FTP, SFTP, SMB a další protokoly pro přenos souborů: který vybrat?
Protokolů pro přenos souborů je celá řada a jejich pojmenování může být matoucí. Z hlediska bezpečnosti má přitom každý jiné standardy. V čem konkrétně se liší a kdy je použít?
Na úrovni aplikační vrstvy dochází k ověřování komunikujících zařízení, sdílení souborů nebo třeba vzdálenému připojování na server. Pro každý z těchto účelů se využívají jiné typy protokolů.
O přenos souborů se tady starají protokoly FTP, SFTP, SMB a další. FTP je asi nejznámější a nejčastěji skloňovaný, rozhodně ale nepatří mezi ty nejbezpečnější. Protokoly SFTP nebo FTPS tuto nevýhodu odstraňují a pracují s různými formami zabezpečení. Navzdory jejich podobnému pojmenování se ale jedná o zcela odlišné technologie.
VPN pro bezpečné spojení
Bezpečnostní standardy některých přenosových protokolů nemusí být dostatečné. Virtuální privátní síť (VPN) přenáší data přes šifrovaný tunel, čímž zajišťuje jejich vyšší ochranu. Při použití VPN a například SFTP protokolu už lze docílit velmi slušné bezpečnostní úrovně.
Jak funguje FTP protokol
Protokol FTP byl definován už v roce 1985, a je dokonce starší než protokolová sada TCP/IP, kterou k přenosu dat používá. Protokol TCP (Transmission Control Protocol) mu garantuje spolehlivé doručování dat ve správném pořadí.
Přenos dat a souborů je sice poměrně triviální záležitost, nicméně v některých případech umí být problematický. Třeba při komunikaci mezi dvěma systémy, které reprezentují text a data odlišným způsobem nebo mají různou adresářovou strukturu. FTP protokol data přenáší bez ohledu na jejich strukturu ve formě souvislého proudu, tzv. stream mode.
Spojení probíhá mezi lokálním a vzdáleným hostem. Lokální host je FTP klient, což je typ softwaru, který se nasadí na konkrétní počítač. FTP klient iniciuje spojení příkazem o připojení k FTP serveru. Na straně serveru musí být rovněž aktivní software, který zajišťuje běh FTP serveru. Ten přijímá požadavky z TCP/IP sítě a odpovídá na ně. Jakmile je spojení zahájeno, může FTP klient nahrávat, stahovat, spravovat nebo odstraňovat jednotlivé soubory z FTP serveru.
FTP softwarů existuje několik. Jedním z nejznámějších je FileZilla, což je open source software vhodný pro libovolnou platformu. FTP klientem pro macOS s podporou FTP a SSHSSHSSH (Secure Shell) je protokol pro šifrovanou komunikaci v počítačové síti.více je Transmit. Svůj FTP software má i Microsoft – WinSCP – který podporuje FTP, SSH a SFTP protokoly (o těch více níže).
Spojení mezi FTP klientem a FTP serverem
FTP při přenosu navazuje mezi hostiteli hned dvě spojení. Jedno z nich realizuje přenos souborů (datové spojení), to druhé průběh přenosu kontroluje, tzv. řídící spojení. Datové spojení je aktivní pouze během přenosu dat. Ve chvíli, kdy jsou soubory dopraveny, se ukončí i datové spojení.
Řídící spojení je aktivní po celou dobu komunikace, tedy i když se zrovna žádné soubory nepřenáší. Toto spojení zahajuje komunikaci iniciovanou klientem a posílá jednotlivé příkazy. Po přenesení všech potřebných souborů proces ukončí, nebo ho přeruší z důvodu nenadálých komplikací.
Přes řídící spojení jde označit i konec konkrétního souboru, takže u nedokončených přenosů lze navázat přesně tam, kde se skončilo. Proto není potřeba přenášet celý balík souborů od začátku – o tom ale více v následující sekci o výhodách a nevýhodách FTP.
Výhody a nevýhody FTP protokolu
Výhodou FTP protokolu je výše zmíněný „checkpoint restart“. Za tímto benefitem stojí právě řídící spojení, které umí signalizovat konec souboru. Při neúspěšném nebo nedokončeném stahování souborů jde díky tomu začít stahovat znovu od místa, v němž došlo k chybě.
FTP poskytuje jeden z nejrychlejších způsobů přenosu souborů, a to díky své nekomplexnosti. K serveru se klient totiž připojuje přes URL adresu (ta začíná ftp://) nebo přes číselný formát, typicky IP adresu serveru.
Komunikace probíhá přes porty 20 a 21. Ve firewallu se proto pro potřeby přenosu musí otevřít do sítě jen dva porty na rozdíl od FTP/S, které jich využívá několik. Po navázání spojení musí klient zadat uživatelské jméno a heslo. K FTP serveru se ale jde připojit i anonymně. Uživatel pak může soubory ze serveru pouze stahovat, nikoli je na něj nahrávat. Jeho pravomoce jsou v anonymním režimu omezené.
Zabezpečení serveru i komunikace mezi klientem a serverem je však nedostatečné, proto se samotný FTP obvykle nepoužívá a kombinuje se s VPN, která je alespoň částečně schopna jeho rizika zmírnit.
SFTP – bezpečnější alternativa FTP
SFTP (SSH File Transfer Protocol) se často spojuje s FTP, ve skutečnosti je to ale subnet protokolu SSH (Secure Shell), který běží na stejném portu jako SSH, typicky na portu 22. Protokol SSH se tradičně využívá ke vzdálenému přístupu k systému a aplikacím.
SFTP přenáší soubory pomocí SSH protokolu. Díky tomu je celý proces je šifrovaný a k ověřování dochází pomocí SSH klíče. Ověření jde navíc pojistit ještě použitím šifrovaného jména a hesla. Ve spojení s VPN proto tvoří SFTP velmi účinnou ochranu přenosu souborů.
Jaký je rozdíl mezi SFTP, FTP over SSH a FTPS?
SFTP a FTP over SSH se často pletou a zaměňují, přitom jde o odlišné technologie. FTP over SSH někdy označovaný jako Secure FTP nebo česky FTP přes SSH, používá klasický FTP protokol, přičemž mezi klienta a server umisťuje navíc SSH tunel. Tato varianta se v praxi moc často nepoužívá. SFTP je, na druhou stranu, mechanismus zprostředkovaný protokolem SSH, jedná se tedy o zcela jiný protokol.
Situace se ještě více komplikuje, když do hry vstoupí FTPS, někdy taky FTP/S nebo FTP over SSL. FTPS je jednou z možností, kterou mohou využít FTP softwary k vyššímu zabezpečení datového i řídícího spojení. V tomto případě jde tedy o šifrování spojení přes SSL (novější TLS) vrstvu, což je rovněž oblíbený způsob zvýšení bezpečnosti, nicméně má svá úskalí. V porovnání s SFTP mohou být data jednodušeji čitelná. K provozu navíc potřebuje hned několik otevřených portů ve firewallu. To by ale při správné konfiguraci nemělo dělat velké potíže.
FTP | SFTP | FTP over SSH | FTPS | |
založený na protokolu | FTP | SSH | FTP | FTP |
zabezpečení spojení | nezabezpečeno | protokol SSH | SSH tunel | vrstva SSL/TLS |
využívá porty | 20 a 21 | typicky port 22 | 20 a 21 | více portů |
šifrování | ne | ano | ano | ano |
ověřování | jméno a heslo | SSH klíč + jméno a heslo | jméno a heslo (šifrované přes SSH tunel) | X.509 certifikáty |
TFTP – zjednodušený protokol pro bezdiskové stanice
Komplexnost a bezpečnost není vždy prioritou. Pro některé účely postačí základní funkce a minimální velikost. Tak je to u bezdiskových uzlů v síti. Právě TFTP (Trivial File Transfer Protocol) je zjednodušenou variantou FTP. Neobsahuje žádné funkce navíc a nevyžaduje ani přihlášení uživatele.
Je proto ideální k bootování bezdiskových stanic. K jejich zprovoznění je potřeba jednorázově stáhnout boot image. Kapacita těchto zařízení je ale, kvůli absenci disků, nízká a přenosový protokol se do tohoto limitu musí vejít. TFTP tyto parametry díky své jednoduchosti splňuje.
SMB protokol používá hlavně Windows
Poslední protokol nemá s FTP nic společného, ale rovněž slouží pro sdílený přístup k souborům a další komunikaci mezi uzly v síti. Někdy se mu říká CIFS (Common Internet File System) a využívá se zejména pro komunikaci mezi počítači s operačním systémem Windows.
Typickým příkladem využití SMB je komunikace mezi osobním počítačem a tiskárnou na pracovišti. Uživatel odešle požadavek k tisku ze svého počítače (klienta), ten putuje k počítači asistentky (server) nebo jiné pověřené osoby, z nějž následně dojde až k samotné tiskárně a provede operaci. Tento proces probíhá přes SMB protokol. Ze serveru klientovi většinou přijde oznámení, že operace proběhla úspěšně, tedy že dokument byl vytištěn.
S protokolem SMB se lze často setkat ve spojitosti se softwarem Samba. Samba je svobodnou reimplementací SMB protokolu vyvinutou pro unixové systémy. Její vývojáři časem získali přístup ke kompletní dokumentaci Microsoftu a podařilo se jim vytvořit vysoce kompatibilní verzi k Windows. Samba je tedy open source variantou SMB CIFS.
Který protokol použít?
Teď už je asi jasné, že rozhodnutí o tom, který protokol pro přenos dat využít, se odvíjí především od bezpečnostních nároků a účelu použití. Důležitá je ale i podpora jednotlivých protokolů. Ne všechna zařízení umožňují využití veškerých výše uvedených variant. To je potřeba si v prvé řadě ověřit.
Mimo to jsou vlastnosti těchto protokolů mnohem komplexnější a třeba jen srovnání SFTP a FTPS by vystačilo na samostatný článek. V každém případě, ať už se rozhodněte jakkoli, doporučujeme zvážit použití VPN, která celý proces přenosu pojistí a sníží riziko napadení spojení. Tedy pokud nemáte v plánu jen bootovat uzly.