Protokoly SFTP a FTPS

předmluva

Zrovna před týdnem jsem psal esej na téma uvedené v nadpisu a narazil jsem na fakt, že řekněme, že na internetu není tolik vzdělávacích informací. Většinou suchá fakta a návod k nastavení. Proto jsem se rozhodl text mírně upravit a vložit jako článek.

Co je FTP

FTP (File Transfer Protocol) je protokol pro přenos souborů po síti. Je to jeden ze základních ethernetových protokolů. Objevil se v roce 1971 a zpočátku pracoval v sítích DARPA. V současné době je přenos souborů stejně jako HTTP založen na modelu sestávajícím ze sady protokolů TCP/IP (Transmission Control Protocol/Internet Protocol). Definováno v RFC 959.

Protokol definuje následující:

  • Jak bude probíhat kontrola chyb?
  • Způsob balení dat (pokud se používá balení)
  • Jak odesílající zařízení signalizuje, že dokončilo zprávu?
  • Jak přijímající zařízení oznámí, že přijalo zprávu?

Komunikace mezi klientem a serverem

Podívejme se blíže na procesy, ke kterým dochází při provozu FTP. Spojení je inicializováno interpretem protokolu uživatele. Ústředna je řízena řídicím kanálem ve standardu TELNET. FTP příkazy jsou generovány interpretem protokolu uživatele a odesílány na server. Odpovědi serveru jsou také odesílány uživateli prostřednictvím řídicího kanálu. Obecně má uživatel možnost navázat kontakt s interpretem protokolu serveru a jinými prostředky než je interpret uživatele.

Hlavním rysem FTP je, že používá duální připojení. Jeden z nich se používá k odesílání příkazů na server a probíhá standardně přes TCP port 21, který lze změnit. Řídicí připojení existuje, dokud klient komunikuje se serverem. Při přenosu dat mezi stroji musí být řídicí kanál otevřený. Pokud je zavřený, přenos dat se zastaví. Prostřednictvím druhého dochází k přímému přenosu dat. Otevře se pokaždé, když dojde k přenosu souboru mezi klientem a serverem. Pokud je současně přenášeno několik souborů, každý z nich otevře svůj vlastní přenosový kanál.

FTP může pracovat v aktivním nebo pasivním režimu, jehož výběr určuje způsob navázání spojení. V aktivním režimu klient vytvoří řídicí spojení TCP se serverem a odešle na server svou IP adresu a libovolné číslo klientského portu a poté čeká, až server zahájí TCP spojení s touto adresou a číslem portu. V případě, že je klient za firewallem a nemůže přijmout příchozí TCP spojení, lze použít pasivní režim. V tomto režimu klient používá řídicí tok k odeslání příkazu PASV na server a poté obdrží od serveru jeho IP adresu a číslo portu, které pak klient použije k otevření datového toku ze svého libovolného portu.

Je možné, že data mohou být přenesena do třetího stroje. V tomto případě uživatel organizuje řídicí kanál se dvěma servery a organizuje mezi nimi přímý datový kanál. Ovládací příkazy procházejí uživatelem a data jdou přímo mezi servery.

Při přenosu dat po síti lze použít čtyři reprezentace dat:

  • ASCII – používá se pro text. Data jsou v případě potřeby převedena ze znakové reprezentace na odesílajícím hostiteli do "osmibitového ASCII" před přenosem a (opět, pokud je to nutné) do znakové reprezentace na přijímajícím hostiteli. Zejména jsou změněny znaky nového řádku. V důsledku toho není tento režim vhodný pro soubory obsahující více než jen prostý text.
  • Binární režim – odesílající zařízení odesílá každý soubor bajt po bajtu a příjemce po přijetí uloží proud bajtů. Podpora tohoto režimu byla doporučena pro všechny implementace FTP.
  • EBCDIC – používá se k přenosu prostého textu mezi hostiteli v kódování EBCDIC. Jinak je tento režim podobný režimu ASCII.
  • Místní režim – umožňuje dvěma počítačům s identickým nastavením odesílat data ve vlastním formátu bez převodu do ASCII.

Přenos dat lze provádět v kterémkoli ze tří režimů:

  • Režim streamování – data se odesílají jako nepřetržitý proud, čímž se FTP osvobozuje od jakéhokoli zpracování. Místo toho se veškeré zpracování provádí protokolem TCP. Indikátor konce souboru není nutný, kromě rozdělení dat do záznamů.
  • Blokový režim - FTP rozdělí data do několika bloků (blok záhlaví, počet bajtů, datové pole) a poté je přenese do TCP.
  • Režim komprese – data jsou komprimována pomocí jediného algoritmu (obvykle kódováním délek běhů).

FTP server je server, který poskytuje možnost používat File Transfer Protocol. Má určité vlastnosti, které jej odlišují od běžných webových serverů:

  • Vyžaduje se ověření uživatele
  • Všechny operace se provádějí v rámci aktuální relace
  • Schopnost provádět různé akce se systémem souborů
  • Pro každé připojení je použit samostatný kanál

FTP klient je program, který umožňuje připojit se ke vzdálenému serveru přes FTP a také na něm provádět potřebné akce s prvky souborového systému. Klientem může být prohlížeč, do jehož adresního řádku byste měli zadat adresu, což je cesta ke konkrétnímu adresáři nebo souboru na vzdáleném serveru, v souladu s obecným blokovým diagramem URL:

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

Použití webového prohlížeče v tomto kontextu vám však umožní pouze prohlížet nebo stahovat soubory, které vás zajímají. Abyste mohli plně využít všech výhod FTP, měli byste jako klienta používat specializovaný software.

FTP ověřování používá k udělení přístupu schéma uživatelského jména/hesla. Uživatelské jméno je odesláno na server příkazem USER a heslo je odesláno příkazem PASS. Pokud jsou informace poskytnuté klientem přijaty serverem, server odešle klientovi pozvánku a relace začne. Uživatelé se mohou, pokud server tuto funkci podporuje, přihlásit bez zadání přihlašovacích údajů, ale server může takovým relacím udělit pouze omezený přístup.

Hostitel poskytující službu FTP může poskytovat anonymní FTP přístup. Uživatelé se obvykle přihlašují pomocí „anonymního“ (na některých serverech FTP může rozlišovat malá a velká písmena) jako uživatelské jméno. Ačkoli jsou uživatelé obvykle požádáni, aby místo hesla uvedli svou e-mailovou adresu, žádné ověření se ve skutečnosti neprovádí. Mnoho hostitelů FTP, kteří poskytují aktualizace softwaru, podporuje anonymní přístup.

Schéma protokolu

Interakci klient-server během připojení FTP lze vizualizovat následovně:

Protokoly SFTP a FTPS

Zabezpečené FTP

FTP neměl být původně bezpečný, protože byl určen pro komunikaci mezi více vojenskými zařízeními a agenturami. Ale s rozvojem a šířením internetu se nebezpečí neoprávněného přístupu mnohokrát zvýšilo. Bylo potřeba chránit servery 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 (odrazové útoky)
  • Spoof útoky
  • Útoky hrubou silou
  • Zachycování paketů, čichání
  • Krádež přístavů

Běžné FTP nemá možnost přenášet data v šifrované podobě, v důsledku čehož mohou být uživatelská jména, hesla, příkazy a další informace snadno a snadno zachyceny útočníky. Obvyklým řešením tohoto problému je použití "zabezpečených" verzí zranitelného protokolu (FTPS) chráněných TLS nebo jiného, ​​bezpečnějšího protokolu, jako je SFTP/SCP, který je součástí většiny implementací protokolu Secure Shell.

FTPS

FTPS (FTP + SSL) je rozšíření standardního protokolu pro přenos souborů, které k jeho základní funkcionalitě přidává vytváření šifrovaných relací pomocí protokolu SSL (Secure Sockets Layer). Dnes ochranu zajišťuje jeho pokročilejší analogový TLS (Transport Layer Security).

SSL

Protokol SSL byl navržen společností Netscape Communications v roce 1996, aby zajistil bezpečnost a soukromí internetových připojení. Protokol podporuje ověřování klienta a serveru, je nezávislý na aplikaci a je transparentní pro protokoly HTTP, FTP a Telnet.

Protokol SSL Handshake se skládá ze dvou fází: ověřování serveru a volitelné ověřování klienta. V první fázi server odpoví na požadavek klienta zasláním jeho certifikátu a parametrů šifrování. Klient poté vygeneruje hlavní klíč, zašifruje jej veřejným klíčem serveru a odešle jej na server. Server dešifruje hlavní klíč pomocí svého soukromého klíče a ověří se klientovi vrácením zprávy ověřené hlavním klíčem klienta.

Následná data jsou zašifrována a ověřena pomocí klíčů odvozených z tohoto hlavního klíče. Ve druhém kroku, který je volitelný, server odešle klientovi požadavek a klient se autentizuje na serveru vrácením požadavku 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í komunikace je využíván kryptosystém veřejného klíče RSA. Po výměně klíčů se používá mnoho různých šifer: RC2, RC4, IDEA, DES a TripleDES. Používá se také MD5 - algoritmus pro vytváření výtahu zpráv. Syntaxe certifikátů veřejného klíče je popsána v X.509.

Jednou z důležitých výhod SSL je jeho úplná nezávislost na softwarové platformě. Protokol je vyvinut na principech přenositelnosti a ideologie jeho konstrukce nezávisí na aplikacích, ve kterých je použit. Kromě toho je také důležité, že nad protokol SSL lze transparentně překrývat jiné protokoly; buď k dalšímu zvýšení stupně ochrany cílových informačních toků, nebo k přizpůsobení kryptografických schopností SSL pro nějaký jiný, dobře definovaný úkol.

SSL připojení

Protokoly SFTP a FTPS

Zabezpečený kanál poskytovaný protokolem 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 ověřen. Serverová strana konverzace je vždy ověřena, zatímco klientská strana je volitelně ověřena.
  • Kanál je spolehlivý. Přenos zpráv zahrnuje kontrolu integrity (pomocí MAC).

Vlastnosti FTPS

Existují dvě implementace FTPS, které používají různé metody poskytování zabezpečení:

  • Implicitní metoda zahrnuje použití standardního protokolu SSL k vytvoření relace před odesláním dat, což zase narušuje kompatibilitu s běžnými FTP klienty a servery. Pro zpětnou kompatibilitu s klienty, kteří nepodporují FTPS, je pro řídicí spojení použit TCP port 990 a pro přenos dat 989. Tím je zachován standardní port 21 pro protokol FTP. Tato metoda je považována za zastaralou.
  • Explicitní je mnohem pohodlnější, protože používá standardní FTP příkazy, ale při odpovědi šifruje data, což vám umožňuje používat stejné řídicí připojení pro FTP i FTPS. Klient musí výslovně požádat o bezpečný přenos dat ze serveru a poté schválit metodu šifrování. Pokud klient nepožaduje zabezpečený přenos, server FTPS má právo nezabezpečené připojení buď zachovat, nebo uzavřít. V rámci RFC 2228 byl přidán mechanismus pro vyjednávání ověřování a zabezpečení dat, který zahrnuje nový příkaz FTP AUTH. Ačkoli tento standard výslovně nedefinuje bezpečnostní mechanismy, specifikuje, že zabezpečené připojení musí být iniciováno klientem pomocí výše popsaného algoritmu. Pokud zabezpečená připojení nejsou podporována serverem, měl by být vrácen chybový kód 504. FTPS klienti mohou získat informace o bezpečnostních protokolech podporovaných serverem pomocí příkazu FEAT, server však nemusí sdělovat, jaké úrovně zabezpečení má. podporuje. Nejběžnější příkazy FTPS jsou AUTH TLS a AUTH SSL, které poskytují zabezpečení TLS a SSL.

SFTP

SFTP (Secure File Transfer Protocol) je protokol pro přenos souborů aplikační vrstvy, který běží nad zabezpečeným kanálem. Nezaměňujte s (Simple File Transfer Protocol), který má stejnou zkratku. Pokud je FTPS prostě rozšířením FTP, pak je SFTP samostatný a nesouvisející protokol, který jako základ používá SSH (Secure Shell).

Secure Shell

Protokol byl vyvinut jednou ze skupin IETF s názvem Secsh. Pracovní dokumentace k novému protokolu SFTP se nestala oficiálním standardem, ale začala být aktivně využívána pro vývoj aplikací. Následně bylo uvolněno šest verzí protokolu. Postupné navyšování funkčnosti v něm však vedlo k tomu, že 14. srpna 2006 bylo rozhodnuto ukončit práce na vývoji protokolu z důvodu dokončení hlavního úkolu projektu (vývoj SSH) a chybějící dostatečné expertní úrovně, aby mohl přejít k vývoji plnohodnotného protokolu vzdáleného souborového systému.

SSH je síťový protokol, který umožňuje vzdálené ovládání operačního systému a tunelování TCP spojení (například pro přenos souborů). 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 k dispozici pro většinu síťových operačních systémů.

SSH umožňuje bezpečný přenos téměř jakéhokoli jiného síťového protokolu v nezabezpečeném prostředí. Můžete tak nejen vzdáleně pracovat na svém počítači prostřednictvím příkazového shellu, ale také přenášet audio stream nebo video (například z webové kamery) přes šifrovaný kanál. SSH dokáže využít i komprimaci přenášených dat pro následné šifrování, což se hodí například pro vzdálené spouštění klientů X WindowSystem.

První verze protokolu, SSH-1, byla vyvinuta v roce 1995 výzkumníkem Tatu Ulönenem z Helsinské technologické univerzity (Finsko). SSH-1 byl napsán tak, aby poskytoval větší soukromí než protokoly rlogin, telnet a rsh. V roce 1996 byla vyvinuta bezpečnější verze protokolu SSH-2, která není kompatibilní s SSH-1. Protokol získal ještě větší popularitu a v roce 2000 měl přibližně dva miliony uživatelů. V současné době termín „SSH“ obvykle znamená SSH-2, protože První verze protokolu se dnes pro značné nedostatky prakticky nepoužívá. V roce 2006 byl protokol schválen pracovní skupinou IETF jako internetový standard.

Existují dvě běžné implementace SSH: soukromé komerční a bezplatné open source. Bezplatná implementace se nazývá OpenSSH. V roce 2006 používalo OpenSSH 80 % počítačů na internetu. Proprietární implementaci vyvinula SSH Communications Security, XNUMX% dceřiná společnost Tectia Corporation, a je zdarma pro nekomerční použití. Tyto implementace obsahují téměř stejnou sadu příkazů.

Protokol SSH-2, na rozdíl od protokolu telnet, je odolný proti útokům na odposlouchávání provozu („sniffing“), ale není odolný proti útokům typu man-in-the-middle. Protokol SSH-2 je také odolný proti útokům typu session hijacking, protože není možné se připojit nebo unést již vytvořenou relaci.

Aby se zabránilo útokům typu man-in-the-middle při připojování k hostiteli, jehož klíč klient ještě nezná, klientský software zobrazuje uživateli „otisk klíče“. Doporučuje se pečlivě zkontrolovat „klíčový snímek“ zobrazený klientským softwarem se snímkem klíče serveru, nejlépe získaným prostřednictvím spolehlivých komunikačních kanálů nebo osobně.

Podpora SSH je k dispozici na všech systémech podobných UNIXu a většina z nich má ssh klienta a server jako standardní nástroje. Existuje mnoho implementací klientů SSH pro jiné operační systémy než UNIX. Protokol si získal velkou oblibu po rozsáhlém rozvoji analyzátorů provozu a metod pro narušení provozu lokálních sítí jako alternativní řešení k nezabezpečenému protokolu Telnet pro správu důležitých uzlů.

Komunikace pomocí SSH

Pro práci přes SSH potřebujete SSH server a SSH klienta. Server naslouchá připojení z klientských počítačů a po navázání připojení provede ověření, po kterém začne obsluhovat klienta. Klient se používá k přihlášení ke vzdálenému počítači a provádění příkazů.

Protokoly SFTP a FTPS

Srovnání s FTPS

Hlavní věc, která odlišuje SFTP od standardních FTP a FTPS, je to, že SFTP šifruje absolutně všechny příkazy, uživatelská jména, hesla a další důvěrné informace.

Protokoly FTPS i SFTP využívají kombinaci asymetrických algoritmů (RSA, DSA), symetrických algoritmů (DES/3DES, AES, Twhofish atd.) a také algoritmu výměny klíčů. K autentizaci používá FTPS (nebo přesněji SSL/TLS přes FTP) certifikáty X.509, zatímco SFTP (protokol SSH) používá klíče SSH.

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

Klíč SSH obsahuje pouze veřejný klíč (odpovídající soukromý klíč je uložen samostatně). Neobsahuje žádné informace o majiteli klíče. Některé implementace SSH používají k autentizaci certifikáty X.509, ale ve skutečnosti neověřují celý řetězec certifikátů – používá se pouze veřejný klíč (což činí takovou autentizaci neúplnou).

Závěr

Protokol FTP nepochybně stále hraje důležitou roli při ukládání a distribuci informací v síti i přes své úctyhodné stáří. Je to pohodlný, multifunkční a standardizovaný protokol. Na jeho základě bylo vybudováno mnoho spisových archivů, bez kterých by technická práce nebyla tak efektivní. Navíc se snadno nastavuje a serverové a klientské programy existují pro téměř všechny současné i nepříliš aktuální platformy.

Jeho chráněné verze zase řeší problém důvěrnosti uložených a přenášených dat v moderním světě. Oba nové protokoly mají svá pro a proti a plní mírně odlišné role. V oblastech, kde je potřeba archiv souborů, je vhodnější použít FTPS, zvláště pokud se tam již dříve používal klasický FTP. SFTP je méně běžný kvůli jeho nekompatibilitě se starým protokolem, ale je bezpečnější a má více funkcí, protože je součástí systému vzdálené správy.

Seznam zdrojů

Zdroj: www.habr.com

Přidat komentář