SFTP i FTPS protokoli

predgovor

Prije samo tjedan dana pisao sam esej na temu naznačenu u naslovu i suočio se s činjenicom da, recimo, na internetu nema toliko edukativnih informacija. Uglavnom suhe činjenice i upute za postavljanje. Stoga sam odlučio malo ispraviti tekst i objaviti ga kao članak.

Što je FTP

FTP (File Transfer Protocol) je protokol za prijenos datoteka preko mreže. To je jedan od osnovnih Ethernet protokola. Pojavio se 1971. i isprva je radio u mrežama DARPA. Trenutno se, poput HTTP-a, prijenos datoteka temelji na modelu koji se sastoji od skupa TCP/IP (Transmission Control Protocol/Internet Protocol) protokola. Definirano u RFC 959.

Protokol definira sljedeće:

  • Kako će se izvršiti provjera grešaka?
  • Način pakiranja podataka (ako se koristi pakiranje)
  • Kako uređaj koji šalje pokazuje da je završio s porukom?
  • Kako prijemni uređaj pokazuje da je primio poruku?

Komunikacija između klijenta i poslužitelja

Pogledajmo pobliže procese koji se odvijaju tijekom rada FTP-a. Vezu inicijalizira korisnički tumač protokola. Razmjena se kontrolira preko kontrolnog kanala u TELNET standardu. FTP naredbe generira korisnički tumač protokola i šalje ih poslužitelju. Odgovori poslužitelja također se šalju korisniku putem kontrolnog kanala. Općenito, korisnik ima mogućnost uspostaviti kontakt s tumačem protokola poslužitelja i drugim sredstvima osim korisničkog tumača.

Glavna značajka FTP-a je da koristi dvostruke veze. Jedan od njih se koristi za slanje naredbi poslužitelju i odvija se prema zadanim postavkama preko TCP priključka 21, koji se može promijeniti. Kontrolna veza postoji sve dok klijent komunicira s poslužiteljem. Kontrolni kanal mora biti otvoren prilikom prijenosa podataka između strojeva. Ako je zatvoren, prijenos podataka se zaustavlja. Kroz drugi dolazi do izravnog prijenosa podataka. Otvara se svaki put kada se dogodi prijenos datoteke između klijenta i poslužitelja. Ako se više datoteka prenosi istovremeno, svaka od njih otvara svoj prijenosni kanal.

FTP može raditi u aktivnom ili pasivnom načinu rada, čiji izbor određuje način uspostavljanja veze. U aktivnom načinu rada, klijent stvara TCP kontrolnu vezu s poslužiteljem i šalje svoju IP adresu i proizvoljni broj porta klijenta na poslužitelj, a zatim čeka da poslužitelj pokrene TCP vezu s ovom adresom i brojem porta. U slučaju da je klijent iza vatrozida i ne može prihvatiti dolaznu TCP vezu, može se koristiti pasivni način rada. U ovom načinu rada klijent koristi kontrolni tijek za slanje PASV naredbe poslužitelju, a zatim od poslužitelja prima svoju IP adresu i broj porta, koje klijent zatim koristi za otvaranje protoka podataka sa svog proizvoljnog porta.

Moguće je da se podaci prenesu na treći stroj. U ovom slučaju korisnik organizira kontrolni kanal s dva poslužitelja i organizira izravni podatkovni kanal između njih. Kontrolne naredbe idu preko korisnika, a podaci idu izravno između poslužitelja.

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

  • ASCII – koristi se za tekst. Podaci se, ako je potrebno, pretvaraju iz prikaza znakova na hostu koji šalje u "osmo-bitni ASCII" prije prijenosa, i (ponovno, ako je potrebno) u prikaz znakova na hostu koji prima. Osobito se mijenjaju znakovi novog retka. Kao rezultat toga, ovaj način nije prikladan za datoteke koje sadrže više od običnog teksta.
  • Binarni način - uređaj koji šalje šalje svaku datoteku bajt po bajt, a primatelj pohranjuje tok bajtova nakon primitka. Podrška za ovaj način rada preporučena je za sve FTP implementacije.
  • EBCDIC – koristi se za prijenos običnog teksta između računala u EBCDIC kodiranju. Inače, ovaj način je sličan ASCII načinu.
  • Lokalni način rada - omogućuje dvama računalima s identičnim postavkama slanje podataka u vlastitom formatu bez pretvaranja u ASCII.

Prijenos podataka može se izvršiti na bilo koji od tri načina:

  • Način protoka - podaci se šalju kao kontinuirani tok, oslobađajući FTP izvođenja bilo kakve obrade. Umjesto toga, svu obradu obavlja TCP. Indikator kraja datoteke nije potreban osim za odvajanje podataka u zapise.
  • Blokirani način - FTP razbija podatke u nekoliko blokova (blok zaglavlja, broj bajtova, podatkovno polje) i zatim ih šalje TCP-u.
  • Način sažimanja – podaci se sažimaju pomoću jednog algoritma (obično kodiranjem duljina niza).

FTP poslužitelj je poslužitelj koji pruža mogućnost korištenja protokola za prijenos datoteka. Ima određene značajke koje ga razlikuju od konvencionalnih web poslužitelja:

  • Potrebna je provjera autentičnosti korisnika
  • Sve operacije izvode se unutar trenutne sesije
  • Sposobnost izvođenja različitih radnji s datotečnim sustavom
  • Za svaku vezu koristi se zaseban kanal

FTP klijent je program koji vam omogućuje povezivanje s udaljenim poslužiteljem putem FTP-a i također obavljanje potrebnih radnji na njemu s elementima datotečnog sustava. Klijent može biti preglednik u čiju adresnu traku trebate unijeti adresu koja je put do određenog direktorija ili datoteke na udaljenom poslužitelju, u skladu s općim blok dijagramom URL-a:

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

Međutim, korištenje web preglednika u ovom kontekstu omogućit će vam samo pregled ili preuzimanje datoteka koje vas zanimaju. Kako biste u potpunosti iskoristili sve prednosti FTP-a, trebate koristiti specijalizirani softver kao klijent.

FTP provjera autentičnosti koristi shemu korisničkog imena/lozinke za odobravanje pristupa. Korisničko ime se šalje na poslužitelj naredbom USER, a lozinka se šalje naredbom PASS. Ako poslužitelj prihvati informacije koje je dao klijent, tada će poslužitelj poslati pozivnicu klijentu i sesija počinje. Korisnici se mogu, ako poslužitelj podržava ovu značajku, prijaviti bez davanja vjerodajnica, ali poslužitelj može odobriti samo ograničeni pristup za takve sesije.

Domaćin koji pruža FTP uslugu može omogućiti anonimni FTP pristup. Korisnici se obično prijavljuju s "anonymous" (može biti osjetljivo na velika i mala slova na nekim FTP poslužiteljima) kao svojim korisničkim imenom. Iako se od korisnika obično traži da daju svoju adresu e-pošte umjesto lozinke, zapravo se ne provodi nikakva provjera. Mnogi FTP hostovi koji pružaju ažuriranja softvera podržavaju anonimni pristup.

Dijagram protokola

Interakcija klijent-poslužitelj tijekom FTP veze može se vizualizirati na sljedeći način:

SFTP i FTPS protokoli

Siguran FTP

FTP izvorno nije trebao biti siguran, jer je bio namijenjen komunikaciji između više vojnih postrojenja i agencija. No s razvojem i širenjem interneta, opasnost od neovlaštenog pristupa višestruko se povećala. Bilo je potrebno zaštititi poslužitelje od raznih vrsta napada. U svibnju 1999. autori RFC-a 2577 saželi su ranjivosti u sljedeći popis problema:

  • Skriveni napadi (bounce napadi)
  • Lažni napadi
  • Napadi grubom silom
  • Hvatanje paketa, njuškanje
  • Krađa luka

Obični FTP nema mogućnost prijenosa podataka u šifriranom obliku, zbog čega napadači mogu lako i lako presresti korisnička imena, lozinke, naredbe i druge informacije. Uobičajeno rješenje za ovaj problem je korištenje "sigurnih", TLS-zaštićenih verzija ranjivog protokola (FTPS) ili nekog drugog, sigurnijeg protokola, kao što je SFTP/SCP, koji se nudi uz većinu implementacija protokola Secure Shell.

FTPS

FTPS (FTP + SSL) je proširenje standardnog protokola za prijenos datoteka koje svojoj osnovnoj funkcionalnosti dodaje stvaranje šifriranih sesija korištenjem SSL (Secure Sockets Layer) protokola. Danas zaštitu pruža njegov napredniji analogni TLS (Transport Layer Security).

SSL

SSL protokol predložio je Netscape Communications 1996. godine kako bi se osigurala sigurnost i privatnost internetskih veza. Protokol podržava autentifikaciju klijenta i poslužitelja, neovisan je o aplikaciji i transparentan je za HTTP, FTP i Telnet protokole.

SSL Handshake protokol sastoji se od dvije faze: provjera autentičnosti poslužitelja i izborna provjera autentičnosti klijenta. U prvoj fazi poslužitelj odgovara na zahtjev klijenta slanjem svojeg certifikata i parametara enkripcije. Klijent zatim generira glavni ključ, šifrira ga s javnim ključem poslužitelja i šalje ga poslužitelju. Poslužitelj dekriptira glavni ključ svojim privatnim ključem i autentificira se klijentu vraćanjem poruke koju je autentificirao klijentov glavni ključ.

Naknadni podaci su šifrirani i autentificirani ključevima izvedenim iz ovog glavnog ključa. U drugom koraku, koji je opcijski, poslužitelj šalje zahtjev klijentu, a klijent se autentificira poslužitelju vraćanjem zahtjeva s vlastitim digitalnim potpisom i certifikatom javnog ključa.

SSL podržava niz kriptografskih algoritama. Prilikom uspostavljanja komunikacije koristi se RSA kriptosustav s javnim ključem. Nakon razmjene ključeva koriste se mnoge različite šifre: RC2, RC4, IDEA, DES i TripleDES. Također se koristi MD5 - algoritam za izradu sažetka poruke. Sintaksa za certifikate javnih ključeva opisana je u X.509.

Jedna od važnih prednosti SSL-a je njegova potpuna neovisnost o softverskoj platformi. Protokol je razvijen na principima prenosivosti, a ideologija njegove konstrukcije ne ovisi o aplikacijama u kojima se koristi. Osim toga, također je važno da se drugi protokoli mogu transparentno prekriti povrh SSL protokola; bilo da se dodatno poveća stupanj zaštite ciljnih tokova informacija, ili da se kriptografske mogućnosti SSL-a prilagode za neki drugi, dobro definirani zadatak.

SSL veza

SFTP i FTPS protokoli

Sigurni kanal koji pruža SSL ima tri glavna svojstva:

  • Kanal je privatan. Enkripcija se koristi za sve poruke nakon jednostavnog dijaloga koji služi za određivanje tajnog ključa.
  • Kanal je autentificiran. Poslužiteljska strana razgovora uvijek je autentificirana, dok je klijentska strana opcionalno autentificirana.
  • Kanal je pouzdan. Prijenos poruka uključuje provjeru integriteta (koristeći MAC).

Značajke FTPS-a

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

  • Implicitna metoda uključuje korištenje standardnog SSL protokola za uspostavljanje sesije prije slanja podataka, što zauzvrat prekida kompatibilnost s uobičajenim FTP klijentima i poslužiteljima. Za povratnu kompatibilnost s klijentima koji ne podržavaju FTPS, za kontrolnu vezu koristi se TCP port 990, a za prijenos podataka 989. Time se zadržava standardni port 21 za FTP protokol. Ova se metoda smatra zastarjelom.
  • Explicit je mnogo praktičniji jer koristi standardne FTP naredbe, ali šifrira podatke prilikom odgovaranja, što vam omogućuje korištenje iste kontrolne veze i za FTP i za FTPS. Klijent mora izričito zatražiti siguran prijenos podataka od poslužitelja, a zatim odobriti metodu enkripcije. Ako klijent ne zahtijeva siguran prijenos, FTPS poslužitelj ima pravo ili zadržati ili zatvoriti nezaštićenu vezu. Mehanizam za provjeru autentičnosti i pregovaranje o sigurnosti podataka dodan je pod RFC 2228 koji uključuje novu naredbu FTP AUTH. Iako ovaj standard ne definira eksplicitno sigurnosne mehanizme, navodi da sigurnu vezu mora pokrenuti klijent pomoću gore opisanog algoritma. Ako poslužitelj ne podržava sigurne veze, trebao bi se vratiti kod pogreške 504. FTPS klijenti mogu dobiti informacije o sigurnosnim protokolima koje poslužitelj podržava pomoću naredbe FEAT, međutim, poslužitelj nije dužan otkriti koje razine sigurnosti ima podržava. Najčešće FTPS naredbe su AUTH TLS i AUTH SSL, koje pružaju TLS odnosno SSL sigurnost.

SFTP

SFTP (Secure File Transfer Protocol) je protokol za prijenos datoteka aplikacijskog sloja koji radi na sigurnom kanalu. Ne smije se miješati s (Simple File Transfer Protocol), koji ima istu kraticu. Ako je FTPS jednostavno proširenje FTP-a, onda je SFTP zaseban i nepovezan protokol koji koristi SSH (Secure Shell) kao svoju osnovu.

Secure Shell

Protokol je razvila jedna od IETF grupa pod nazivom Secsh. Radna dokumentacija za novi SFTP protokol nije postala službeni standard, ali se počela aktivno koristiti za razvoj aplikacija. Nakon toga je objavljeno šest verzija protokola. Međutim, postupno povećanje funkcionalnosti u njemu dovelo je do činjenice da je 14. kolovoza 2006. odlučeno da se prekine rad na razvoju protokola zbog završetka glavnog zadatka projekta (razvoj SSH) i nedostatka na dovoljnoj stručnoj razini za prelazak na razvoj potpunog protokola udaljenog sustava datoteka.

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

SSH vam omogućuje siguran prijenos gotovo bilo kojeg drugog mrežnog protokola u nezaštićenom okruženju. Dakle, ne samo da možete raditi na daljinu na računalu putem naredbene ljuske, već i prenositi audio stream ili video (na primjer, s web kamere) preko šifriranog kanala. SSH također može koristiti kompresiju prenesenih podataka za naknadnu enkripciju, što je zgodno, na primjer, za daljinsko pokretanje X WindowSystem klijenata.

Prvu verziju protokola, SSH-1, razvio je 1995. godine istraživač Tatu Ulönen sa Tehnološkog sveučilišta u Helsinkiju (Finska). SSH-1 je napisan kako bi pružio 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, izraz "SSH" obično znači SSH-2, jer Prva verzija protokola sada se praktički ne koristi zbog značajnih nedostataka. Protokol je 2006. godine odobrila radna skupina IETF-a kao internetski standard.

Postoje dvije uobičajene implementacije SSH-a: privatna komercijalna i besplatna otvorena koda. Besplatna implementacija zove se OpenSSH. Do 2006. 80% računala na Internetu koristilo je OpenSSH. Vlasničku implementaciju razvila je SSH Communications Security, podružnica u potpunom vlasništvu Tectia Corporation, i besplatna je za nekomercijalnu upotrebu. Ove implementacije sadrže gotovo isti skup naredbi.

Protokol SSH-2, za razliku od telnet protokola, otporan je na napade prisluškivanja prometa ("njuškanje"), ali nije otporan na napade čovjeka u sredini. Protokol SSH-2 također je otporan na napade otmice sesije, jer je nemoguće pridružiti se ili oteti već uspostavljenu sesiju.

Kako bi se spriječili napadi čovjeka u sredini pri povezivanju s hostom čiji ključ još nije poznat klijentu, softver klijenta prikazuje korisniku "otisak ključa". Preporuča se pažljivo provjeriti "snimku ključa" koju prikazuje klijentski softver sa snimkom ključa poslužitelja, po mogućnosti dobivenu putem pouzdanih komunikacijskih kanala ili osobno.

Podrška za SSH dostupna je na svim sustavima sličnim UNIX-u, a većina ima ssh klijent i poslužitelj kao standardne pomoćne programe. Postoje mnoge implementacije SSH klijenata za OS-ove koji nisu UNIX. Protokol je stekao veliku popularnost nakon širokog razvoja analizatora prometa i metoda za ometanje rada lokalnih mreža, kao alternativno rješenje nesigurnom Telnet protokolu za upravljanje važnim čvorovima.

Komunikacija korištenjem SSH

Za rad putem SSH-a potreban vam je SSH poslužitelj i SSH klijent. Poslužitelj osluškuje veze s klijentskim računalima i, kada se veza uspostavi, provodi autentifikaciju, nakon čega počinje servisirati klijenta. Klijent se koristi za prijavu na udaljeni stroj i izvršavanje naredbi.

SFTP i FTPS protokoli

Usporedba s FTPS-om

Glavna stvar koja razlikuje SFTP od standardnog FTP-a i FTPS-a je da SFTP šifrira apsolutno sve naredbe, korisnička imena, lozinke i druge povjerljive podatke.

I FTPS i SFTP protokol koriste kombinaciju asimetričnih algoritama (RSA, DSA), simetričnih algoritama (DES/3DES, AES, Twhofish itd.), kao i algoritam za razmjenu ključeva. Za autentifikaciju FTPS (ili da budemo precizniji, SSL/TLS preko FTP-a) koristi X.509 certifikate, dok SFTP (SSH protokol) koristi SSH ključeve.

X.509 certifikati uključuju javni ključ i neke informacije o certifikatu vlasnika. Ti podaci omogućuju, s druge strane, provjeru integriteta samog certifikata, autentičnosti i vlasnika certifikata. X.509 certifikati imaju odgovarajući privatni ključ, koji se obično pohranjuje odvojeno od certifikata iz sigurnosnih razloga.

SSH ključ sadrži samo javni ključ (odgovarajući privatni ključ se posebno pohranjuje). Ne sadrži podatke o vlasniku ključa. Neke SSH implementacije koriste X.509 certifikate za autentifikaciju, ali oni zapravo ne provjeravaju cijeli lanac certifikata—koristi se samo javni ključ (što takvu autentifikaciju čini nepotpunom).

Zaključak

FTP protokol bez sumnje i dalje igra važnu ulogu u pohrani i distribuciji informacija na mreži unatoč svojoj časnoj starosti. To je prikladan, višenamjenski i standardizirani protokol. Na njegovoj osnovi izgrađene su mnoge arhive datoteka bez kojih tehnički rad ne bi bio tako učinkovit. Osim toga, lako se postavlja, a serverski i klijentski programi postoje za gotovo sve aktualne i manje aktualne platforme.

Zauzvrat, njegove zaštićene verzije rješavaju problem povjerljivosti pohranjenih i prenesenih podataka u suvremenom svijetu. Oba nova protokola imaju svoje prednosti i nedostatke i imaju malo različite uloge. U onim područjima gdje je potrebna arhiva datoteka, poželjno je koristiti FTPS, pogotovo ako je tamo već korišten klasični FTP. SFTP je rjeđi zbog svoje nekompatibilnosti sa starim protokolom, ali je sigurniji i ima više funkcionalnosti, jer je dio sustava daljinskog upravljanja.

Popis izvora

Izvor: www.habr.com

Dodajte komentar