Protokoly SFTP a FTPS

Úvod

Doslova před týdnem jsem psal referát na téma uvedené v nadpisu a zjistil jsem, že, jak se říká, v síti není příliš mnoho poučné informace. Většinou jde o suchá fakta a návody k nastavení. Proto jsem se rozhodl text mírně upravit a zveřejnit ho jako článek.

Co je to FTP

FTP (File Transfer Protocol) – protokol pro přenos souborů po síti. Je jedním z základních protokolů Ethernet. Objevil se v roce 1971 a původně fungoval v sítích DARPA. V současnosti, stejně jako HTTP, je přenos souborů založen na modelu skládajícím se ze souboru protokolů TCP/IP (Transmission Control Protocol/Internet Protocol). Je definován v RFC 959.

Protokol definuje následující:

  • Jak se bude provádět kontrola chyb
  • Metoda balení dat (pokud se balení používá)
  • Jak způsob zařízení odesílatele oznamuje, že dokončilo zprávu
  • Jak způsob zařízení příjemce oznamuje, že obdrželo zprávu

Interakce mezi klientem a serverem

Prozkoumejme podrobněji procesy, které se při práci FTP dějí. Spojení inicializuje interpret protokolu uživatele. Správa přenosu probíhá prostřednictvím řídícího kanálu podle standardu TELNET. Příkazy FTP generuje interpret protokolu uživatele a posílají se na server. Odpovědi serveru jsou také zasílány uživateli prostřednictvím řídícího kanálu. Obecně má uživatel možnost navázat kontakt s interpretem protokolu serveru a prostředky, které se liší od interpreta uživatele.

Hlavní vlastností FTP je, že používá dvojné spojení. Jedno z nich se používá pro přenos příkazů na server a probíhá obvykle přes TCP port 21, který může být změněn. Řídící spojení existuje po celou dobu, kdy klient komunikuje se serverem. Řídící kanál musí být otevřen při přenosu dat mezi stroji. V případě jeho uzavření se přenos dat zastaví. Druhé spojení probíhá pro přímý přenos dat. Otevírá se vždy, když se přenáší soubor mezi klientem a serverem. Pokud se přenáší více souborů současně, pro každý z nich se otevírá svůj vlastní přenosový kanál.

FTP může pracovat v aktivním nebo pasivním režimu, což ovlivňuje způsob navazování spojení. V aktivním režimu klient vytváří řídící TCP spojení se serverem a odesílá serveru svou IP adresu a náhodné číslo klientského portu, poté čeká, až server naváže TCP spojení s touto adresou a číslem portu. Pokud se klient nachází za firewallem a nemůže přijmout příchozí TCP spojení, může být použit pasivní režim. V tomto režimu klient používá řídicí kanál k odeslání příkazu PASV serveru, a poté získává od serveru jeho IP adresu a číslo portu, které klient použije k otevření datového kanálu ze svého náhodného portu.

Může nastat situace, kdy se data mohou přenášet na třetí stroj. V tomto případě uživatel vytváří řídicí kanál se dvěma servery a vytváří přímý datový kanál mezi nimi. Řídicí příkazy procházejí uživatelským rozhraním, zatímco data přímo mezi servery.

Při přenosu dat po síti mohou být použity čtyři reprezentace dat:

  • ASCII – používá se pro text. Data jsou, pokud je to nutné, před přenosem konvertována ze znakové reprezentace na hostiteli-odesílateli na „osmi bitový ASCII“ a (opět, pokud je to nutné) na znakovou reprezentaci přijímajícího hostitele. Konkrétně se mění znaky pro zalomení řádku. V důsledku toho tento režim není vhodný pro soubory, které neobsahují pouze obyčejný text.
  • Binární režim – zařízení-odesílatel odesílá každý soubor po bitech, zatímco příjemce ukládá stream bytů při přijímání. Podpora tohoto režimu byla doporučena pro všechny implementace FTP.
  • EBCDIC – používá se pro přenos obyčejného textu mezi hostiteli v kódování EBCDIC. Jinak je tento režim obdobný režimu ASCII.
  • Lokální režim – umožňuje dvěma počítačům s identickými nastaveními posílat data ve vlastním formátu bez konverze na ASCII.

Přenos dat může probíhat v libovolném z těchto tří režimů:

  • Streamový režim – data jsou odesílána jako nepřetržitý tok, což uvolňuje FTP od jakékoli zpracování. Namísto toho se veškeré zpracování provádí pomocí TCP. Indikátor konce souboru není potřeba, s výjimkou rozdělení dat na záznamy.
  • Blokový režim – FTP rozděluje data na několik bloků (blok hlavičky, počet bytů, pole dat) a poté je předává přes TCP.
  • Režim komprese – data jsou komprimována jednotným algoritmem (obvykle kódováním dlouhých řad).

FTP server – to je server, který umožňuje používání protokolu pro přenos souborů. Má určité vlastnosti, které jej odlišují od běžných webových serverů:

  • Je nutná autentizace uživatelů
  • Všechny operace se provádějí v rámci aktuální relace
  • Možnost provádět různé akce se souborovým systémem
  • Pro každé spojení se používá samostatný kanál

FTP klient – to je program, který umožňuje připojení k vzdálenému serveru přes FTP a vykonávání potřebných akcí na něm se součástmi souborového systému. Klientem může být i prohlížeč, do adresního řádku kterého je třeba zadat adresu, která představuje cestu k určitému adresáři nebo souboru na vzdáleném serveru podle obecné blokové schématu URL:

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

Použití webového prohlížeče v tomto ohledu však umožní pouze prohlížet nebo stahovat zajímavé soubory. Aby bylo možné plně využít všechny výhody FTP, je vhodné použít specializovaný software jako klient.

FTP autentizace používá schéma jméno uživatele/heslo k poskytnutí přístupu. Jméno uživatele je odesláno serveru příkazem USER a heslo příkazem PASS. Pokud server přijme informace poskytované klientem, pošle klientovi pozvání a relace začíná. Uživatelé mohou, pokud server tuto vlastnost podporuje, vstoupit do systému bez poskytnutí přihlašovacích údajů, ale server může pro takové relace poskytnout pouze omezený přístup.

Hostitel, který poskytuje FTP služby, může nabídnout anonymní přístup k FTP. Uživatelé se obvykle přihlašují jako "anonymous" (na některých FTP serverech může být zde citlivost na velikost písmen) jako jméno uživatele. Přestože uživatelé obvykle musí poslat adresu své elektronické pošty místo hesla, žádné ověření se ve skutečnosti neprovádí. Mnoho FTP hostitelů, kteří poskytují aktualizace softwaru, podporuje anonymní přístup.

Schéma protokolu

Interakce mezi „klientem a serverem“ při FTP připojení lze schematicky znázornit následovně:

Protokoly SFTP a FTPS

Bezpečný FTP

FTP nebyl původně navržen jako zabezpečený, protože byl určen pro komunikaci mezi několika vojenskými objekty a institucemi. S rozvojem a rozšířením internetu však vzrostlo riziko nezákonného přístupu mnohokrát. Objevil se požadavek na ochranu serverů před různými typy útoků. V květnu 1999 autoři RFC 2577 shrnuli zranitelnosti do následujícího seznamu problémů:

  • Skryté útoky (bounce attacks)
  • Spoofovací útoky (spoof attacks)
  • Útoky hrubou silou (brute force attacks)
  • Zachytávání paketů, sniffování (packet capture, sniffing)
  • Získání portů (port stealing)

Běžný FTP nemá možnost přenášet data zašifrovaně, což znamená, že uživatelská jména, hesla, příkazy a další informace mohou být ze strany útočníků snadno a rychle odchyceny. Běžné řešení tohoto problému je používat „bezpečné“ verze zranitelného protokolu (FTPS) s ochranou TLS nebo jiný, bezpečnější protokol, jako je SFTP/SCP, který je součástí většiny realizací protokolu Secure Shell.

FTPS

FTPS (FTP + SSL) je rozšíření standardního protokolu pro přenos souborů, které přidává do jeho základní funkce vytváření šifrovaných relací pomocí protokolu SSL (Secure Sockets Layer). V současné době je zabezpečení poskytováno jeho pokročilější analogií TLS (Transport Layer Security).

SSL

Protokol SSL byl navržen společností Netscape Communications v roce 1996 s cílem zajistit bezpečnost a ochranu soukromí internetových připojení. Protokol podporuje autentifikaci (ověření identity) klienta a serveru, nezávisí na aplikacích a je transparentní pro protokoly HTTP, FTP a Telnet.

Protokol SSL Handshake se skládá ze dvou fází: ověření identity serveru a nepovinné ověření identity klienta. V první fázi server v odpovědi na žádost klienta odešle svůj certifikát a šifrovací parametry. Poté klient vygeneruje master klíč, zašifruje ho veřejným klíčem serveru a odešle serveru. Server dešifruje master klíč svým soukromým klíčem a potvrzuje svou autenticitu klientovi tím, že mu vrátí zprávu podepsanou master klíčem klienta.

Následující údaje jsou šifrovány a ověřovány klíči získanými na základě tohoto hlavního klíče. Ve druhém kroku, který není povinný, server posílá klientovi žádost, a klient potvrzuje serveru svou autenticitu tím, že vrací žádost s vlastním digitálním podpisem a certifikátem veřejného klíče.

SSL podporuje různé kryptografické algoritmy. Při navazování spojení se používá kryptografický systém s veřejným klíčem RSA. Po výměně klíčů se používá mnoho různých šifer: RC2, RC4, IDEA, DES a TripleDES. Také se používá MD5 — algoritmus pro vytváření otisků zpráv. Syntaxe certifikátů veřejného klíče je popsána ve standardu X.509.

Jednou z důležitých výhod SSL je jeho úplná nezávislost na platformě a softwaru. Protokol je navržen na principech přenositelnosti a ideologie jeho konstrukce nezávisí na aplikacích, v jejichž rámci je používán. Kromě toho je důležité, že nad protokolem SSL mohou být transparentně vrstveny další protokoly; buď pro další zvýšení ochrany cílových informačních toků, nebo pro přizpůsobení kryptografických schopností SSL pro nějaký jiný, konkrétní úkol.

SSL připojení

Protokoly SFTP a FTPS

Poskytovaný bezpečný kanál SSL má tři hlavní vlastnosti:

  • Kanál je soukromý. Šifrování se používá pro všechny zprávy po jednoduchém dialogu, který slouží k určení tajného klíče.
  • Kanál je autentizovaný. Serverová část dialogu je vždy autentizována, zatímco klientská část se autentizuje volitelně.
  • Kanál je spolehlivý. Přenos zpráv zahrnuje kontrolu integrity (s použitím MAC).

Charakteristiky FTPS

Existují dvě implementace FTPS, které používají různé metody zajištění bezpečnosti:

  • Nepřímá metoda předpokládá použití standardního protokolu SSL s navázáním relace před odesláním dat, což naopak narušuje kompatibilitu s běžnými FTP klienty a servery. Pro zpětnou kompatibilitu s klienty, kteří FTPS nepodporují, se pro řídicí spojení používá TCP port 990 a pro přenos dat port 989. To umožňuje uchovat standardní port 21 pro FTP protokol. Tato metoda je považována za zastaralou.
  • Explicitní přístup je mnohem pohodlnější, protože využívá standardní FTP příkazy, ale při odpovědi šifruje data, což umožňuje použít jedno a to samé řídící spojení jak pro FTP, tak pro FTPS. Klient musí explicitně požádat server o zabezpečený přenos dat a poté schválit způsob šifrování. Pokud klient nepožádá o zabezpečený přenos, má FTPS server právo jak uchovat, tak uzavřít nezabezpečené spojení. Mechanismus vyjednávání identifikace a ochrany dat byl přidán pod RFC 2228, které zahrnuje nový FTP příkaz AUTH. Ačkoliv tento standard výslovně neurčuje mechanismy ochrany, definuje, že zabezpečené spojení by měl iniciovat klient pomocí výše popsaného algoritmu. Pokud server nepodporuje zabezpečená spojení, měl by být vrácen kód chyby 504. FTPS klienti mohou získat informace o podporovaných serverových protokolech ochrany pomocí příkazu FEAT, nicméně server není povinen zveřejňovat, jaké úrovně zabezpečení podporuje. Nejběžnější FTPS příkazy jsou AUTH TLS a AUTH SSL, které poskytují ochranu TLS a SSL odpovídajícím způsobem.

SFTP

SFTP (Secure File Transfer Protocol) – protokol aplikační vrstvy pro přenos souborů, který funguje nad zabezpečeným kanálem. Nesmí být zaměňován se (Simple File Transfer Protocol), který má stejnou zkratku. Zatímco FTPS je prostě rozšířením FTP, SFTP je samostatný a nijak nesouvisející protokol, který jako základ využívá SSH (Secure Shell – zabezpečená šelma).

Secure Shell

Vývojem protokolu se zabývala jedna ze skupin IETF nazvaná Secsh. Pracovní dokumentace k novému protokolu SFTP se nestala oficiálním standardem, nicméně byla aktivně používána při vývoji aplikací. V průběhu doby bylo vydáno šest verzí protokolu. Postupné zvyšování jeho funkcionality však vedlo k tomu, že 14. srpna 2006 bylo rozhodnuto o ukončení práce na rozvoji protokolu v souvislosti se splněním hlavního cíle projektu (vývoj SSH) a nedostatkem dostatečné úrovně odbornosti pro přechod k vývoji plnohodnotného protokolu vzdáleného souborového systému.

SSH je síťový protokol, který umožňuje vzdálené řízení operačního systému a tunelování TCP připojení (například pro přenos souborů). Je funkčně podobný protokolům Telnet a rlogin, ale na rozdíl od nich šifruje veškerý provoz, včetně přenášených hesel. SSH umožňuje výběr různých šifrovacích algoritmů. Klienti SSH a servery SSH jsou dostupné pro většinu síťových operačních systémů.

SSH umožňuje bezpečný přenos prakticky jakéhokoli jiného síťového protokolu v nechráněném prostředí. Takto lze nejen vzdáleně pracovat na počítači prostřednictvím příkazového řádku, ale také přenášet šifrovaným kanálem zvukový nebo video stream (například z webové kamery). SSH také může používat kompresi přenášených dat pro jejich následné šifrování, což je užitečné například pro vzdálené spuštění klientů X Window System.

První verze protokolu, SSH-1, byla vyvinuta v roce 1995 výzkumníkem Tatu Uljönem z Technické univerzity Helsinky (Finsko). SSH-1 byl napsán pro zajištění větší ochrany soukromí než protokoly rlogin, telnet a rsh. V roce 1996 byla vyvinuta bezpečnější verze protokolu, SSH-2, která není kompatibilní se SSH-1. Protokol získal ještě větší popularitu a do roku 2000 měl přibližně dva miliony uživatelů. V současnosti se pod termínem „SSH“ obvykle rozumí právě SSH-2, protože první verze protokolu se vzhledem k zásadním nedostatkům dnes téměř nepoužívá. V roce 2006 byl protokol schválen pracovní skupinou IETF jako internetový standard.

Existují dvě běžné realizace SSH: komerční a bezplatná svobodná. Bezplatná realizace se nazývá OpenSSH. K roku 2006 používalo 80 % počítačů v síti Internet právě OpenSSH. Komerční realizaci vyvíjí organizace SSH Communications Security, která je stoprocentní dceřinou společností korporace Tectia a je bezplatná pro nekomerční použití. Tyto realizace obsahují prakticky shodný soubor příkazů.

Protokol SSH-2, na rozdíl od protokolu telnet, odolává útokům na odposlech provozu ("sniffing"), ale není odolný proti útokům "člověk uprostřed". Protokol SSH-2 je také odolný vůči útokům připojení uprostřed (angl. session hijacking), protože není možné se připojit k již vytvořené relaci nebo ji odchytit.

Aby se předešlo útokům "člověk uprostřed" při připojení k hostiteli, jehož klíč ještě není známy klientovi, klientský software zobrazuje uživateli "otisk klíče" (angl. key fingerprint). Doporučuje se důkladně zkontrolovat otisk klíče zobrazený klientským softwarem ve srovnání s otiskem klíče serveru, ideálně získaným přes spolehlivé komunikační kanály nebo osobně.

Podpora SSH je realizována ve všech UNIX-podobných systémech a na většině z nich jsou mezi standardními nástroji dostupné klienti a servery ssh. Existuje mnoho implementací SSH klientů i pro ne-UNIX OS. Protokol získal velkou popularitu po širokém rozvoji analyzátorů provozu a způsobů narušování lokálních sítí jako alternativní bezpečné řešení k protokolu Telnet pro správu důležitých uzlů.

Spojení s použitím SSH

Pro použití SSH je potřeba SSH server a SSH klient. Server naslouchá připojením od klientských strojů a po navázání spojení provádí autentizaci, po které začíná obsluhovat klienta. Klient se používá pro vstup na vzdálený stroj a vykonávání příkazů.

Protokoly SFTP a FTPS

Srovnání s FTPS

Hlavní rozdíl mezi SFTP a standardním FTP a FTPS je v tom, že SFTP šifruje všechny příkazy, uživatelská jména, hesla a další důvěrné informace.

Oba protokoly FTPS a SFTP používají kombinaci asymetrických algoritmů (RSA, DSA), symetrických algoritmů (DES/3DES, AES, Twofish atd.), stejně jako algoritmus výměny klíčů. Pro autentizaci FTPS (nebo, pokud budeme přesnější, SSL/TLS podle protokolu FTP) používá certifikáty X.509, zatímco SFTP (SSH protokol) používá SSH klíče.

Certifikáty X.509 zahrnují veřejný klíč a určité informace o certifikátu vlastníka. Tyto informace umožňují na druhé straně ověřit integritu samotného certifikátu, jeho pravost a vlastníka osvědčení. Certifikáty X.509 mají odpovídající soukromý klíč, který je obvykle uchováván odděleně od certifikátu z bezpečnostních důvodů.

Šifrovací klíč obsahuje pouze veřejný klíč (odpovídající soukromý klíč je uchováván odděleně). Neobsahuje žádné informace o vlastníkovi klíče. Některé implementace SSH používají certifikáty X.509 pro autentizaci, ale ve skutečnosti neověřují celou řetězec certifikátů — používá se pouze veřejný klíč (což činí takovou autentizaci neúplnou).

Závěr

Protokol FTP bezesporu stále hraje důležitou roli v otázce ukládání a distribuce informací v síti, navzdory svému uctívanému věku. Je to pohodlný, multifunkční a standardizovaný protokol. Na jeho základě byly postaveny mnohé souborové archivy, bez kterých by technická práce nebyla tak efektivní. Navíc je snadno konfigurovatelný a serverové a klientské programy existují prakticky pro všechny aktuální i méně rozšířené platformy.

Jeho zabezpečené verze naopak řeší problém důvěrnosti uchovávaných a přenášených dat v moderním světě. Oba nové protokoly mají své klady a zápory a vykonávají poněkud odlišné role. V oblastech, kde je preferován právě souborový archiv, je vhodnější použít FTPS, zejména pokud tam již dříve byl používán klasický FTP. SFTP je méně rozšířené kvůli své nekompatibilitě se starým protokolem, ale je více zabezpečené a nabízí větší funkcionalitu, protože je součástí systému vzdáleného řízení.

Seznam zdrojů

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster