FTP | |
---|---|
název | Protokol přenosu souborů |
Úroveň (podle modelu OSI ) | Aplikovaný |
Rodina | TCP/IP |
Vytvořeno v | 1971 |
Port/ID | 21/TCP pro příkazy, 20/TCP pro data, 49152-65534/TCP dynamic |
Účel protokolu | Přenos souboru |
Specifikace | RFC 959 |
Hlavní implementace (klienti) | Porovnání FTP klientů |
Implementace jádra ( servery ) | Porovnání FTP serverů |
Rozšiřitelnost | Přidat. týmy |
Mediální soubory na Wikimedia Commons |
FTP ( anglicky File Transfer Protocol ) je protokol pro přenos souborů po síti , který se objevil v roce 1971 dávno před HTTP a dokonce ještě před TCP/IP , díky čemuž je jedním z nejstarších aplikačních protokolů. Zpočátku fungoval FTP nad protokolem NCP [1] , dnes je široce používán pro distribuci softwaru a přístup ke vzdáleným hostitelům . Na rozdíl od TFTP zaručuje přenos (nebo chybu) pomocí protokolu kvót .
Protokol je postaven na architektuře klient-server a používá různá síťová připojení k přenosu příkazů a dat mezi klientem a serverem. Uživatelé FTP se mohou ověřit předáním uživatelského jména a hesla jako prostý text , nebo, pokud je to na serveru povoleno, mohou se připojit anonymně. Pro bezpečný přenos můžete použít protokol SSH, který zašifruje (skryje) uživatelské jméno a heslo a také obsah souboru.
První FTP klientské aplikace byly interaktivní nástroje příkazového řádku , implementující standardní příkazy a syntaxi. Od té doby byla vyvinuta grafická uživatelská rozhraní pro mnoho dnes používaných operačních systémů. Tato rozhraní sahají od součástí obecného programu pro návrh webu, jako je Microsoft Expression Web , až po specializované FTP klienty, jako je FileZilla .
Vlastnictví | FTP | http |
---|---|---|
Na základě pracovních sezení | Ano | Ne |
Vestavěné ověřování uživatele | Ano | Ne |
Původně určeno pro přenos | Velké dvojhvězdy | malé textové soubory |
Model připojení | Dvojité připojení | Jedno připojení |
Podporuje textové a binární režimy přenosu | Ano | Ne |
Podporuje přenosové datové typy ( MIME hlavičky) | Ne | Ano |
Podporuje operace souborového systému (mkdir, rm, přejmenování atd.) | Ano | Ne |
Poměrně nápadnou vlastností protokolu FTP je, že používá více (alespoň dvojitých) připojení. V tomto případě je jeden kanál řídícím kanálem, přes který jsou přijímány příkazy na server a jeho odpovědi jsou vraceny (obvykle přes TCP port 21), a data jsou ve skutečnosti přenášena přes zbytek, jeden kanál pro každý přenos. V rámci jedné relace lze tedy protokolem FTP přenášet více souborů současně, a to oběma směry. Pro každý datový kanál je otevřen jeho vlastní TCP port, jehož číslo volí server nebo klient v závislosti na režimu přenosu [2] .
Protokol FTP (jako HTTP) má režim binárního přenosu, který snižuje režii provozu a zkracuje dobu výměny dat při přenosu velkých souborů.
Po zahájení práce přes protokol FTP klient vstoupí do relace a v rámci této relace se provedou všechny operace (jinými slovy, server si pamatuje aktuální stav). Protokol HTTP si nic „nepamatuje“ - jeho úkolem je dát data a zapomenout, proto zapamatování stavu při použití HTTP se provádí metodami externími protokolu [2] .
FTP funguje na aplikační vrstvě modelu OSI a používá se k přenosu souborů pomocí TCP/IP . K tomu musí být spuštěn FTP server a čekat na příchozí požadavky. Klientský počítač může komunikovat se serverem na portu 21. Toto připojení (tok řízení) zůstává otevřené po dobu trvání relace. Druhé připojení (datový tok) může otevřít buď server z portu 20 na port odpovídajícího klienta (aktivní režim), nebo klient z libovolného portu na port odpovídajícího serveru (pasivní režim), který je nutné k přenosu datového souboru. Řídicí tok se používá k práci s relací - například výměna příkazů a hesel mezi klientem a serverem pomocí protokolu podobného telnetu. Například "RETR název_souboru" přenese zadaný soubor ze serveru na klienta. Kvůli této dvouportové struktuře je FTP považován za protokol mimo pásmo, na rozdíl od vnitropásmového HTTP .
Protokol je definován v RFC 959 . Server odpoví na řídicí tok pomocí tříznakových stavových kódů ASCII s volitelnou textovou zprávou. Například "200" (nebo "200 OK") znamená, že poslední příkaz byl úspěšný. Čísla představují kód odpovědi a text představuje vysvětlení nebo požadavek. Probíhající přenos datového toku může být přerušen zprávou o přerušení zaslanou přes řídicí tok.
FTP může pracovat v aktivním nebo pasivním režimu, který určuje, jak je spojení navázáno. V aktivním režimu klient vytvoří kontrolní TCP spojení se serverem a odešle na server svou IP adresu a libovolné číslo klientského portu, poté čeká, až server zahájí TCP spojení s touto adresou a číslem portu. Pokud 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á tok řízení k odeslání příkazu PASV na server a poté obdrží svou IP adresu a číslo portu ze serveru, které pak klient používá k otevření datového toku z libovolného klientského portu. na přijatou adresu a port. Oba režimy byly aktualizovány v září 1998, aby podporovaly IPv6. Během této doby byly provedeny další změny pasivního režimu, které se aktualizovaly na vylepšený pasivní režim.
Při přenosu dat po síti lze použít čtyři reprezentace dat:
Pro textové soubory jsou k dispozici různé formáty ovládání a nastavení struktury záznamu. Tyto funkce byly navrženy pro práci se soubory obsahujícími formátování Telnet nebo ASA.
Přenos dat lze provádět v kterémkoli ze tří režimů:
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.
Speciálně pro protokol FTP, aby fungoval přes firewally, bylo vytvořeno rozšíření NAT , nazvané FTP-ALG , které umožňuje vysílat příchozí spojení ze serveru na klienta přes NAT. Během takového připojení FTP-ALG nahradí přenášená data od klienta, přičemž serveru označí skutečnou adresu a port, na který se server může připojit, a poté vysílá spojení ze serveru z této adresy klientovi na jeho adresu. Přes všechna opatření a inovace přijaté na podporu protokolu FTP je v praxi funkce FTP-ALG obvykle ve všech směrovačích a směrovačích zakázána, aby bylo zajištěno dodatečné zabezpečení proti virovým hrozbám.
FTP normálně přenáší data, když je server připojen ke klientovi poté, co klient odeslal příkaz PORT. To vytváří problém jak pro NAT , tak pro firewally , které neumožňují připojení z Internetu k interním hostitelům . Pro NAT je dalším problémem to, že reprezentace IP adres a čísla portu v příkazu PORT odkazuje na IP adresu a port interního hostitele namísto veřejné IP adresy a portu NAT. Existují dva přístupy k tomuto problému. První je, že FTP klient a FTP server používají příkaz PASV, který vyvolá datové spojení vytvořené z klienta na server. Druhým přístupem je změna hodnot NAT příkazu PORT pomocí brány aplikační vrstvy .
První implementace protokolu (1971) umožňovala výměnu zpráv mezi klientem a serverem sestávajících z hlavičky (72 bitů) a dat s proměnnou délkou. Hlavička zprávy obsahovala požadavek na FTP server nebo odpověď z něj, typ a délku přenášených dat. Parametry dotazu (například cesta a název souboru), informace ze serveru (například seznam souborů v adresáři) a samotné soubory byly předány jako data. Příkazy a data byly tedy přenášeny stejným kanálem.
V roce 1972 byl protokol zcela změněn a nabyl podoby blízké té moderní. Příkazy s parametry z odpovědí klienta a serveru jsou přenášeny přes TELNET spojení (řídící kanál), pro přenos dat je vytvořeno samostatné spojení (datový kanál).
Následující edice přidaly možnost pracovat v pasivním režimu, přenášet soubory mezi FTP servery, zavedly příkazy pro získávání informací, změnu aktuálního adresáře, vytváření a mazání adresářů, ukládání souborů pod jedinečným názvem. Nějakou dobu existovaly příkazy pro odesílání e-mailů přes FTP, ale později byly z protokolu vyloučeny.
V roce 1980 začal protokol FTP používat TCP . Poslední verze protokolu byla vydána v roce 1985. V roce 1997 se objevil dodatek k protokolu, který umožňuje šifrovat a podepisovat informace v řídicím kanálu a datovém kanálu. V roce 1999 byl vydán dodatek k internacionalizaci protokolu, který doporučuje používat kódování UTF-8 pro serverové příkazy a odpovědi a definuje nový příkaz LANG, který nastavuje jazyk odpovědí.
Většina běžných webových prohlížečů dokáže načíst soubory umístěné na serverech FTP, i když nemusí podporovat rozšíření protokolu, jako je FTPS . Pokud je zadána FTP adresa namísto HTTP adresy, dostupný obsah na vzdáleném serveru je prezentován podobně jako jiný webový obsah. Plně funkční FTP klient lze spustit ve Firefoxu jako rozšíření FireFTP .
Od roku 2020 bude prohlížeč Chrome (a možná i další) zcela zbaven podpory protokolu FTP. [3]
SyntaxSyntaxe FTP URI je popsána v RFC 1738 ve tvaru: ftp://[<uživatelské jméno>[:<heslo>]@]<hostitel>[:<port>]/<cesta> (parametry v hranatých závorkách jsou volitelné ). Například:
ftp://public.ftp-servers.example.com/mydirectory/myfile.txt (downlink) (downlink)
nebo:
ftp://user001:[email protected]/mydirectory/myfile.txt (downlink) (downlink)
Další informace o zadání uživatelského jména a hesla naleznete v dokumentaci prohlížeče. Ve výchozím nastavení většina webových prohlížečů používá pasivní režim (PASV), který lépe obchází brány firewall koncových uživatelů.
FTP nebylo navrženo tak, aby bylo bezpečné (zejména podle dnešních standardů) a má četné bezpečnostní chyby. V květnu 1999 autoři RFC 2577 zredukovali zranitelnosti na následující seznam problémů:
FTP nemůže šifrovat svůj provoz, všechny přenosy jsou prostý text, takže uživatelská jména, hesla, příkazy a data může číst kdokoli, kdo dokáže zachytit paket v síti. Tento problém je společný pro mnoho specifikací internetového protokolu (včetně SMTP , Telnet , POP, IMAP), které byly vyvinuty před tím, než byly vyvinuty šifrovací mechanismy jako TLS a SSL. Obvyklým řešením tohoto problému je použití „zabezpečených“, TLS-zabezpečených verzí zranitelných protokolů ( FTPS pro FTP, TelnetS pro Telnet atd.) nebo jiného bezpečnějšího protokolu, jako je SFTP / SCP , který je součástí většiny implementací protokolu Secure Shell . ..
Existuje několik metod bezpečného přenosu souborů, někdy označovaných jako „zabezpečený FTP“.
Explicitní FTPS je rozšířením standardu FTP, které klientům umožňuje vyžadovat šifrování FTP relace. To je realizováno odesláním příkazu "AUTH TLS". Server má schopnost povolit nebo odmítnout připojení, která nevyžadují TLS. Toto rozšíření protokolu je definováno ve specifikaci RFC 4217 . Implicitní FTPS je zastaralý standard pro FTP, který vyžaduje použití připojení SSL nebo TLS. Tento standard měl používat jiné porty než normální FTP.
SFTP nebo "SSH File Transfer Protocol" nesouvisí s FTP, kromě toho, že také přenáší soubory a má podobnou sadu příkazů pro uživatele. SFTP nebo zabezpečený FTP je program, který k přenosu souborů používá SSH (Secure Shell). Na rozdíl od standardního FTP šifruje příkazy i data, čímž zabraňuje otevřenému přenosu hesel a citlivých informací po síti. SFTP má podobnou funkci jako FTP, ale protože používá jiný protokol, standardní FTP klienti nemohou kontaktovat SFTP server a naopak.
FTP přes SSH (nikoli SFTP) odkazuje na praxi tunelování běžné FTP relace přes SSH připojení. Protože FTP používá více připojení TCP, tunelování přes SSH je obzvláště obtížné. Když se mnoho klientů SSH pokusí tunelovat řídicí kanál (původní spojení "klient-server" na portu 21), bude zabezpečen pouze tento kanál; při přenosu dat software FTP na obou koncích naváže nová TCP spojení (datové kanály), která obejdou spojení SSH a ztratí tak ochranu integrity .
V opačném případě musí mít klientský software SSH určité znalosti o FTP, aby mohl monitorovat a přepisovat zprávy řídicího toku FTP a autonomně otevírat nová přesměrování pro datový tok FTP.
Softwarové balíčky, které podporují tento režim:
FTP přes SSH je někdy označován jako bezpečný FTP, ale neměl by být zaměňován s jinými metodami, jako je SSL/TLS (FTPS). Další metody přenosu souborů pomocí SSH a nesouvisející s FTP jsou SFTP a SCP . V každém z nich jsou přihlašovací údaje i data souborů vždy chráněna protokolem SSH.
Níže je uveden stručný popis kódů odezvy, které může server FTP vrátit . Tyto kódy byly standardizovány IETF v RFC 959 . Jak již bylo zmíněno, kód odpovědi je třímístné číslo. První číslice je zodpovědná za jeden ze tří výsledků: úspěch, neúspěch nebo označení chyby nebo neúplné odpovědi.
Druhá číslice určuje typ chyby:
Třetí číslice nakonec specifikuje chybu.
V příkladu jsou příkazy zadané klientem zvýrazněny tučně; běžné písmo - zprávy serveru. Poznámky jsou odděleny dvěma lomítky:
220 FTP server připraven. 220 Ahoj světe! USER anonym 331 Anonymní přihlášení ok, jako heslo pošlete svou úplnou e-mailovou adresu SLOŽIT************ 230 Přihlášeno anonymně. PASV 227 Vstup do pasivního režimu (192,168,254,253,233,92) //Klient musí otevřít připojení k přenášené IP SEZNAM 150 Zde je výpis adresáře. // Server odešle seznam souborů do adresáře 226 Adresář odeslat OK. CWD příchozí 250 Adresář úspěšně změněn. PASV 227 Vstup do pasivního režimu (192,168,254,253,207,56) Příklad STOR.avi 150 OK pro odeslání dat. // Klient odešle obsah souboru 226 Příjem souboru OK. PŘESTAT 221 Sbohem.Argument 192,168,254,253,207,56 znamená, že se očekává připojení k serveru na hostiteli s IP adresou 192.168.254.253 na portu 207 << 8 + 56 = 53048 pro zápis 56 nebo 207*256+56=53).
Mnoho serverů FTP má adresář (nazývaný příchozí, upload atd.), do kterého lze zapisovat soubory na server. To umožňuje uživatelům naplnit servery čerstvými daty.
FXP ( File eXchange Protocol ) je způsob přímého přenosu souborů mezi dvěma FTP servery bez stahování souborů do počítače uživatele. Během relace FXP klient otevře dvě připojení FTP ke dvěma různým serverům, požádá o soubor na prvním serveru a v příkazu PORT zadá adresu IP druhého serveru.
Nepochybnou výhodou podpory standardu FXP je, že koncoví uživatelé, kteří chtějí kopírovat soubory z jednoho FTP serveru na druhý, již nepodléhají omezení šířky pásma vlastního internetového připojení. Není třeba stahovat soubor pro sebe, abyste jej mohli později nahrát na jiný FTP server. Doba přenosu souboru tedy bude záviset pouze na rychlosti připojení mezi dvěma vzdálenými FTP servery, která je ve většině případů samozřejmě vyšší než ta „uživatelská“.
FXP začali útočníci používat k útokům na jiné servery: příkaz PORT určuje IP adresu a port napadené služby na počítači oběti a příkazy RETR/STOR přistupují k tomuto portu jménem FTP serveru, nikoli útočícího serveru. stroj, který umožnil zařídit rozsáhlé DDoS útoky pomocí mnoha FTP serverů najednou nebo obejít bezpečnostní systém počítače oběti, pokud se spoléhá pouze na kontrolu IP klienta a FTP server použitý k útoku je umístěn na důvěryhodná síť nebo brána. Výsledkem je, že téměř všechny servery nyní kontrolují, zda se IP adresa zadaná v příkazu PORT shoduje s IP adresou FTP klienta, a ve výchozím nastavení zde zakazují používání IP adres třetích stran. Použití FXP tedy není možné při práci s veřejnými FTP servery.
URI | Schémata|
---|---|
Oficiální | |
neoficiální |
protokoly TCP /IP podle vrstev modelu OSI | Základní|
---|---|
Fyzický | |
odvedeny | |
síť | |
Doprava | |
zasedání | |
Zastoupení | |
Aplikovaný | |
Uplatněno jiné | |
Seznam portů TCP a UDP |