Protokoli SFTP i FTPS

Predgovor

Prije točno tjedan dana pisao sam referat na temu označenu u naslovu i naišao sam na to da, blago rečeno, informacija na mreži nije toliko obimna. Uglavnom su to suhi podaci i upute za postavljanje. Stoga sam odlučio malo prilagoditi tekst i objaviti ga kao članak.

Što je FTP

FTP (File Transfer Protocol) – protokol za prijenos datoteka putem mreže. To je jedan od osnovnih protokola Ethernet. Pojavio se 1971. godine i izvorno je radio u DARPA mrežama. Trenutno, kao i HTTP, prijenos datoteka temelji se na modelu koji se sastoji od skupa protokola TCP/IP (Transmission Control Protocol/Internet Protocol). Definiran je u RFC 959.

Protokol određuje sljedeće:

  • Kako će se provoditi provjera pogrešaka
  • Metoda pakiranja podataka (ako se pakiranje koristi)
  • Na koji način šalje uređaj javlja da je završio poruku
  • Na koji način prijamni uređaj javlja da je primio poruku

Interakcija između klijenta i poslužitelja

Pogledajmo detaljnije procese koji se odvijaju tijekom FTP rada. Veza se inicijalizira protokolskim interpretatorom korisnika. Upravljanje razmjenom vrši se putem kontrolnog kanala prema TELNET standardu. FTP naredbe generira protokolski interpretator korisnika i šalje ih na poslužitelj. Odgovori poslužitelja šalju se korisniku također putem kontrolnog kanala. U općem slučaju, korisnik ima mogućnost uspostaviti kontakt s protokolskim interpretatorom poslužitelja putem sredstava različitih od protokolskog interpretatora korisnika.

Osnovna značajka FTP-a je ta da koristi dvostruku vezu. Jedna se koristi za slanje naredbi poslužitelju i odvija se po defaultu preko TCP porta 21, koji se može promijeniti. Kontrolna veza postoji tijekom cijelog vremena dok klijent komunicira s poslužiteljem. Kontrolni kanal mora biti otvoren prilikom prijenosa podataka između računala. U slučaju da se zatvori, prijenos podataka prestaje. Putem druge veze odvija se izravni prijenos podataka. Ona se otvara svaki put kada se prijenos datoteke odvija između klijenta i poslužitelja. U slučajevima kada se istovremeno prenosi više datoteka, za svaku od njih otvara se vlastiti kanal prijenosa.

FTP može raditi u aktivnom ili pasivnom načinu, odaberete li koji način određuje kako se postavlja veza. U aktivnom načinu klijent stvara upravljačku TCP vezu sa serverom i šalje serveru svoju IP adresu i proizvoljan broj klijentskog porta, nakon čega čeka da server pokrene TCP vezu s tom adresom i brojem porta. U slučaju da je klijent iza vatrozida i ne može primiti dolaznu TCP vezu, može se koristiti pasivni način. U ovom načinu klijent koristi kontrolni tok da pošalje serveru команду PASV, a zatim od servera prima njegovu IP adresu i broj porta, koje klijent koristi za otvaranje podatkovnog toka sa svog proizvoljnog porta.

Moguće je situacija kada se podaci mogu prenositi na treći uređaj. U tom slučaju korisnik organizira upravljački kanal s dva servera i organizira izravni kanal podataka između njih. Upravne naredbe prolaze preko korisnika, a podaci izravno između servera.

Pri prijenosu podataka preko mreže mogu se koristiti četiri prikaza podataka:

  • ASCII – koristi se za tekst. Podaci, ako je potrebno, prije prijenosa se konvertiraju iz simboličkog prikaza na pošiljaocu u 'osmobitni ASCII', i (ponovo, ako je potrebno) u simbolički prikaz primatelja. Konkretno, mijenjaju se simboli za prijelom linije. Kao posljedica toga, ovaj način nije pogodan za datoteke koje sadrže ne samo običan tekst.
  • Binarni način – uređaj pošiljatelj šalje svaki fajl bajt po bajt, a primatelj čuva tok bajtova prilikom prijema. Podrška za ovaj režim preporučena je za sve implementacije FTP-a.
  • EBCDIC – koristi se za prijenos običnog teksta između hostova u EBCDIC kodiranju. U ostalom, ovaj način je sličan ASCII načinu.
  • Lokalni način – omogućuje dva računala s identičnim postavkama da šalju podatke u vlastitom formatu bez konverzije u ASCII.

Prijenos podataka može se odvijati u bilo kojem od tri režima:

  • Tokovni način – podaci se šalju u obliku neprekidnog toka, oslobađajući FTP od obavljanja bilo kakve obrade. Umjesto toga, sve se obrađivanje vrši pomoću TCP-a. Indikator kraja datoteke nije potreban, osim za dijeljenje podataka u zapise.
  • Blok način – FTP dijeli podatke na nekoliko blokova (blok zaglavlja, broj bajtova, polje podataka) i zatim ih prenosi putem TCP-a.
  • Način kompresije – podaci se komprimiraju jedinstvenim algoritmom (obično kodiranjem dugih nizova).

FTP server – to je server koji omogućava korištenje protokola za prijenos datoteka. Ima određene karakteristike koje ga razlikuju od uobičajenih web servera:

  • Potrebna je autentifikacija korisnika
  • Sve operacije se provode unutar trenutne sesije
  • Mogućnost obavljanja različitih radnji s datotečnim sustavom
  • Koristi se poseban kanal za svaku vezu

FTP klijent – to je program koji omogućava povezivanje na udaljeni server putem FTP-a i također izvršavanje potrebnih radnji s elementima datotečnog sustava. Klijent može biti i preglednik, u koji treba unijeti adresu koja predstavlja put do određenog direktorija ili datoteke na udaljenom serveru, u skladu s općom blok shemom URL-a:

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

Međutim, korištenje web preglednika u ovom kontekstu omogućava samo pregled ili preuzimanje željenih datoteka. Kako bi se u potpunosti iskoristile sve prednosti FTP-a, preporučuje se korištenje specijaliziranog softvera kao klijenta.

FTP autentifikacija koristi shemu korisničko ime/lozinka za pružanje pristupa. Korisničko ime se šalje serveru naredbom USER, a lozinka – naredbom PASS. Ako server prihvati informacije koje je klijent dostavio, šalje klijentu pozivnicu i sesija počinje. Korisnici mogu, ako server podržava ovu mogućnost, ući u sustav bez pružanja korisničkih podataka, no server može omogućiti samo ograničen pristup za takve sesije.

Hosting koji pruža FTP uslugu može omogućiti anonimni pristup FTP-u. Korisnici se obično prijavljuju kao „anonymous“ (može biti osjetljivo na velika i mala slova na nekim FTP serverima) kao korisničko ime. Iako se obično traži od korisnika da pošalju adresu svoje e-mail pošte umjesto lozinke, zapravo se ne provodi nikakva provjera. Mnogi FTP hostovi koji nude ažuriranja softvera podržavaju anonimni pristup.

Shema protokola

Interakcija između klijenta i poslužitelja prilikom FTP veze može se vizualizirati ovako:

Protokoli SFTP i FTPS

Sigurni FTP

FTP izvorno nije zamišljen kao siguran, budući da je bio namijenjen za komunikaciju između nekoliko vojnih objekata i institucija. Međutim, s razvojem i širenjem interneta, prijetnja neovlaštenog pristupa dramatično je porasla. Pojavila se potreba za zaštitom poslužitelja od raznih vrsta napada. U svibnju 1999. autori RFC 2577 prikupili su ranjivosti u sljedeći popis problema:

  • Skriveni napadi (bounce attacks)
  • Spoof napadi (spoof attacks)
  • Napadi metodom sile (brute force attacks)
  • Presretanje paketa, snimanje (packet capture, sniffing)
  • Zamjena portova (port stealing)

Običan FTP nema mogućnost prijenosa podataka u šifriranom obliku, što znači da korisnička imena, lozinke, naredbe i druge informacije mogu lako i jednostavno biti presretnute od strane zlonamjernih korisnika. Uobičajeno rješenje ovog problema je korištenje 'sigurnih', TLS zaštićenih verzija ranjivog protokola (FTPS) ili nekog drugog, sigurnijeg protokola, poput SFTP/SCP, koji je dostupan s većinom implementacija protokola Secure Shell.

FTPS

FTPS (FTP + SSL) je proširenje standardnog protokola prijenosa datoteka koje dodaje u njegovu osnovnu funkcionalnost stvaranje šifriranih sesija pomoću protokola SSL (Secure Sockets Layer — razina zaštićenih sučelja). Danas se zaštita osigurava njegovim naprednijim analogom TLS (Transport Layer Security — zaštita razine transporta).

SSL

SSL protokol je predložila korporacija Netscape Communications 1996. godine s ciljem osiguranja sigurnosti i tajnosti internetskih veza. Protokol podržava autentifikaciju (utvrđivanje autentičnosti) klijenta i poslužitelja, ne ovisi o aplikacijama i proziran je za protokole HTTP, FTP i Telnet.

SSL Handshake protokol sastoji se od dva koraka: utvrđivanje autentičnosti poslužitelja i neobavezno utvrđivanje autentičnosti klijenta. U prvom koraku, poslužitelj kao odgovor na zahtjev klijenta šalje svoj certifikat i parametre šifriranja. Zatim klijent generira master ključ, šifrira ga javnim ključem poslužitelja i šalje ga poslužitelju. Poslužitelj dešifrira master ključ svojim privatnim ključem i potvrđuje svoju autentičnost klijentu vraćajući mu poruku potpisanu master ključem klijenta.

Sljedeći podaci se šifriraju i ovjeravaju ključevima dobivenim na osnovu ovog glavnog ključa. U drugoj fazi, koja nije obavezna, server šalje zahtjev klijentu, a klijent potvrđuje svoju autentičnost serveru vraćajući zahtjev s vlastitom digitalnom potpisom i certifikatom javnog ključa.

SSL podržava razne kriptografske algoritme. Tijekom uspostavljanja veze koristi se kriptosustav javnog ključa RSA. Nakon razmjene ključeva koristi se mnogo različitih šifri: RC2, RC4, IDEA, DES i TripleDES. Također se koristi MD5 — algoritam za generiranje sažetka poruka. Sintaksa certifikata javnog ključa opisana je u X.509.

Jedna od važnih prednosti SSL-a je njegova potpuna softverska i platformna neovisnost. Protokol je razvijen na principima prenosivosti, a ideologija njegove izrade ne ovisi o aplikacijama unutar kojih se koristi. Osim toga, važno je napomenuti da se preko SSL protokola mogu transparentno dodavati drugi protokoli; ili za još veće povećanje razine zaštite ciljanih informatičkih tokova, ili za prilagodbu kriptografskih sposobnosti SSL-a za neku drugu, jasno definiranu zadaću.

SSL veza

Protokoli SFTP i FTPS

Osigurani SSL kanal ima tri glavne značajke:

  • Kanal je privatni. Šifriranje se koristi za sve poruke nakon jednostavnog dijaloga koji služi za određivanje tajnog ključa.
  • Kanal je autentificiran. Serverska strana dijaloga uvijek se autentificira, dok se klijentska autentificira opcionalno.
  • Kanal je pouzdan. Prijenos poruka uključuje provjeru integriteta (s pomoću MAC-a).

Značajke FTPS-a

Postoje dvije implementacije FTPS-a koje koriste različite metode pružanja sigurnosti:

  • Neizravna metoda podrazumijeva korištenje standardnog SSL protokola s uspostavljanjem sesije prije slanja podataka, što, zauzvrat, krši kompatibilnost s običnim FTP klijentima i serverima. Za unatrag kompatabilnost s klijentima koji ne podržavaju FTPS, koristi se TCP-port 990 za kontrolnu vezu, a za prijenos podataka — 989. To omogućuje zadržavanje standardnog porta 21 za FTP protokol. Ova metoda je označena kao zastarjela.
  • Jasan – puno je praktičniji jer koristi standardne FTP naredbe, ali šifrira podatke prilikom odgovora, što omogućuje korištenje iste upravljačke veze za FTP i FTPS. Klijent mora izričito zatražiti osiguranu prijenos podataka od servera, a potom potvrditi način šifriranja. Ako klijent ne zatraži osigurani prijenos, FTPS server ima pravo zadržati ili zatvoriti nezaštićenu vezu. Mehanizam dogovora o identifikaciji i zaštiti podataka dodan je prema RFC 2228, koji uključuje novu FTP naredbu AUTH. Iako ovaj standard ne određuje izričito mehanizme zaštite, navodi da osiguranu vezu mora inicirati klijent pomoću gore opisanog algoritma. Ako server ne podržava osigurane veze, mora se vratiti kod greške 504. FTPS klijenti mogu dobiti informacije o podržanim protokolima zaštite servera pomoću naredbe FEAT, ali server nije dužan otkriti koji razini sigurnosti podržava. Najčešće FTPS naredbe su AUTH TLS i AUTH SSL, koje osiguravaju zaštitu TLS i SSL.

SFTP

SFTP (Secure File Transfer Protocol) – protokol aplikacijskog sloja za prijenos datoteka, koji radi preko sigurnog kanala. Ne treba ga miješati s (Simple File Transfer Protocol), koji ima istu akronim. Dok je FTPS jednostavno proširenje FTP-a, SFTP je odvojen i nikako nije povezan s njim, temelji se na SSH (Secure Shell – sigurna ljuska).

Secure Shell

Razvijanjem ovog protokola bavila se jedna od grupa IETF pod nazivom Secsh. Radna dokumentacija za novi protokol SFTP nije postala službeni standard, no počela se aktivno koristiti za razvoj aplikacija. Kasnije su objavljene šest verzija protokola. Međutim, postupno povećanje funkcionalnosti dovelo je do odluke 14. kolovoza 2006. da se obustavi rad na daljnjem razvoju protokola zbog ispunjenja osnovnog cilja projekta (razvoj SSH) i nedostatka dovoljno stručnog znanja za prijelaz na razvoj punopravnog protokola udaljenog datotečnog sustava.

SSH je mrežni protokol koji omogućuje daljinsko upravljanje operativnim sustavom i tuneliranje TCP veze (na primjer, za prijenos datoteka). Funkcionalno je sličan protokolima Telnet i rlogin, ali, za razliku od njih, šifrira sav promet, uključujući i proslijeđene lozinke. SSH dopušta izbor različitih algoritama šifriranja. SSH klijenti i SSH serveri dostupni su za većinu mrežnih operativnih sustava.

SSH omogućuje sigurno prijenos gotovo bilo kojeg drugog mrežnog protokola u nesigurnoj okolini. Tako je moguće ne samo daljinski raditi na računalu putem naredbenog retka, već i prenositi audio ili video stream preko šifriranog kanala (na primjer, s web kamere). Također, SSH može koristiti kompresiju prenesenih podataka za njihovo daljnje šifriranje, što je korisno, na primjer, za daljinsko pokretanje klijenata X Window Systama.

Prva verzija protokola, SSH-1, razvijena je 1995. godine od strane istraživača Tatu Uljanena s Tehnološkog sveučilišta u Helsinkiju (Finska). SSH-1 je napisan kako bi osigurao veću privatnost od protokola rlogin, telnet i rsh. Godine 1996. razvijena je sigurnija verzija protokola, SSH-2, koja nije kompatibilna sa SSH-1. Protokol je stekao još veću popularnost, a do 2000. godine imao je oko dva milijuna korisnika. Trenutno se pod pojmom "SSH" obično misli na SSH-2, jer se prva verzija protokola, zbog značajnih nedostataka, sada praktički ne koristi. Godine 2006. protokol je odobren od strane radne skupine IETF kao Internet standard.

Postoje dvije uobičajene implementacije SSH: privatna komercijalna i besplatna slobodna. Slobodna implementacija naziva se OpenSSH. Do 2006. godine 80 % računala na internetu koristilo je upravo OpenSSH. Privatna implementacija razvija se od strane organizacije SSH Communications Security, koja je stopostotni odjel korporacije Tectia, i besplatna je za nekomercijalnu upotrebu. Ove implementacije sadrže gotovo identičan skup naredbi.

Protokol SSH-2, za razliku od protokola telnet, otporan je na napade presretanja prometa („sniffing“), ali nije otporan na napade „čovjek u sredini“. Protokol SSH-2 također je otporan na napade pomoću presretanja sesije (eng. session hijacking), jer nije moguće uključiti se u već uspostavljenu sesiju ili je presresti.

Kako bi se spriječili napadi „čovjek u sredini“ prilikom povezivanja na poslužitelj čiji ključ još nije poznat klijentu, klijentski softver prikazuje korisniku „otisak ključa“ (eng. key fingerprint). Preporučuje se pažljivo provjeriti prikazani „otisak ključa“ klijentskog softvera s otiskom ključa poslužitelja, po mogućstvu dobivenim putem pouzdanih komunikacijskih kanala ili osobno.

Podrška za SSH implementirana je u svim UNIX-podobnim sustavima, a na većini od njih među standardnim alatima prisutni su klijent i poslužitelj ssh. Postoji mnogo implementacija SSH-klijenata i za ne-UNIX operacijske sustave. Protokol je stekao veliku popularnost nakon širokog razvoja analizatora prometa i načina ometanja rada lokalnih mreža, kao alternativno, nesigurno rješenje za upravljanje važnim čvorovima.

Veza koristeći SSH

Za rad putem SSH potreban je SSH-poslužitelj i SSH-klijent. Poslužitelj sluša veze s klijentskih računala i prilikom uspostavljanja veze provodi autentifikaciju, nakon čega počinje s uslugom klijenta. Klijent se koristi za prijavu na udaljeni uređaj i izvršavanje naredbi.

Protokoli SFTP i FTPS

Usporedba s FTPS-om

Glavna razlika između SFTP-a i standardnog FTP-a i FTPS-a je u tome što SFTP šifrira apsolutno sve naredbe, imena korisnika, lozinke i druge povjerljive informacije.

Oba protokola FTPS i SFTP koriste kombinaciju asimetričnih algoritama (RSA, DSA), simetričnih algoritama (DES/3DES, AES, Twhofish itd.), kao i algoritam razmjene ključeva. Za autentifikaciju FTPS (ili, preciznije, SSL / TLS putem protokola FTP) koristi X.509 certifikate, dok SFTP (SSH protokol) koristi SSH ključeve.

X.509 certifikati sadrže javni ključ i određene informacije o vlasniku certifikata. Ove informacije omogućuju, s druge strane, provjeru cjelovitosti samog certifikata, autentičnost i vlasnika svjedočanstva. X.509 certifikati imaju odgovarajući privatni ključ koji se obično čuva odvojeno od certifikata iz sigurnosnih razloga.

SSH ključ sadrži samo javni ključ (odgovarajući privatni ključ se čuva odvojeno). Ne sadrži nikakve informacije o vlasniku ključa. Neke SSH implementacije koriste X.509 certifikate za autentifikaciju, ali u stvarnosti ne provjeravaju čitav lanac certifikata — koristi se samo javni ključ (što ovu autentifikaciju čini nepotpunom).

Zaključak

FTP protokol, nesumnjivo, i dalje igra važnu ulogu u skladištenju i distribuciji informacija na mreži unatoč svom dugom postojanju. Ovo je jednostavan, višenamjenski i standardizirani protokol. Na njegovoj osnovi izgrađeni su mnogi datotečni arhivi, bez kojih bi tehnički rad bio manje učinkovit. Osim toga, jednostavan je za podešavanje, a serveri i klijentski programi postoje praktički za sve relevantne i manje relevantne platforme.

Njegove zaštićene verzije rješavaju problem privatnosti pohranjenih i prenesenih podataka u modernom svijetu. Oba nova protokola imaju svoje prednosti i mane te obavljaju malo različite uloge. U područjima gdje je poželjan upravo datotečni arhiv, preporučuje se koristiti FTPS, posebno ako se ranije koristio klasični FTP. SFTP je manje rasprostranjen zbog nespojivosti s starim protokolom, ali je sigurniji i ima više funkcionalnosti, budući da je dio sustava daljinskog upravljanja.

Lista izvora

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster