Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
Prijevodi ove stranice:

File Transfer Protocol (FTP)

Sažetak

Komunikacijske mreže dijele se na više slojeva. Na svakom sloju podacima upravljaju i prenose ih različiti protokoli. File Transfer Protocol je protokol najvišeg, aplikacijskog sloja, čija je zadaća prijenos datoteka s jednog računala na drugo. Pri tome, protokol FTP može koristiti različite načine rada, a može prenositi i različite tipove datoteka. S obzirom da FTP nema implementirane sigurnosne mehanizme, to ga čini ranjivim na razne mrežne napade. Zbog toga su razvijene sigurnosne nadogradnje izvornog protokola koje ga čine sigurnijim za mrežnu komunikaciju.

Ključne riječi: File Transfer Protocol; prijenos datoteka; klijent-poslužitelj arhitektura; simplex protokol; mrežni napadi; sigurnost;

Uvod

File Transfer Protocol (FTP) je komunikacijski protokol aplikacijskog sloja čija je osnovna namjena prijenos datoteka između poslužitelja i klijenta. Temelji se na arhitekturi klijent-poslužitelj, te za prijenos podataka uspostavlja dvije konekcije – jednu za kontrolu i jednu za prijenos podataka.

FTP je nastao 1971. godine, a originalnu specifikaciju napisao Indijski informatičar Abhay Bhushan. Ta specifikacija poznata je kao RFC 114 i izdana je 16. travnja 1971. Prve klijentske aplikacije za FTP bile su programi pokretani iz komandne linije zbog toga što tada operacijski sustavi još nisu imali grafičko sučelje. Međutim, od tada se FTP razvio u protokol koji se koristi na različitim tipovima uređaja – osobnim računalima, poslužiteljima, mobilnim uređajima i raznoraznom drugom hardveru itd.

Od siječnja 2021. godine Google Chrome 88 i Firefox 88.0 prestali su podržavati FTP, a od srpnja 2021. godine Firefox 90 je u potpunosti ukinuo podršku za FTP. U listopadu 2021 Google Chrome 95 učinio je istu stvar.

Arhitektura i komunikacija

FTP je protokol aplikacijskog sloja koji se na transportnom sloju oslanja na protokol TCP, a na mrežnom sloju na protokol IP. Protokol FTP podržava dva načina rada – aktivni i pasivni. Komunikaciju uvijek započinje klijent sa slučajno odabranih mrežnih vrata (engl. port) na svojoj strani, dok se na poslužitelju koristi port 21. Ovaj port koristi se za kontrolu komunikacije i prijenosa podataka. Nakon što poslužitelj prihvati zahtjev za komunikacijom, klijent otvara port za primanje podataka na svojoj strani. Poslužitelj tada s porta 20 počinje slati tražene podatke klijentu. Dakle, na poslužiteljskoj strani port 20 koristi se za kontrolne informacije i uspostavu sjednice, a port 21 za slanje podataka. Na klijentskoj strani se u oba slučaja koristi slučajno odabrani port.

U aktivnom načinu rada protokol se ponaša kako je prethodno opisano. Međutim, u pasivnom načinu rada protokol FTP ponaša se malo drugačije. Za početak, pasivni način koristi se u situacijama kada se klijent nalazi iza vatrozida, te zbog toga ne može uspostavljati dolazeće TCP konekcije. Poslužitelj saznaje da se klijent nalazi iza vatrozida tako što ga klijent preko kontrolne veze obavještava o tome porukom PASV. U slučaju primitka ove poruke, poslužitelj šalje klijentu IP adresu i port koji klijent onda koristi za uspostavljanje podatkovne veze. Razlika između aktivnog i pasivnog načina rada protokola FTP ilustrirana je na slici 1. FTP koristi dva porta zato što je originalno razvijen za rad s protokolom NCP (Network Control Protocol) koji je simplex protokol. To znači da je komunikacija jednosmjerna, te su za dvosmjernu komunikaciju tada potrebne dvije veze, a time i dva porta. Pojavom protokola TCP i UDP omogućeno je korištenje istog porta za dvosmjernu komunikaciju, međutim FTP nikad nije prilagođen za takav način rada. FTP izvorno radi s protokolom IPv4, ali je pojavom IPv6 prilagođen za rad s novom verzijom IP protokola. Najviše promjena tada je doživio pasivni način rada protokola FTP, te se od tada naziva proširenim pasivnim načinom rada.

Slično kao protokol HTTP, FTP koristi statusne kodove kao odgovore na zahtjeve klijenata. Prva znamenka definira ishod zahtjeva koji može biti uspjeh, pogreška ili nepotpuni odgovor, te greška. Druga znamenka definira vrstu greške, a treća daje dodatne informacije o grešci ovisno o tome kojoj kategoriji pripada (kategoriju definira druga znamenka). Detaljnije informacije o statusnim kodovima:

FTP statusni kodovi – značenje prve znamenke

  • 1xx ili 3xx - pogreška (engl. error) ili nepotpuni odgovor
  • 2xx - uspjeh
  • 4xx ili 5xx - greška (engl. failure)

FTP statusni kodovi – značenje druge znamenke u slučaju greške:

  • x0x - sintaksna greška
  • x1x - odgovor na zahtjev za informacijom
  • x2x - odgovor vezan za kontrolne i podatkovne veze
  • x3x - autentifikacija
  • x4x - nedefinirana greška
  • x5x - greška u datotečnom sustavu

Obzirom da je FTP izvorno namijenjen za korištenje iz komandne linije, za korištenje funkcionalnosti protokola stvorene su različite naredbe. Neke od češćih naredbi su:

  • ABOR - prekid prijenosa
  • AUTH - autentifikacijski/sigurnosni mehanizam
  • CSID - identifikacija klijenta/poslužitelja
  • DELE - brisanje datoteke
  • EPSV - prošireni pasivni način rada
  • MODE - postavi način prijenosa podataka
  • NOOP - nema operacije (održavanje sjednice)
  • PASS - korisnička lozinka
  • PASV - pasivni način rada
  • PORT - odredi port
  • QUIT - raskid veze
  • REIN - ponovna inicijalizacija veze
  • REST - ponovi prijenos od određenog trenutka
  • STAT - informacija u stanju poslužitelja i veze
  • TYPE - postavi vrstu podataka za prijenos
  • USER - korisničko ime

Puna lista naredbi nalazi se u popisu literature na kraju dokumenta.

Tipovi podataka i načini prijenosa

Protokolom FTP mogu se prenositi različiti tipovi podataka, a definirana su četiri tipa. Prvi tip je ASCII (TYPE A) koji se koristi za prijenos običnog teksta. Protokol FTP, u slučaju potrebe, može pretvoriti podatke u 8-bitni ASCII na strani pošiljatelja, te opet pretvoriti tekst u izvorni format na strani primatelja. Radi ovoga, ASCII tip se koristi samo za obični tekst. Drugi tip (TYPE I) služi za prijenos slika i još se naziva binarnim načinom prijenosa. Razlog je taj što se datoteka šalje bajt po bajt, a primatelj prima i pohranjuje bajt stream. Treći tip (TYPE E) zove se EBCDIC (Extended Binary Coded Decimal Interchange Code) i koristi se za prijenos običnog teksta između računala koja koriste EBCDIC način kodiranja. Četvrti tip (TYPE L n) koristi se za prijenos podataka između uređaja koji ne koriste 8-bitne riječi. Na primjer TYPE L 9 koristi 9-bitne riječi, TYPE L 36 koristi 36-bitne riječi itd. Postojao je još jedan tip, TYPE U, za prijenos unicode tekstualnih datoteka kodiranih s UTF-8. Međutim, ovaj tip nikad nije zaživio.

Za tekstualne datoteke (odnosno TYPE A i TYPE E) definirana su tri kontrolne opcije koje određuju kako će datoteka biti printana. Prva opcija je Non-print koja ne nosi nikakve kontrolne podatke za printer. Druga opcija je Telnet koja nosi kontrolne znakove poput CR, LF itd. I zadnja opcija je ASA koja nosi ASA kontrolne znakove.

Za prijenos podataka definirana su tri načina: stream, block i compressed mode. U stream načinu rada podaci se šalju kao kontinuirana struja podataka. Na ovaj način FTP ne mora raditi nikakvo procesiranje, nego procesiranje preuzima protokol TCP. U ovom načinu rada datoteka mora imati oznaku kraja datoteke, osim ako su podaci razdijeljeni u zapise (engl. records). Block način rada namijenjen je za prijenos datoteka koje su u obliku zapisa. FTP datoteku rastavlja na blokove i predaje ih protokolu TCP. Compressed način rada proširuje block način tako što dodaje kompresiju. Pri tome se koristi RLE (Run-length encoding).

Inačice protokola FTP

Ukupno postoje četiri inačice protokola FTP. Neke su samo jednostavnije inačice izvornog protokola, a druge su sigurnosne nadogradnje.

TFTP

Trivijalni FTP (engl. Trivial FTP) je samo jednostavni FTP koji klijentu omogućuje dohvat ili objavu datoteke na udaljeni poslužitelj. Ova inačica protokola je vrlo jednostavna za implementaciju, te ne posjeduje sigurnosne mehanizme i napredne značajke koje nude robusni protokoli za prijenos datoteka poput FTP-a.

SFTP

Jednostavni FTP (engl. Simple FTP) je protokol za razmjenu podataka čija je složenost veća od TFTP-a, a manja od FTP-a. Ova inačica, isto kao i TFTP, nema implementirane sigurnosne mehanizme. SFTP nikad nije u potpunosti prihvaćen u praksi, ali ima status povijesnog protokola koji mu je dodijelio IETF (Internet Engineering Task Force). SFTP za rad koristi port 115, definira 11 naredbi za komunikaciju i može prenositi tri vrste podataka: binarne, ASCII i kontinuirane. Isto kao FTP, podržava prijavu pomoću korisničkog imena i lozinke. Uz to, direktoriji i upravljanje datotekama organizirani su hijerarhijski.

SSH FTP

FTP over SSH tunelira FTP sjednicu preko Secure Shell konekcije. Međutim, zbog činjenice da FTP koristi više TCP konekcije istovremeno, tuneliranje preko SSH je otežano. Protokol FTP prvo uspostavlja kontrolnu vezu koja se onda štiti pomoću SSH, ali podaci se šalju preko druge veze koja nije zaštićena. Zbog toga, SSH mora poznavati način na koji radi FTP kako bi štitio sve FTP sjednice između klijenta i poslužitelja – kontrolnu i podatkovnu vezu.

FTPS

FTPS ili FTP Secured je proširenje osnovnog protokola FTP koji omogućava šifriranje sjednica između klijenata i poslužitelja. Nakon uspostave FTP sjednice, za zaštitu se koristi SSL/TLS. Ovaj pristup još se naziva implicitnim, te obično za komunikaciju koristi port 990. Postoji i eksplicitni FTPS koji se još naziva FTPES. U ovom slučaju za komunikaciju se koristi port 21, ali se komunikacija šifrira pomoću SSL/TLS-a. Eksplicitni FTPS najčešće se koristi na webu i uslugama za dijeljenje datoteka.

Sigurnost i ranjivosti

FTP u svom izvornom obliku nije dizajniran kao sigurni protokol što je onda dovelo do toga da ima brojne ranjivosti. Primjeri ranjivosti protokola FTP su: brute-force napad, FTP bounce napad, packet capture, port stealing, spoofing napadi, username enumeration, DoS ili DDos napadi. Još jedan problem FTP-a koji ga čini ranjivim je taj što FTP promet nije šifriran. To znači da se podaci prenose u obliku čistog teksta što ne čini vidljivim samo podatke koji se prenose, nego i korisnička imena, lozinke i naredbe protokola. Međutim, ovaj problem nije jedinstven samo za FTP, nego ga imaju i drugi internetski protokoli razvijeni prije pojave TLS i SSL-a. Primjer su protokoli SMTP, Telnet, POP i IMAP. Moguća rješenja za ove probleme su korištenje sigurne inačice protokola FTP, korištenje protokola u kombinaciji s nekim sigurnim protokolom, tuneliranje pomoću SSH ili korištenje VPN-a.

Protokol FTP za korištenje zahtjeva prijavu pomoću korisničkog imena i lozinke. Za prijenos ovih podataka koriste se dvije naredbe prilikom uspostave sjednice između klijenta i poslužitelja, a to su USER naredba/poruka koja sadrži korisničko ime i PASS naredba koja sadrži lozinku. Međutim, kako je ranije spomenuto, svi se podaci prenose u obliku čistog teksta, pa tako i ovi što ih onda čini ranjivim u slučaju da netko snima mrežni promet. Neki poslužitelji dozvoljavaju FTP komunikaciju bez potrebe za prijavom, ali korisnik onda može imati ograničeni pristup poslužitelju. Ovakav način rada još se naziva anonimnim i koristi se za pristup sadržaju namijenjenom za neograničeno dijeljenje.

Usporedba FTP i HTTP

Glavna razlika između protokola FTP i HTTP je ta što FTP održava stanje sjednice, odnosno on je stateful protokol. S druge strane, HTTP protokol ne održava stanje sjednice što ga čini stateless protokolom. FTP za komunikaciju koristi dvije veze za kontrolu i prijenos podataka, dok HTTP multipleksira jednu vezu koja istovremeno služi za kontrolu i prijenos podataka. Kod FTP-a smjer veze može biti od klijenta prema poslužitelju ako se radi o pasivnom načinu rada ili obrnuto od poslužitelja prema klijentu ako se radi o aktivnom načinu rada. Veza kod HTTP-a uvijek je klijenta prema poslužitelju. Također, HTTP lakše funkcionira s NAT uređajima i vatrozidima zbog postojanja samo jedne veze.

Uspostava kontrolne veze kod FTP-a spora je zbog kašnjenja prilikom slanja naredbi i čekanja na odgovor druge strane. Zbog toga kontrolna veza ostaje otvorena kod prijenosa više datoteka. Kod HTTP-a veza se može raskinuti nakon slanja i ponovno uspostavit prilikom novog slanja zbog toga što je ostvarivanje veze vrlo brzo. Međutim, danas HTTP ima mogućnost korištenja iste TCP veze za prijenos više zahtjeva. Prilikom slanja podataka, kontrolna veza protokola FTP miruje. Ako prijenos podataka traje jako dugo, NAT ili vatrozid mogu zaključiti da je kontrolna veza mrtva, te će ju prestati pratiti što posljedično dovodi do raskida kontrolne veze i prekida prijenosa podataka. S druge strane, HTTP veze miruju samo kada nema zahtjeva i za njih se očekuje prekid nakon što istekne kontrolno vrijeme.

Brute-force napad

Brute-force napad ili napad grubom silom je napad kod kojeg napadač pokušava pogoditi lozinku kako bi provalio u neki sustav. Napad se odvija tako što napadač koristi veliki skup različitih lozinki koje jednu za drugom predaje sustavu i pokušava se u njega prijaviti s nadom da će jedna od lozinki biti ona prava. Kod FTP-a ovakav napad je moguć jer neki FTP poslužitelji zahtijevaju korisničku autentifikaciju prije uspostave podatkovne sjednice.

FTP bounce attack

Ova vrsta napada na FTP protokol posljedica je nedostatka u implementaciji naredbe PORT. Zbog ovog propusta napadač može zatražiti indirektni pristup portovima poslužitelja, pri čemu žrtvino računalo koristi kao posrednika za slanje zahtjeva. Na ovaj način napadač može vršiti skeniranje portova na gotovo neprimjetan način. Međutim, sve novije inačice protokola FTP odbijaju PORT naredbe kojima se pokušava spojiti na bilo koji poslužitelj osim onog izvornog.

Snimanje paketa

Snimanje paketa (engl. packet capture) je napad koji uključuje snimanje mrežnog prometa i promatranje i analizu sadržaja paketa koji se razmjenjuju između različitih računala. Kod FTP protokola snimanje paketa je moguće zbog toga što izvorna verzija protokola FTP nema nikakvu zaštitu, odnosno podaci se prenose u obliku čistog teksta bez šifriranja. Radi ovog problema razvijene su nadogradnje protokola FTP poput protokola FTPS i FTP over SSH.

Spoofing napad

Spoofing napad je vrsta napada kod kojeg napadač lažira mrežni promet i pokušava se predstaviti kao neko legitimno računalo. To se postiže tako što napadač lažira svoju IP adresu i šalje pakete žrtvi koja onda misli kako ti paketi dolaze od nekog računala od kojeg očekuje primiti podatke. Osim nedostatka sigurnosti kod FTP protokola ovaj napad je moguć i zbog toga što FTP u pozadini koristi TCP/IP koji je ranjiv upravo na ovaj napad. Još jedan protokol nižeg sloja komunikacije koji je ranjiv na ovaj napad je ARP što FTP dodatno čini ranjivim na ovaj napad.

DoS i DDos napad

DoS (Denial of Service) i DDoS (Distributed Denial of Service) su napadi uskraćivanja usluge. Cilj ovog napada je učiniti neko računalo, poslužitelj ili uslugu u mreži nedostupnim za korištenje. Napad se izvodi tako što napadač zagušuje poslužitelja slanjem velikog broja zahtjeva čime želi preopteretiti sustav. Kod DoS napada samo jedno računalo šalje zahtjeve, dok kod DDoS napada zahtjeve šalje veći broj računala. FTP je na ovaj napad ranjiv zbog toga što ne posjeduje sigurnosne mehanizme, ali i zato što se pri radu oslanja na TCP, a on je ranjiv na ovu vrstu napada. Također, na nižim slojevima koristi se protokol ARP koji je isto ranjiv na DoS napad.

Zaključak

FTP je protokol aplikacijskog sloja čija je zadaća prijenos datoteka između poslužitelja i klijenta. Za komunikaciju se uspostavljaju kontrolna veza i veza za prijenos podataka, tj. dvije sjednice. Na poslužiteljskoj strani koriste se dobro poznati portovi 20 i 21, a na klijentskoj strani koriste se slučajno odabrani portovi. FTP podržava aktivni i pasivni način rada, pri čemu se pasivni koristi kada je klijent iza vatrozida ili NAT-a. Podaci se prenose na tri načina – u obliku struje ili blokova podataka ili komprimirani. FTP nema nikakve sigurnosne mehanizme što znači da se podaci prenose u obliku čistog teksta. To ga čini ranjivim na brojne mrežne napade. Radi povećanja sigurnosti, za FTP su razvijena sigurnosna proširenja poput protokola FTPS i SSH FTP.

Literatura

racfor_wiki/protokoli/file_transfer_protocol.txt · Zadnja izmjena: 2023/06/19 18:17 (vanjsko uređivanje)
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0