Dark Mode

Preskocit na obsah

File Transfer Protocol

Z Wikipedie, otevrene encyklopedie
(presmerovano z FTP)
Na tento clanek je presmerovano heslo FTP. Tento clanek pojednava o pocitacovem prenosovem protokolu. Mozna hledate: Foiled twisted pair, jeden ze zpusobu stineni kroucene dvojlinky.

FTP (anglicky File Transfer Protocol) je v informatice standardni komunikacni protokol pro prenos souboru mezi pocitaci pomoci pocitacove site, je to stavovy protokol. Soubory mohou byt stahovany ze serveru na pocitac uzivatele (download) nebo nahravany z pocitace uzivatele na server (upload), pokud dany uzivatel ma pro nahravani souboru dostatecna pristupova prava (ktera jsou zpravidla omezena jen na urcity adresar/adresare). Protokol FTP je postaven na architekture klient-server a vyuziva oddelena ridici a datova spojeni mezi klientem a serverem.[1] Uzivatele se mohou autentizovat, obvykle ve forme uzivatelskeho jmena a hesla, ale mohou se pripojit i anonymne, pokud je server nakonfigurovan tak, aby to umoznoval (coz se drive hodne vyuzivalo pro stahovani souboru z tzv. anonymnich FTP serveru).

FTP protokol (jako vsechny protokoly vznikle v 70. letech 20. stoleti) vsak veskera data, tedy i uzivatelske jmeno a heslo, prenasi v nezasifrovane podobe, coz v soucasnosti predstavuje vyznamne bezpecnostni riziko. Proto byl a je postupne stale vice nahrazovan sifrovanymi zpusoby prenosu, jako je protokol SSH (ktery v sobe mimo jine zahrnuje SFTP, prip. SCP; ev. lze FTP skrze SSH tunelovat). Pokud uzivatel pouziva webovy prohlizec, pocatkem roku 2023 cca 82 procent (a tento podil stale vzrusta) WWW serveru misto nesifrovaneho HTTP protokolu pouziva jeho sifrovanou verzi (HTTPS, tedy HTTP over TLS).[2]

Prvni klientske aplikace FTP byly programy pro prikazovy radek vyvinute jeste pred tim, nez operacni systemy mely graficke uzivatelske rozhrani, a dodnes se dodavaji s vetsinou operacnich systemu.[3][4] Od te doby bylo vyvinuto mnoho specializovanych FTP klientu (pouzivajicich jak textove, tak graficke uzivatelske rozhrani), FTP bylo rovnez zacleneno do mnoha dalsich aplikaci, jako jsou napr. editory HTML nebo spravci souboru (napr. Total Commander).

Po vzniku sluzby WWW a jejim naslednem masovem rozsireni mezi bezne uzivatele klient FTP byval bezne integrovan take do webovych prohlizecu, kde pro FTP servery se pouzivalo URL schema ,,ftp://", (misto ,,http://", resp. ,,https://" pro HTML stranky), napr. na adrese ftp://ftp.hp.com bylo mozno stahovat ovladace tiskaren teto firmy. V prubehu roku 2021 ale dva vyznamni vyvojari webovych prohlizecu tuto moznost odstranili. Poprve byla podpora protokolu FTP oznacena jako zastarala (depreciated) a vypnuta v prohlizeci Google Chrome verze 88 v lednu 2021,[5] v dubnu 2021 nasledoval Firefox verze 88.0 (stale jeste ale bylo mozne nastavit ve skryte konfiguraci).[6] V cervenci 2021 Firefox verze 90 programovy kod pro FTP zcela odstranil,[7] a v rijnu 2021 ho nasledoval Google, ktery FTP zcela odstranil v prohlizeci Google Chrome verze 95.[8]

Puvodni specifikace pro File Transfer Protocol byla sepsana Abhayem Bhushanem a publikovana jako RFC 114 dne 16. dubna 1971. Na pocatku 70. let byla sada protokolu TCP/IP teprve ve vyvoji, proto FTP v puvodni verzi vyuzival jeho predchudce NCP.[3] Tato specifikace byla nahrazena novou, jiz vyuzivajici TCP/IP v RFC 765, (cerven 1980) a RFC 959. Pozdejsi RFC doplnuji a meni nektere dulezite casti specifikace. FTP protokol je ve srovnani s jinymi protokoly ze 70. let i z pozdejsi doby neobvykly tim, ze pouziva dva porty (port 21 pro rizeni komunikace a port 20 pro vlastni datove prenosy). To mimo jine prinaselo znacne problemy v pripade firewallu. Proto RFC 1579 (unor 1994) umoznuje tzv. pasivni rezim, ktery pouziva pouze jeden port. RFC 2228 (cerven 1997) navrhlo nektera bezpecnostni rozsireni a RFC 2428 (zari 1998) pridalo podporu IPv6 a definovalo novy typ pasivniho rezimu.[9]

Charakteristika

[editovat | editovat zdroj]

FTP je jeden z nejstarsich protokolu, vyuziva porty TCP/21 a TCP/20. Port 21 slouzi k rizeni a jsou jim take prenaseny prikazy FTP. Port 20 slouzi k vlastnimu prenosu dat, ktery je 8bitovy. Prenos muze byt binarni nebo ascii (textovy). Pri textovem prenosu dochazi ke konverzi koncu radku - CR/LF (DOS, Microsoft Windows) nebo jen LF (unixove systemy), pokud jsou koncove systemy rozdilne. Pri binarnim prenosu neni do dat nijak zasahovano.

Protokol je interaktivni a umoznuje rizeni pristupu (prihlasovani login/heslo), specifikaci formatu prenaseneho souboru (znakove - binarne), vypis vzdaleneho adresare atd. V soucasne dobe uz neni povazovan za bezpecny a z tohoto duvodu pro nej byla definovana nektera rozsireni ().

V protokolu je pouzit model klient-server. FTP server poskytuje data pro ostatni pocitace. Klient se k serveru pripoji a muze provadet ruzne operace (vypis adresare, zmena adresare, prenos dat atd.). Operace jsou rizeny sadou prikazu, ktere jsou definovany v ramci FTP protokolu, proto kdokoliv muze vytvorit klienta pro jakekoliv prostredi nebo operacni system. Existuje mnoho programu pro FTP servery i klienty a mnoho je jich volne dostupnych.

FTP bezne pracuje na dvou portech, 21 a 20 a bezi vyhradne pres TCP (Transmission control protocol). FTP server nasloucha na portu 21 na prichozi spojeni z FTP klienta. Na tomto portu bezi prikazy, ktere zachytava server. Na portu 20 se prenasi pouze data, nikoliv prikazy. Jakmile se zacnou stahovat data, na prikazovem portu se nic neprenasi. Pri stahovani velkych souboru pres pripojeni s firewallem muze tento kvuli dlouhodobe necinnosti zablokovat komunikaci na portu 21.

Jak se pripojit na FTP server

[editovat | editovat zdroj]

Prvni co musite udelat je stahnout si FTP klienta. Mnoho operacnich systemu ma jiz integrovany nejaky tento program. Pro spusteni FTP klienta ve Windows otevrete prikazovou radku (kliknete na tlacitko Start, potom na Spustit, do okenka napiste CMD a potvrdte stiskem klavesy Enter). Napiste FTP a odeslete. Nyni se muzete prikazem open nazev serveru pripojit k ftp server. napr.:

open ftp.freebsd.org

Nyni jste pripojeni na server ftp.freebsd.org. Tento server podporuje anonymni pripojeni, takze jmeno uzivatele muze byt treba ,,ftp" nebo ,,anonymous" a heslo emailova adresa (nebo muze byt prazdne, nekdy je vyzadovan alespon znak ,,@"). Jestlize server nepodporuje anonymni prihlasovani, musite jako jmeno a heslo zadat udaje ziskane od administratora serveru nebo poverene osoby. Napr.:

user ftp

dalsi informace muzete zobrazit napsanim prikazu ,,help". Naprosta vetsina anonymnich serveru umoznuje pouze cteni dat, takze umozni jen stazeni souboru do vaseho pocitace, u nekterych funguje i nahravani dat na server.

Nekdy je potreba okamzite odkazat na ftp server, ktery je zabezpeceny heslem a neposilat prihlasovaci udaje zvlast. (Napriklad u weboveho prohlizece) Adresa pak ma nasledujici tvar:

ftp://:@

Nejcastejsi uziti FTP

[editovat | editovat zdroj]

Nejcastejsi uziti ftp prenosu jsou:

  1. Sdileni dat (casto hudba, videa, vlastni tvorba...).
  2. Sprava uctu internetovych stranek: jiz temer vzdy nahrazeno bezpecnejsimi, sifrovanymi zpusoby prenosu.

Dalsi uziti FTP

[editovat | editovat zdroj]

FTP je nejcasteji pouzivano lidmi, kteri chteji mit pristup na system souboru na jinem pocitaci. To je nejcasteji realizovano pres programy na pouzivani FTP, u kterych si nemusime pamatovat strukturu prikazu a pracuji velice podobne jako bezny pruzkumnik (napr. oblibeny Total Commander take podporuje FTP).

Vyhody a nevyhody

[editovat | editovat zdroj]
  1. hesla a soubory jsou ve standardnim protokolu zasilana jako bezny text (nejsou sifrovana)
    • snizuje bezpecnost (ohrozuje jmeno, heslo, ale i prenasena data)
    • existuji rozsireni FTP protokolu, ktera tento nedostatek odstranuji
  2. pouzivaji se 2 TCP spojeni (prvni TCP spojeni je ridici, druhe datove pro vlastni prenos dat)
    • je-li pouzit firewall, protokol vyzaduje jeho specialni podporu (aktivni FTP prenos)
    • podpora aktivniho prenosu nefunguje u sifrovaneho ridiciho spojeni
    • pasivni prenos tento nedostatek odstranuje
  3. FTP server ma delsi odezvy
    • nemoznost sloucit prenos vice (malych) souboru do jednoho zvysuje casovou rezii i zatez serveru
    • serverova cast je jednodussi, nez bezny HTTP server (neplati pro odlehcene HTTP servery)
    • na rozdil od HTTP ma protokol sirsi moznosti (nastaveni prav, mazani, upload, rekurzivita, FXP...)
  4. v nekterych sitich je povolen pouze protokol HTTP
    • FTP je v soucasne dobe mene pouzivano

Bezpecnostni problemy

[editovat | editovat zdroj]

Pri beznem pripojovani pomoci protokolu FTP jsou prihlasovaci udaje (jmeno a heslo) prenaseny v textove podobe a je technicky mozne je odchytit. Nasledne mohou byt data zcizena nebo upravena. Casto se vyskytuji zpravy o tom, jak se hackeri nabourali do serveru a nezridka jim k tomu stacil tak trivialni ukon, jakym je zachyceni nesifrovaneho FTP hesla. Netreba zduraznovat, ze nasledky techto utoku mohou mit katastrofalni dopad. V dnesni dobe je dostupny tzv. FTPS, ktery je zpetne kompatibilni s beznym FTP.

Nektere prikazy

[editovat | editovat zdroj]

Prikazy ridiciho jazyka FTP lze rozdelit do tri skupin:

  • Access Control Commands (prikazy rizeni pristupu)
  • Transfer Parameter Commands (prikazy nastavujici parametry prenosu)
  • FTP Service Commands (obsluhujici prikazy)
Access Control Commands
  • USER - zadani uzivatelskeho jmena
  • PASS - zadani uzivatelskeho hesla
  • ACCT - zadani uzivatelskeho uctu (temer se nepouziva)
  • CWD - zmena aktualniho adresare
  • CDUP - zmena aktualniho adresare na nadrazeny adresar
  • QUIT - ukonceni spojeni
Transfer Parameter Commands
  • PORT - specifikuje pocitac a port pro datove spojeni. Klient posle tento prikaz a bude na danem portu cekat na datove spojeni.
  • PASV - zada server o pasivni mod, tzn. ze server bude poslouchat a klient bude iniciovat datove spojeni.
  • TYPE - urcuje typ reprezentace dat, napr. text nebo binarni
FTP Service Commands
  • RETR - slouzi k prenosu souboru ze serveru
    • GET - prenos jednoho souboru ze serveru (prikaz klientskeho software ftp)
    • MGET - prenos vice souboru ze serveru (prikaz klientskeho software ftp)
  • STOR - prenos souboru na server
    • PUT - prenos jednoho souboru na server (prikaz klientskeho software ftp)
    • MPUT - prenos vice souboru na server (prikaz klientskeho software ftp)
  • RNFR, RNTO - prejmenovani souboru
  • DELE - smazani souboru
  • MKD - vytvoreni noveho adresare
  • RMD - smazani adresare (adresar musi byt prazdny)
  • ABOR - zruseni predchoziho prikazu
  • PWD - zjisteni aktualniho pracovniho adresare
  • LIST - ziskani seznamu souboru. K ziskani tohoto seznamu se musi otevrit datove spojeni. Pokud parametr tohoto prikazu je adresar, ziska se vypis tohoto adresare, pokud je to soubor, ziskaji se informace o tomto souboru a pokud prikaz nema parametr, je vracen vypis aktualniho adresare. Vypis prikazu list vsak zavisi na systemu a je urcen predevsim pro cloveka.
  • NLST - podobny prikazu LIST, jen s tim rozdilem, ze seznam vraci na kazdem radku jen jmeno souboru (adresare) a zadne dalsi informace.
  • SYST - slouzi k zjisteni typu systemu, na kterem bezi FTP server.

Prikazy ridiciho jazyka se prenaseji po ridicim spojeni od FTP klienta na server.

Krome toho existuje i jazyk uzivatelsky, jehoz prikazy se od vyse uvedenych lisi. Mezi bezne prikazy uzivatelskeho jazyka patri GET a PUT pro prenos souboru, pripadne MGET a MPUT pro totez s vice soubory najednou atd. Prikazy uzivatelskeho jazyka nejsou standardizovany a dnes se jiz pouzivaji malo (jen v radkovych FTP klientech).

Aktivni a pasivni pripojeni

[editovat | editovat zdroj]

Pripojeni k FTP serveru je mozne realizovat v aktivnim nebo pasivnim rezimu. Pasivni rezim je bezpecnejsi, ale ne vzdy je technicky realizovatelny.

Aktivni rezim

Na portu TCP/20 jsou prenasena data (data connection). V aktivnim rezimu navazuje pripojeni pro prenos dat server, klient nasloucha. Problem zpravidla nastava v pripade, kdy se klient pripojuje z privatni site a jeho IP adresa je prekladana (NAT).

Pasivni rezim

V pasivnim rezimu navazuje data connection klient, kteremu pri sestavovani pripojeni poslal server svou IP adresu a TCP port, na kterem nasloucha.

FTP server, port forward (PF) a pasivni pripojeni

Pokud je pripojeni k FTP serveru realizovano prostrednictvim PF (nejcasteji se jedna o router s NAT a PF), tak router musi mit nasledujici vlastnost - cte datovou cast paketu FTP pripojeni, zjisti na jakem portu server nasloucha pro navazani data connection klientem a tento port zacne forwardovat smerem k serveru. Po ukonceni relace je ukoncen i popsany PF.

Routery maji zpravidla tuto vlastnost jiz vestavenou. V pripade systemu Linux je nutne na routeru spustit prislusny modul - prikaz je 'modprobe nf_conntrack_ftp'

FTP pres SSH

[editovat | editovat zdroj]

FTP pres SSH oznacuje tunelovani FTP skrz spojeni navazaneho pomoci SSH protokolu. Nekdy je tez oznacovano jako Bezpecne FTP (Secure FTP), ktere by nemelo byt zamenovano za FTPS (tj. FTP s podporou SSL/TLS). Dalsimi metodami bezpecneho prenosu dat jsou SFTP a SCP, ktere vyuzivaji protokol SSH.

Protoze protokol FTP pouziva dve spojeni, je velmi tezke zajistit, aby bylo tunelovano nejen ridici, ale i datove spojeni. Pokud je FTP klient nastaven do pasivniho rezimu a instruovan pro spojeni se SOCKS serverem, ktere muze SSH klient zajistit, muze byt dosazeno tunelovani obou spojeni.

Druhou moznosti je, aby SSH klient zasahoval do ridiciho spojeni podobne, jak je to nutne pri pruchodu FTP skrz NAT. Tuto funkci poskytuje 3. verze SSH Communications Security's software suite a program FONC distribuovany pod GPL licenci.

Hodnoty IP adres a portu v prikazu PORT a PASV vraci dalsi moznou vyzvu pro NAT zarizeni pri manipulaci s FTP. NAT zarizeni musi zmenit tyto hodnoty tak, ze budou obsahovat IP adresu NATovaneho klienta a port, ktery si NAT zarizeni vybralo pro datove pripojeni. Tato nova IP adresa a port se bude pravdepodobne lisit delkou, v jejich desetinne reprezentaci od puvodni IP adresy a portu. To znamena, ze zmena hodnoty na kontrolu pripojeni NAT zarizenim musi byt provedena opatrne, zmena TCP sekvence a potvrzovaciho pole pro vsechny nasledne pakety.

Na priklad: klient s IP 192.168.0.1, zacina v aktivnim rezimu prenos na portu 1025, posle retezec ,,PORT 192,168,0,1,4,1". NAT zarizeni zvoli pro datove pripojeni klienta IP adresu 192.168.15.5 a se zvolenym portem 2000 bude muset nahradit vyse zmineny retezec retezcem ,,PORT 192,168,15,5,7,208".

Novy retezec je 23 znaku dlouhy, ale puvodni retezec ma pouze 20 znaku. Polozku s potvrzenim prijmu od serveru bude nutne snizit na NAT zarizeni o 3 bity, aby klient spravne pochopil ze PORT prikaz dorazil na server. Pokud NAT zarizeni neni schopne opravovat sekvence a potvrzovaci pole, nebude mozne pouzit NAT pro aktivnim rezimu FTP. Pasivni rezim FTP bude v tomto pripade pracovat, protoze informace o IP adrese a portu pro datove spojeni jsou odeslana serverem, ktery nemusi byt NATovan. Pokud se NAT provadi na strane serveru, nastane presny opak. Aktivni rezim bude fungovat, ale pasivni rezim fungovat nebude.

Je treba poznamenat, ze mnoho NAT zarizeni provadi inspekci ridiciho spojeni a upravuje PORT prikaz, aniz by o to byly explicitne uzivatelem pozadany, coz muze vest k nekolika problemum. Neexistuje zadna zaruka, ze pouzity protokol je opravdu FTP, nebo muze byt pouzito nektere rozsireni, kteremu NAT zarizeni nerozumi. Jednim z prikladu by bylo ridici spojeni zabezpecene protokolem SSL - NAT zarizeni nebude schopno dekodovat komunikaci a menit adresy a porty.

Spravnym resenim je sdelit uzivatelum, jake IP adresy a porty jsou pouzity pro aktivni rezim. Dale je nutne, aby NAT zarizeni forwardovaly vybrany rozsah portu k pocitacum klientu.

Souvisejici clanky

[editovat | editovat zdroj]

V tomto clanku byl pouzit preklad textu z clanku File Transfer Protocol na anglicke Wikipedii.

[9]\n[1]\n[3]\n[4]\n[5]\n[6]\n[7]\n[8]\n[2]\n"}}">
  1. | FOROUZAN, B.A. TCP/IP: Protocol Suite. 1st. vyd. New Delhi, India: Tata McGraw-Hill Publishing Company Limited, 2000. Je zde pouzita sablona {{Cite book}} oznacena jako k ,,pouze docasnemu pouziti".
  2. | Usage statistics of Default protocol https for websites [online]. w3techs.com [cit. 2023-03-08]. Dostupne online.
  3. 1 2 KOZIEROK, Charles M. The TCP/IP Guide v3.0 [online]. Tcpipguide.com, 2005. Dostupne online. Je zde pouzita sablona {{Cite web}} oznacena jako k ,,pouze docasnemu pouziti".
  4. | DEAN, Tamara. Network+ Guide to Networks. [s.l.]: Delmar, 2010. S. 168-171. Je zde pouzita sablona {{Cite book}} oznacena jako k ,,pouze docasnemu pouziti".
  5. | Deprecations and removals in Chrome 87 [online]. [cit. 2020-11-18]. Dostupne online. Je zde pouzita sablona {{Cite web}} oznacena jako k ,,pouze docasnemu pouziti".
  6. | Firefox 88.0, See All New Features, Updates and Fixes [online]. [cit. 2021-04-23]. Dostupne online. Je zde pouzita sablona {{Cite web}} oznacena jako k ,,pouze docasnemu pouziti".
  7. | VONAU, Manuel. Firefox follows in Chrome's footsteps and drops FTP support (APK Download) [online]. 2021-07-07 [cit. 2021-07-12]. Dostupne online. (anglicky) Je zde pouzita sablona {{Cite web}} oznacena jako k ,,pouze docasnemu pouziti".
  8. | Remove FTP support - Chrome Platform Status [online]. [cit. 2021-09-02]. Dostupne online. Je zde pouzita sablona {{Cite web}} oznacena jako k ,,pouze docasnemu pouziti".
  9. | Clark, M.P. (2003). Data Networks IP and the Internet. 1st ed. West Sussex, England: John Wiley & Sons Ltd.

Externi odkazy

[editovat | editovat zdroj]