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 suve činjenice i upute za postavljanje. Stoga sam odlučio malo ispraviti tekst i objaviti ga kao članak.

Šta je FTP

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

Protokol definiše sljedeće:

  • Kako će se izvršiti provjera greške?
  • Način pakovanja podataka (ako se koristi pakovanje)
  • Kako uređaj koji šalje označava da je završio poruku?
  • Kako prijemni uređaj pokazuje da je primio poruku?

Komunikacija između klijenta i servera

Pogledajmo bliže procese koji se javljaju tokom FTP operacije. Vezu inicijalizira interpretator korisničkih protokola. Centrala se kontroliše preko kontrolnog kanala u TELNET standardu. FTP komande se generišu od strane tumača protokola korisnika i šalju na server. Odgovori servera se također šalju korisniku putem kontrolnog kanala. Općenito, korisnik ima mogućnost da uspostavi kontakt sa serverskim tumačem protokola i drugim sredstvima osim tumača korisnika.

Glavna karakteristika FTP-a je da koristi dvostruke veze. Jedna od njih se koristi za slanje komandi serveru i podrazumevano se javlja preko TCP porta 21, koji se može promeniti. Kontrolna veza postoji sve dok klijent komunicira sa serverom. Kontrolni kanal mora biti otvoren prilikom prijenosa podataka između strojeva. Ako je zatvoren, prijenos podataka se zaustavlja. Preko drugog dolazi do direktnog prijenosa podataka. Otvara se svaki put kada dođe do prijenosa datoteke između klijenta i servera. Ako se istovremeno prenosi više datoteka, svaki od njih otvara svoj kanal za prijenos.

FTP može raditi u aktivnom ili pasivnom režimu, čiji izbor određuje kako će se veza uspostaviti. U aktivnom režimu, klijent kreira TCP kontrolnu vezu sa serverom i šalje njegovu IP adresu i proizvoljan broj porta klijenta serveru, a zatim čeka da server pokrene TCP vezu sa ovom adresom i brojem porta. U slučaju da se klijent nalazi iza firewall-a i ne može prihvatiti dolaznu TCP vezu, može se koristiti pasivni način rada. U ovom režimu, klijent koristi kontrolni tok da pošalje PASV komandu serveru, a zatim od servera prima njegovu IP adresu i broj porta, koje klijent zatim koristi da otvori tok podataka sa svog proizvoljnog porta.

Moguće je da se podaci prenesu na treću mašinu. U ovom slučaju korisnik organizira kontrolni kanal sa dva servera i između njih organizira direktan kanal podataka. Kontrolne komande prolaze kroz korisnika, a podaci idu direktno između servera.

Prilikom prijenosa podataka preko mreže mogu se koristiti četiri prikaza podataka:

  • ASCII – koristi se za tekst. Podaci se, ako je potrebno, konvertuju iz prikaza znakova na hostu koji šalje u "osmobitni ASCII" prije prijenosa i (opet, ako je potrebno) u prikaz znakova na hostu koji prima. Posebno se mijenjaju karakteri novog reda. Kao rezultat toga, ovaj način rada nije prikladan za datoteke koje sadrže više od običnog teksta.
  • Binarni način rada - uređaj koji šalje svaki fajl šalje bajt po bajt, a primalac pohranjuje tok bajtova nakon prijema. Podrška za ovaj način rada je preporučena za sve FTP implementacije.
  • EBCDIC – koristi se za prijenos običnog teksta između hostova u EBCDIC kodiranju. Inače, ovaj način rada je sličan ASCII modu.
  • Lokalni režim - omogućava dva računara sa identičnim postavkama da šalju podatke u sopstvenom formatu bez konverzije u ASCII.

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

  • Stream mode - podaci se šalju kao kontinuirani tok, oslobađajući FTP od obavljanja bilo kakve obrade. Umjesto toga, svu obradu obavlja TCP. Indikator kraja datoteke nije potreban osim za odvajanje podataka u zapise.
  • Blok režim - FTP razbija podatke u nekoliko blokova (blok zaglavlja, broj bajtova, polje podataka) i zatim ih prenosi na TCP.
  • Način kompresije – podaci se komprimiraju korištenjem jednog algoritma (obično kodiranjem dužine pokretanja).

FTP server je server koji pruža mogućnost korištenja protokola za prijenos datoteka. Ima određene karakteristike koje ga razlikuju od konvencionalnih web servera:

  • Potrebna je autentifikacija korisnika
  • Sve operacije se izvode unutar trenutne sesije
  • Sposobnost izvođenja raznih radnji sa datotečnim sistemom
  • Za svaku vezu koristi se poseban kanal

FTP klijent je program koji vam omogućava da se povežete sa udaljenim serverom preko FTP-a i izvršite potrebne radnje na njemu sa elementima sistema datoteka. Klijent može biti pretraživač, u čiju adresnu traku treba da unesete adresu, koja je put do određenog direktorijuma ili datoteke na udaljenom serveru, u skladu sa opštim URL blok dijagramom:

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

Međutim, korištenje web pretraživača u ovom kontekstu omogućit će vam samo pregledavanje ili preuzimanje datoteka od interesa. Da biste u potpunosti iskoristili sve prednosti FTP-a, trebali biste koristiti specijalizovani softver kao klijent.

FTP autentifikacija koristi šemu korisničkog imena/lozinke za odobravanje pristupa. Korisničko ime se šalje na server naredbom USER, a lozinka se šalje naredbom PASS. Ako server prihvati informacije koje daje klijent, server će poslati pozivnicu klijentu i sesija počinje. Korisnici se mogu, ako server podržava ovu funkciju, prijaviti bez davanja vjerodajnica, ali server može odobriti samo ograničen pristup za takve sesije.

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

Dijagram protokola

Interakcija klijent-server tokom FTP veze može se vizualizirati na sljedeći način:

SFTP i FTPS protokoli

Secure FTP

FTP izvorno nije trebao biti siguran, jer je bio namijenjen za komunikaciju između više vojnih objekata i agencija. Ali s razvojem i širenjem interneta, opasnost od neovlaštenog pristupa se višestruko povećala. Postojala je potreba da se serveri zaštite od raznih vrsta napada. U maju 1999., autori RFC 2577 sumirali su ranjivosti u sljedeću listu problema:

  • Skriveni napadi (napadi odbijanja)
  • Lažni napadi
  • Napadi grube sile
  • 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, komande i druge informacije. Uobičajeno rješenje za ovaj problem je korištenje "sigurne", TLS zaštićene verzije ranjivog protokola (FTPS) ili drugog, sigurnijeg protokola, kao što je SFTP/SCP, koji se isporučuje sa većinom implementacija Secure Shell protokola.

FTPS

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

SSL

SSL protokol je predložio Netscape Communications 1996. godine kako bi se osigurala sigurnost i privatnost internetskih veza. Protokol podržava autentifikaciju klijenta i servera, nezavisan je od aplikacije i transparentan je za HTTP, FTP i Telnet protokole.

Protokol SSL Handshake sastoji se od dvije faze: provjere autentičnosti servera i opcione provjere autentičnosti klijenta. U prvoj fazi, server odgovara na zahtjev klijenta slanjem svog certifikata i parametara šifriranja. Klijent tada generiše glavni ključ, šifrira ga javnim ključem servera i šalje ga serveru. Server dešifruje glavni ključ svojim privatnim ključem i autentifikuje se klijentu vraćanjem poruke potvrđene glavnim ključem klijenta.

Naknadni podaci se šifriraju i autentifikuju pomoću ključeva izvedenih iz ovog glavnog ključa. U drugom koraku, koji je opcioni, server šalje zahtjev klijentu, a klijent se autentifikuje serveru vraćanjem zahtjeva sa vlastitim digitalnim potpisom i certifikatom javnog ključa.

SSL podržava različite kriptografske algoritme. Prilikom uspostavljanja komunikacije koristi se kriptosistem RSA javnog ključa. Nakon razmjene ključeva koristi se mnogo različitih šifri: RC2, RC4, IDEA, DES i TripleDES. Također se koristi MD5 - algoritam za kreiranje sažetka poruke. Sintaksa za certifikate javnog ključa opisana je u X.509.

Jedna od važnih prednosti SSL-a je njegova potpuna neovisnost softvera i platforme. Protokol je razvijen na principima prenosivosti, a ideologija njegove konstrukcije ne zavisi od aplikacija u kojima se koristi. Osim toga, također je važno da se drugi protokoli mogu transparentno prekriti iznad SSL protokola; bilo da dodatno poveća stepen zaštite ciljnih tokova informacija, ili da prilagodi kriptografske mogućnosti SSL-a za neki drugi, dobro definisan zadatak.

SSL veza

SFTP i FTPS protokoli

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

  • Kanal je privatan. Šifriranje se koristi za sve poruke nakon jednostavnog dijaloga koji služi za određivanje tajnog ključa.
  • Kanal je autentificiran. Serverska strana razgovora je uvijek autentifikovana, dok je strana klijenta opciono provjerena.
  • Kanal je pouzdan. Prijenos poruka uključuje provjeru integriteta (koristeći MAC).

Karakteristike FTPS-a

Postoje dvije implementacije FTPS-a koje koriste različite metode obezbjeđenja sigurnosti:

  • Implicitna metoda uključuje korištenje standardnog SSL protokola za uspostavljanje sesije prije slanja podataka, što zauzvrat narušava kompatibilnost sa redovnim FTP klijentima i serverima. Za kompatibilnost unazad sa klijentima koji ne podržavaju FTPS, za kontrolnu vezu se koristi TCP port 990, a za prenos podataka 989. Ovo zadržava standardni port 21 za FTP protokol. Ova metoda se smatra zastarjelom.
  • Eksplicitno je mnogo praktičnije, jer koristi standardne FTP komande, ali šifrira podatke kada odgovara, što vam omogućava da koristite istu kontrolnu vezu i za FTP i za FTPS. Klijent mora eksplicitno zatražiti siguran prijenos podataka sa servera, a zatim odobriti metod šifriranja. Ako klijent ne zatraži siguran prijenos, FTPS server ima pravo da održi ili zatvori nezaštićenu vezu. Mehanizam pregovaranja o autentifikaciji i sigurnosti podataka dodat je pod RFC 2228 koji uključuje novu FTP AUTH naredbu. Iako ovaj standard eksplicitno ne definira sigurnosne mehanizme, on specificira da sigurnu vezu mora pokrenuti klijent koristeći algoritam opisan gore. Ako server ne podržava sigurne veze, trebalo bi da se vrati šifra greške 504. FTPS klijenti mogu dobiti informacije o sigurnosnim protokolima koje server podržava pomoću FEAT naredbe, međutim, server nije dužan otkriti na kojim nivoima sigurnosti ima podržava. Najčešće FTPS komande su AUTH TLS i AUTH SSL, koje pružaju TLS i SSL sigurnost, respektivno.

SFTP

SFTP (Secure File Transfer Protocol) je protokol za prijenos datoteka na sloju aplikacije koji radi na vrhu sigurnog kanala. Ne treba se brkati sa (Simple File Transfer Protocol), koji ima istu skraćenicu. Ako je FTPS samo proširenje FTP-a, onda je SFTP poseban 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, već se počela aktivno koristiti za razvoj aplikacija. Nakon toga je objavljeno šest verzija protokola. Međutim, postepeno povećanje funkcionalnosti u njemu dovelo je do toga da je 14. avgusta 2006. godine odlučeno da se prekine rad na razvoju protokola zbog završetka glavnog zadatka projekta (razvoj SSH) i nedostatka dovoljnog stručnog nivoa da se pređe na razvoj punopravnog protokola udaljenog sistema datoteka.

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

SSH vam omogućava siguran prijenos gotovo bilo kojeg drugog mrežnog protokola u nesigurnom okruženju. Dakle, ne možete samo raditi na daljinu na svom računaru preko komandne 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. istraživač Tatu Ulonen sa Tehnološkog univerziteta u Helsinkiju (Finska). SSH-1 je napisan da pruži veću privatnost od rlogin, telnet i rsh protokola. 1996. godine razvijena je sigurnija verzija protokola, SSH-2, koja nije kompatibilna sa SSH-1. Protokol je stekao još veću popularnost i do 2000. godine imao je oko dva miliona korisnika. Trenutno, izraz “SSH” obično znači SSH-2, jer Prva verzija protokola se sada praktički ne koristi zbog značajnih nedostataka. Protokol je 2006. godine odobrila radna grupa IETF-a kao Internet standard.

Postoje dvije uobičajene implementacije SSH-a: privatna komercijalna i besplatna open source. Besplatna implementacija se zove OpenSSH. Do 2006. godine, 80% računara na Internetu koristilo je OpenSSH. Vlasnička implementacija je razvijena od strane SSH Communications Security, podružnice u potpunom vlasništvu Tectia Corporation, i besplatna je za nekomercijalnu upotrebu. Ove implementacije sadrže gotovo isti skup naredbi.

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

Kako bi spriječio napade čovjeka u sredini prilikom povezivanja na host čiji ključ klijentu još nije poznat, klijentski softver pokazuje korisniku „otisak prsta ključa“. Preporučljivo je da pažljivo provjerite „snimku ključa“ koju prikazuje klijentski softver sa snimkom ključa servera, po mogućnosti dobivenom putem pouzdanih komunikacijskih kanala ili lično.

SSH podrška je dostupna na svim sistemima sličnim UNIX-u, a većina ima ssh klijenta i servera kao standardne uslužne programe. Postoji mnogo implementacija SSH klijenata za ne-UNIX OS. Protokol je stekao veliku popularnost nakon širokog razvoja analizatora saobraćaja i metoda za ometanje rada lokalnih mreža, kao alternativno rješenje nesigurnom Telnet protokolu za upravljanje važnim čvorovima.

Komunikacija koristeći SSH

Za rad preko SSH-a potreban vam je SSH server i SSH klijent. Server osluškuje veze sa klijentskih mašina i, kada se veza uspostavi, vrši autentifikaciju, nakon čega počinje da servisira klijenta. Klijent se koristi za prijavu na udaljenu mašinu i izvršavanje komandi.

SFTP i FTPS protokoli

Poređenje sa 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 informacije.

I FTPS i SFTP protokoli koriste kombinaciju asimetričnih algoritama (RSA, DSA), simetričnih algoritama (DES/3DES, AES, Twhofish, itd.), kao i algoritma 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 vlasničkom certifikatu. Ove informacije omogućavaju, 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 pohranjuje zasebno). Ne sadrži nikakve podatke o vlasniku ključa. Neke SSH implementacije koriste X.509 certifikate za autentifikaciju, ali one zapravo ne verificiraju cijeli lanac certifikata – koristi se samo javni ključ (što takvu autentifikaciju čini nekompletnom).

zaključak

FTP protokol nesumnjivo još uvijek igra važnu ulogu u pohranjivanju i distribuciji informacija na mreži uprkos svojoj vrijednoj starosti. To je zgodan, višenamjenski i standardizirani protokol. Na njegovoj osnovi su izgrađene mnoge arhive bez kojih tehnički rad ne bi bio tako efikasan. Osim toga, lako se postavlja, a serverski i klijentski programi postoje za skoro sve aktuelne i ne tako aktuelne platforme.

Zauzvrat, njegove zaštićene verzije rješavaju problem povjerljivosti pohranjenih i prenesenih podataka u modernom 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, posebno ako je klasični FTP već korišten. SFTP je manje uobičajen zbog svoje nekompatibilnosti sa starim protokolom, ali je sigurniji i ima više funkcionalnosti, budući da je dio sistema za daljinsko upravljanje.

Spisak izvora

izvor: www.habr.com

Dodajte komentar