File Transfer Protocol

Z Wikipedie, otevřené encyklopedie

Skočit na: Navigace, Hledání
Internetové protokoly
Aplikační vrstva
Transportní vrstva
Síťová vrstva
Linková vrstva
Fyzická vrstva

FTP (File Transfer Protocol) je protokol aplikační vrstvy z rodiny TCP/IP, je určen pro přenos souborů mezi počítači, na kterých mohou běžet velmi rozdílné operační systémy.

Je to jeden z nejstarších protokolů, pracuje 8bitově na principu klient-server na portech TCP/21 a TCP/20. Port 21 slouží k řízení a jsou jím také přenášeny příkazy FTP. Port 20 slouží k vlastnímu přenosu dat.

Je definován v RFC 959. Protokol je interaktivní a umožňuje řízení přístupu (přihlašování login/heslo), specifikaci formátu přenášeného souboru (znakově - binárně), výpis vzdáleného adresáře atd. V současné době už není považován za bezpečný a z tohoto důvodu pro něj byla definována některá rozšíření (RFC 2228).

Jsou potřebné 2 počítače pro přenos protokolem FTP. Na prvním počítači musí být nakonfigurován a spuštěn FTP server. Tento počítač poskytuje data pro ostatní počítače. Další počítače (nazývaní klienti) se můžou připojovat na FTP server pomocí programu k tomu určenému. Po připojení klienta může dělat řadu operací, jako odesílání dat na server, stahování ze serveru, přejmenování, mazání a řadu dalších.

Výrobci softwaru jsou schopni vytvořit FTP server nebo klienta, protože FTP protokol je definován standardem. Tento standard je použitelný pro všechny platformy (operační systémy). To dovoluje použít pro FTP přenos jakýkoliv počítač, připojený přes TCP/IP protokol k internetu.

Existuje mnoho programů pro FTP servery a klienty a mnoho je jich volně dostupných.

Obsah

[editovat] Přehled

FTP běžně pracuje na dvou portech, 21 a 20 a běží výhradně přes TCP (Transmission control protocol). FTP server naslouchá na portu 21 na příchozí spojení z FTP klienta. Na tomto portu běží příkazy, které zachytává server. Na portu 20 se přenáší pouze data, nikoliv příkazy. Jakmile se začnou stahovat data, na příkazovém portu se nic nepřenáší. Může nastat problém při stahování dlouhých dat přes firewally, protože po dlouhé nečinnosti portu 21 ho může odpojit, a objeví se chybové hlášení.

[editovat] Jak se připojit na FTP server

První co musíte udělat je stáhnout si FTP klienta. Mnoho operačních systémů má již integrovaný nějaký tento program. Pro spuštění FTP klienta ve Windows otevřete příkazovou řádku. (klikněte na start, potom na Spustit, a do okénka napište CMD). napište FTP a odešlete. Nyní můžete příkazem open název serveru otevřít ftp server. např.:

„open ftp.freebsd.org“

Nyní jste připojeni na server ftp.freebsd.org. Tento server podporuje anonymní připojení, takže jméno uživatele může být třeba „ftp“ nebo „anonymous“ a heslo emailová adresa (nebo může být prázdné, někdy je vyžadován alespoň znak „@“). Jestliže server nepodporuje anonymní přihlašování, musíte do jména a hesla zadat údaje získané administrátorem serveru nebo pověřenou osobou. např: „User ftp“ pro další informace můžete napsat slovo „help“ a vyjedou vám další informace. Naprostá většina anonymních serverů umožňuje pouze čtení dat. Takže nám půjde si stáhnou požadovaný soubor do svého počítače, u některých funguje i nahrávání dat na server.

Někdy je potřeba okamžitě odkázat na ftp server, který je zabezpečený heslem a neposílat přihlašovací údaje zvlášť. (Např. u webového prohlížeče) Adresa pak má následující tvar:

ftp://<uživatelské jméno>:<heslo>@<adresa serveru + adresář>

[editovat] Nejčastější užití FTP

Nejčastější užití ftp přenosů jsou:

  1. Sdílení dat (často hudba, videa, vlastní tvorba, …).
  2. Správa účtů internetových stránek.

[editovat] Další užití FTP

FTP je nejčastěji používáno lidmi, kteří chtějí mít přístup na systém souborů na jiném počítači. To je nejčastěji realizováno přes programy na používání FTP, u kterých si nemusíme pamatovat strukturu příkazů a pracují velice podobně jako běžný průzkumník (např. oblíbený Total Commander také podporuje FTP).

[editovat] Nevýhody

  1. Hesla a soubory jsou zasílány jako běžný text (nejsou šifrovaná).
  2. Je použito mnoho TCP/IP spojení (jedno pro příkazy a každé další pro upload/download souborů).
  3. Firewall může blokovat stahování, problémy mohou také nastat při stahování velkých souborů nebo při stahování trvající dlouhou dobu.
  4. Je možné zachytávat data třetím počítačem, proto se nedoporučuje používat FTP pro důležitá data.
  5. FTP má poměrně dlouhou dobu odezvy, proto není vhodné stahovat velké množství malých souborů.

[editovat] Bezpečnostní problémy

Při běžném připojování pomocí protokolu FTP jsou přihlašovací údaje (jméno a heslo) přenášeny v textové podobě a je technicky možné je odchytit. Následně mohou být data zcizena nebo upravena. Často se vyskytují zprávy o tom/, jak se hackeři nabourali do serverů a nezřídka jim k tomu stačil tak triviální úkon, jakým je zachycení nešifrovaného FTP hesla. Netřeba zdůrazňovat, že následky těchto útoků mohou mít katastrofální dopad. V dnešní době je dostupný tzv. FTPS, který je zpětně kompatibilní s běžným FTP.

[editovat] Některé příkazy

Příkazy lze rozdělit do tří skupin:

  • Access Control Commands (příkazy řízení přístupu)
  • Transfer Parameter Commands (příkazy nastavující parametry přenosu)
  • FTP Service Commands (obsluhující příkazy)
Access Control Commands
  • USER - zadání uživatelského jména
  • PASS - zadání uživatelského hesla
  • ACCT - zadání uživatelského účtu (téměř se nepoužívá)
  • CWD - změna aktuálního adresáře
  • CDUP - změna aktuálního adresáře na nadřazený adresář
  • QUIT - ukončení spojení
Transfer Parameter Commands
  • PORT - specifikuje počítač a port pro datové spojení. Klient pošle tento příkaz a bude na daném portu čekat na datové spojení.
  • PASV - žádá server o pasivní mód, tzn. že server bude poslouchat a klient bude iniciovat datové spojení.
  • TYPE - určuje typ reprezentace dat, např. text nebo binární
FTP Service Commands
  • RETR - slouží k přenosu souboru ze serveru
  • GET - přenos jednoho souboru ze serveru
  • MGET - přenos více souborů ze serveru
  • STOR - přenos souboru na server
  • PUT - přenos jednoho souboru na server
  • MPUT - přenos více souborů na server
  • RNFR, RNTO - přejmenování souboru
  • DELE - smazání souboru
  • MKD - vytvoření nového adresáře
  • RMD - smazání adresáře (adresář musí být prázdný)
  • ABOR - zrušení předchozího příkazu
  • PWD - zjištění aktuálního pracovního adresáře
  • LIST - získání seznamu souborů. K získání tohoto seznamu se musí otevřít datové spojení. Pokud parametr tohoto příkazu je adresář, získá se výpis tohoto adresáře, pokud je to soubor, získají se informace o tomto souboru a pokud příkaz nemá parametr, je vrácen výpis aktuálního adresáře. Výpis příkazu list však závisí na systému a je určen především pro člověka.
  • NLST - podobný příkazu LIST, jen s tím rozdílem, že seznam vrací na každém řádku jen jméno souboru (adresáře) a žádné další informace.
  • SYST - slouží k zjištění typu systému, na kterém běží FTP server.

[editovat] Aktivní a pasivní připojení

Připojení k FTP serveru je možné realizovat v aktivním nebo pasivním režimu. Pasivní režim je bezpečnější, ale ne vždy je technicky realizovatelný.

Aktivní režim

Na portu TCP/20 jsou přenášena data (data connection). V aktivním režimu navazuje připojení pro přenos dat server, klient naslouchá. Problém zpravidla nastává v případě, kdy se klient připojuje z privátní sítě a jeho IP adresa je překládána (NAT).

Pasivní režim

V pasivním režimu navazuje data connection klient, kterému při sestavování připojení poslal server svou IP adresu a TCP port, na kterém naslouchá.

FTP server, port forward (PF) a pasivní připojení

Pokud je připojení k FTP serveru realizováno prostřednictvím PF (nejčastěji se jedná o router s NAT a PF), tak router musí mít následující vlastnost - čte datovou část paketů FTP připojení, zjistí na jakém portu server naslouchá pro navázání data connection klientem a tento port začne forwardovat směrem k serveru. Po ukončení relace je ukončen i popsaný PF.

Routery mají zpravidla tuto vlastnost již vestavěnou. V případě systému Linux je nutné na routeru spustit příslušný modul - příkaz je 'modprobe nf_conntrack_ftp'

[editovat] FTP přes SSH

FTP přes SSH označuje tunelování FTP skrz spojení navázaného pomocí SSH protokolu. Někdy je též označováno jako Bezpečné FTP (Secure FTP), které by nemělo být zaměňováno za FTPS (tj. FTP s podporou SSL/TLS). Dalšími metodami bezpečného přenosu dat jsou SFTP a SCP, které využívají protokol SSH.

Protože protokol FTP používá dvě spojení, je velmi těžké zajistit, aby bylo tunelováno nejen řídící, ale i datové spojení. Pokud je FTP klient nastaven do pasivního režimu a instruován pro spojení se SOCKS serverem, které může SSH klient zajistit, může být dosaženo tunelování obou spojení.

Druhou možností je, aby SSH klient zasahoval do řídícího spojení podobně, jak je to nutné při průchodu FTP skrz NAT. Tuto funkci poskytuje 3. verze SSH Communications Security's software suite a program FONC distribuovaný pod GPL licencí.

[editovat] Externí odkazy

info o FTP a NAT v CZ