Protokola SFTP in FTPS

Predgovor

Ravno pred tednom dni sem pisal esej na temo, navedeno v naslovu, in se soočil z dejstvom, da recimo na internetu ni toliko izobraževalnih informacij. Večinoma suha dejstva in navodila za namestitev. Zato sem se odločil, da malo popravim besedilo in ga objavim kot članek.

Kaj je FTP

FTP (File Transfer Protocol) je protokol za prenos datotek po omrežju. Je eden od osnovnih protokolov Ethernet. Pojavil se je leta 1971 in sprva deloval v omrežjih DARPA. Trenutno tako kot HTTP tudi prenos datotek temelji na modelu, ki ga sestavlja niz protokolov TCP/IP (Transmission Control Protocol/Internet Protocol). Definirano v RFC 959.

Protokol določa naslednje:

  • Kako bo izvedeno preverjanje napak?
  • Način pakiranja podatkov (če se uporablja pakiranje)
  • Kako naprava pošiljateljica sporoči, da je končala sporočilo?
  • Kako sprejemna naprava sporoči, da je prejela sporočilo?

Komunikacija med odjemalcem in strežnikom

Oglejmo si podrobneje procese, ki se zgodijo med delovanjem FTP. Povezavo inicializira uporabnikov tolmač protokola. Izmenjava je nadzorovana preko nadzornega kanala v standardu TELNET. Ukaze FTP generira uporabnikov tolmač protokola in jih pošlje strežniku. Preko nadzornega kanala se uporabniku pošiljajo tudi odgovori strežnika. Na splošno ima uporabnik možnost vzpostaviti stik s tolmačem protokola strežnika in z drugimi sredstvi kot z tolmačem uporabnika.

Glavna značilnost FTP je, da uporablja dvojne povezave. Eden od njih se uporablja za pošiljanje ukazov strežniku in se privzeto pojavi prek vrat TCP 21, ki jih je mogoče spremeniti. Nadzorna povezava obstaja, dokler odjemalec komunicira s strežnikom. Pri prenosu podatkov med stroji mora biti nadzorni kanal odprt. Če je zaprt, se prenos podatkov ustavi. Skozi drugo pride do neposrednega prenosa podatkov. Odpre se vsakič, ko pride do prenosa datoteke med odjemalcem in strežnikom. Če se hkrati prenaša več datotek, vsaka od njih odpre svoj prenosni kanal.

FTP lahko deluje v aktivnem ali pasivnem načinu, katerega izbira določa način vzpostavitve povezave. V aktivnem načinu odjemalec ustvari nadzorno povezavo TCP s strežnikom in strežniku pošlje svoj naslov IP in poljubno številko vrat odjemalca, nato pa počaka, da strežnik vzpostavi povezavo TCP s tem naslovom in številko vrat. Če je odjemalec za požarnim zidom in ne more sprejeti dohodne povezave TCP, se lahko uporabi pasivni način. V tem načinu odjemalec uporablja nadzorni tok za pošiljanje ukaza PASV strežniku, nato pa od strežnika prejme njegov naslov IP in številko vrat, ki ju odjemalec nato uporabi za odpiranje toka podatkov iz svojih poljubnih vrat.

Možno je, da se podatki prenesejo na tretji stroj. V tem primeru uporabnik organizira nadzorni kanal z dvema strežnikoma in organizira neposredni podatkovni kanal med njima. Nadzorni ukazi gredo prek uporabnika, podatki pa neposredno med strežniki.

Pri prenosu podatkov po omrežju je mogoče uporabiti štiri predstavitve podatkov:

  • ASCII – uporablja se za besedilo. Podatki se po potrebi pretvorijo iz predstavitve znakov na gostitelju pošiljatelju v "osem-bitni ASCII" pred prenosom in (ponovno, če je potrebno) v predstavitev znakov na gostitelju prejemniku. Predvsem se spremenijo znaki za novo vrstico. Zaradi tega ta način ni primeren za datoteke, ki vsebujejo več kot le navadno besedilo.
  • Binarni način – naprava pošiljateljica pošilja vsako datoteko bajt za bajtom, prejemnik pa shrani tok bajtov po prejemu. Podpora za ta način je priporočena za vse izvedbe FTP.
  • EBCDIC – uporablja se za prenos navadnega besedila med gostitelji v kodiranju EBCDIC. V nasprotnem primeru je ta način podoben načinu ASCII.
  • Lokalni način - omogoča, da dva računalnika z enakimi nastavitvami pošiljata podatke v svojem formatu brez pretvorbe v ASCII.

Prenos podatkov se lahko izvaja na enega od treh načinov:

  • Pretočni način – podatki se pošiljajo kot neprekinjen tok, s čimer FTP ne izvaja nobene obdelave. Namesto tega vso obdelavo izvaja TCP. Indikator konca datoteke ni potreben, razen za ločevanje podatkov v zapise.
  • Blokovni način - FTP razdeli podatke v več blokov (blok glave, število bajtov, podatkovno polje) in jih nato posreduje TCP-ju.
  • Način stiskanja – podatki so stisnjeni z enim samim algoritmom (običajno s kodiranjem dolžin nizov).

FTP strežnik je strežnik, ki omogoča uporabo protokola za prenos datotek. Ima določene lastnosti, po katerih se razlikuje od običajnih spletnih strežnikov:

  • Zahtevana je avtentikacija uporabnika
  • Vse operacije se izvajajo znotraj trenutne seje
  • Sposobnost izvajanja različnih dejanj z datotečnim sistemom
  • Za vsako povezavo se uporablja ločen kanal

Odjemalec FTP je program, ki vam omogoča povezavo z oddaljenim strežnikom prek FTP in izvajanje potrebnih dejanj na njem z elementi datotečnega sistema. Odjemalec je lahko brskalnik, v naslovno vrstico katerega morate vnesti naslov, ki je pot do določenega imenika ali datoteke na oddaljenem strežniku, v skladu s splošnim blokovnim diagramom URL-jev:

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

Vendar pa vam bo uporaba spletnega brskalnika v tem kontekstu omogočila samo ogled ali prenos datotek, ki vas zanimajo. Če želite v celoti izkoristiti vse prednosti FTP, morate kot odjemalec uporabiti specializirano programsko opremo.

Preverjanje pristnosti FTP za odobritev dostopa uporablja shemo uporabniškega imena/gesla. Uporabniško ime se na strežnik pošlje z ukazom USER, geslo pa z ukazom PASS. Če strežnik sprejme informacije, ki jih posreduje odjemalec, bo strežnik odjemalcu poslal povabilo in seja se začne. Uporabniki se lahko, če strežnik podpira to funkcijo, prijavijo brez posredovanja poverilnic, vendar lahko strežnik odobri samo omejen dostop za takšne seje.

Gostitelj, ki nudi storitev FTP, lahko zagotovi anonimen dostop FTP. Uporabniki se običajno prijavijo z uporabniškim imenom "anonymous" (lahko razlikuje med velikimi in malimi črkami na nekaterih strežnikih FTP). Čeprav se od uporabnikov običajno zahteva, da navedejo svoj e-poštni naslov namesto gesla, se preverjanje dejansko ne izvede. Številni gostitelji FTP, ki zagotavljajo posodobitve programske opreme, podpirajo anonimni dostop.

Diagram protokola

Interakcija med odjemalcem in strežnikom med povezavo FTP je lahko vizualizirana na naslednji način:

Protokola SFTP in FTPS

Varen FTP

FTP prvotno ni bil mišljen kot varen, saj je bil namenjen komunikaciji med več vojaškimi objekti in agencijami. Toda z razvojem in širjenjem interneta se je nevarnost nepooblaščenega dostopa večkrat povečala. Strežnike je bilo treba zaščititi pred različnimi vrstami napadov. Maja 1999 so avtorji RFC 2577 povzeli ranljivosti v naslednji seznam težav:

  • Skriti napadi (bounce napadi)
  • Lažni napadi
  • Napadi s surovo silo
  • Zajem paketa, vohanje
  • Kraja vrat

Navadni FTP nima možnosti prenosa podatkov v šifrirani obliki, zaradi česar lahko napadalci zlahka in preprosto prestrežejo uporabniška imena, gesla, ukaze in druge informacije. Običajna rešitev te težave je uporaba "varnih", s TLS zaščitenih različic ranljivega protokola (FTPS) ali drugega, bolj varnega protokola, kot je SFTP/SCP, ki je na voljo pri večini implementacij protokola Secure Shell.

FTPS

FTPS (FTP + SSL) je razširitev standardnega protokola za prenos datotek, ki osnovni funkcionalnosti doda ustvarjanje šifriranih sej z uporabo protokola SSL (Secure Sockets Layer). Danes zaščito zagotavlja njegov naprednejši analogni TLS (Transport Layer Security).

SSL

Protokol SSL je leta 1996 predlagal Netscape Communications, da bi zagotovil varnost in zasebnost internetnih povezav. Protokol podpira avtentikacijo odjemalca in strežnika, je neodvisen od aplikacije in je pregleden za protokole HTTP, FTP in Telnet.

Protokol SSL Handshake je sestavljen iz dveh stopenj: avtentikacija strežnika in neobvezna avtentikacija odjemalca. Na prvi stopnji se strežnik odzove na zahtevo odjemalca s pošiljanjem potrdila in parametrov šifriranja. Odjemalec nato ustvari glavni ključ, ga šifrira z javnim ključem strežnika in pošlje strežniku. Strežnik dešifrira glavni ključ s svojim zasebnim ključem in se overi odjemalcu tako, da vrne sporočilo, overjeno z glavnim ključem odjemalca.

Nadaljnji podatki so šifrirani in overjeni s ključi, izpeljanimi iz tega glavnega ključa. V drugem koraku, ki je neobvezen, strežnik pošlje zahtevo odjemalcu, ta pa se strežniku avtentikira tako, da vrne zahtevo z lastnim digitalnim podpisom in potrdilom javnega ključa.

SSL podpira različne kriptografske algoritme. Pri vzpostavljanju komunikacije se uporablja kriptosistem javnega ključa RSA. Po izmenjavi ključev se uporabi več različnih šifer: RC2, RC4, IDEA, DES in TripleDES. Uporablja se tudi MD5 - algoritem za izdelavo izvlečka sporočila. Sintaksa za potrdila javnih ključev je opisana v X.509.

Ena od pomembnih prednosti SSL je njegova popolna neodvisnost od programske platforme. Protokol je razvit na principih prenosljivosti, ideologija njegove konstrukcije pa ni odvisna od aplikacij, v katerih se uporablja. Poleg tega je pomembno tudi, da se lahko drugi protokoli transparentno prekrijejo s protokolom SSL; bodisi za dodatno povečanje stopnje zaščite ciljnih informacijskih tokov bodisi za prilagoditev kriptografskih zmogljivosti SSL za kakšno drugo, natančno definirano nalogo.

SSL povezava

Protokola SFTP in FTPS

Varen kanal, ki ga zagotavlja SSL, ima tri glavne lastnosti:

  • Kanal je zaseben. Šifriranje se uporablja za vsa sporočila po preprostem dialogu, ki služi za določitev tajnega ključa.
  • Kanal je overjen. Strežniška stran pogovora je vedno overjena, medtem ko je odjemalska stran izbirno overjena.
  • Kanal je zanesljiv. Prenos sporočil vključuje preverjanje celovitosti (z uporabo MAC).

Značilnosti FTPS

Obstajata dve izvedbi FTPS, ki uporabljata različne metode zagotavljanja varnosti:

  • Implicitna metoda vključuje uporabo standardnega protokola SSL za vzpostavitev seje pred pošiljanjem podatkov, kar posledično prekine združljivost z običajnimi odjemalci in strežniki FTP. Za povratno združljivost z odjemalci, ki ne podpirajo FTPS, se za nadzorno povezavo uporabljajo vrata TCP 990, za prenos podatkov pa 989. To ohranja standardna vrata 21 za protokol FTP. Ta metoda velja za zastarelo.
  • Explicit je veliko bolj priročen, saj uporablja standardne ukaze FTP, vendar šifrira podatke ob odzivu, kar vam omogoča uporabo iste nadzorne povezave za FTP in FTPS. Odjemalec mora izrecno zahtevati varen prenos podatkov s strežnika in nato odobriti način šifriranja. Če odjemalec ne zahteva varnega prenosa, ima strežnik FTPS pravico ohraniti ali prekiniti nezaščiteno povezavo. V okviru RFC 2228 je bil dodan mehanizem za preverjanje pristnosti in pogajanja o varnosti podatkov, ki vključuje nov ukaz FTP AUTH. Čeprav ta standard izrecno ne opredeljuje varnostnih mehanizmov, določa, da mora varno povezavo sprožiti odjemalec z uporabo zgoraj opisanega algoritma. Če strežnik ne podpira varnih povezav, mora biti vrnjena koda napake 504. Odjemalci FTPS lahko z ukazom FEAT pridobijo informacije o varnostnih protokolih, ki jih podpira strežnik, vendar strežniku ni treba razkriti, katere stopnje varnosti ima. podpira. Najpogostejša ukaza FTPS sta AUTH TLS in AUTH SSL, ki zagotavljata varnost TLS oziroma SSL.

SFTP

SFTP (protokol za varen prenos datotek) je protokol za prenos datotek na ravni aplikacije, ki deluje na vrhu varnega kanala. Ne sme se zamenjevati s (Simple File Transfer Protocol), ki ima isto kratico. Če je FTPS preprosto razširitev FTP, potem je SFTP ločen in nepovezan protokol, ki kot osnovo uporablja SSH (Secure Shell).

Secure Shell

Protokol je razvila ena od skupin IETF, imenovana Secsh. Delovna dokumentacija za nov protokol SFTP ni postala uradni standard, ampak se je začela aktivno uporabljati za razvoj aplikacij. Kasneje je bilo izdanih šest različic protokola. Vendar pa je postopno povečevanje funkcionalnosti v njem privedlo do dejstva, da je bilo 14. avgusta 2006 odločeno, da se preneha ukvarjati z razvojem protokola zaradi zaključka glavne naloge projekta (razvoj SSH) in pomanjkanja na zadostni strokovni ravni za prehod na razvoj polnega protokola oddaljenega datotečnega sistema.

SSH je omrežni protokol, ki omogoča daljinsko upravljanje operacijskega sistema in tuneliranje povezav TCP (na primer za prenos datotek). Po funkcionalnosti je podoben protokoloma Telnet in rlogin, vendar za razliko od njiju šifrira ves promet, vključno s prenesenimi gesli. SSH omogoča izbiro različnih algoritmov šifriranja. Odjemalci SSH in strežniki SSH so na voljo za večino omrežnih operacijskih sistemov.

SSH vam omogoča varen prenos skoraj vseh drugih omrežnih protokolov v nezavarovanem okolju. Tako ne morete samo delati na daljavo v računalniku prek ukazne lupine, temveč tudi prenašati zvočni tok ali video (na primer iz spletne kamere) prek šifriranega kanala. SSH lahko uporablja tudi stiskanje prenesenih podatkov za naknadno šifriranje, kar je priročno na primer za oddaljeni zagon odjemalcev X WindowSystem.

Prvo različico protokola SSH-1 je leta 1995 razvil raziskovalec Tatu Ulönen s tehnološke univerze v Helsinkih (Finska). SSH-1 je bil napisan za zagotavljanje večje zasebnosti kot protokoli rlogin, telnet in rsh. Leta 1996 je bila razvita varnejša različica protokola SSH-2, ki ni združljiva s SSH-1. Protokol je pridobil še večjo popularnost in do leta 2000 je imel približno dva milijona uporabnikov. Trenutno izraz "SSH" običajno pomeni SSH-2, ker Prva različica protokola se zdaj praktično ne uporablja zaradi pomembnih pomanjkljivosti. Leta 2006 je delovna skupina IETF potrdila protokol kot internetni standard.

Obstajata dve pogosti izvedbi SSH: zasebna komercialna in brezplačna odprtokodna. Brezplačna izvedba se imenuje OpenSSH. Do leta 2006 je 80 % računalnikov na internetu uporabljalo OpenSSH. Lastniško implementacijo je razvil SSH Communications Security, hčerinska družba v XNUMX-odstotni lasti korporacije Tectia, in je brezplačna za nekomercialno uporabo. Te izvedbe vsebujejo skoraj enak nabor ukazov.

Protokol SSH-2 je za razliko od protokola telnet odporen na napade prisluškovanja prometu (»vohanje«), ni pa odporen na napade človeka v sredini. Protokol SSH-2 je odporen tudi na napade ugrabitve seje, saj se je nemogoče pridružiti ali ugrabiti že vzpostavljeno sejo.

Za preprečitev napadov človeka v sredini pri povezovanju z gostiteljem, katerega ključ odjemalcu še ni znan, odjemalska programska oprema uporabniku prikaže »prstni odtis ključa«. Priporočljivo je, da skrbno preverite »posnetek ključa«, ki ga prikaže odjemalska programska oprema, s posnetkom ključa strežnika, po možnosti pridobljenim prek zanesljivih komunikacijskih kanalov ali osebno.

Podpora za SSH je na voljo v vseh sistemih, podobnih UNIX-u, večina pa ima odjemalca in strežnik ssh kot standardne pripomočke. Obstaja veliko izvedb odjemalcev SSH za operacijske sisteme, ki niso UNIX. Protokol je dobil veliko popularnost po širokem razvoju analizatorjev prometa in metod za motenje delovanja lokalnih omrežij, kot alternativna rešitev nevarnemu protokolu Telnet za upravljanje pomembnih vozlišč.

Komunikacija s pomočjo SSH

Za delo prek SSH potrebujete strežnik SSH in odjemalca SSH. Strežnik posluša povezave iz odjemalskih strojev in, ko je povezava vzpostavljena, izvede avtentikacijo, nato pa začne servisirati odjemalca. Odjemalec se uporablja za prijavo v oddaljeni stroj in izvajanje ukazov.

Protokola SFTP in FTPS

Primerjava s FTPS

Glavna stvar, ki razlikuje SFTP od standardnih FTP in FTPS, je, da SFTP šifrira absolutno vse ukaze, uporabniška imena, gesla in druge zaupne informacije.

Protokola FTPS in SFTP uporabljata kombinacijo asimetričnih algoritmov (RSA, DSA), simetričnih algoritmov (DES/3DES, AES, Twhofish itd.), kot tudi algoritem za izmenjavo ključev. Za avtentikacijo FTPS (ali natančneje SSL/TLS prek FTP) uporablja certifikate X.509, medtem ko SFTP (protokol SSH) uporablja ključe SSH.

Certifikati X.509 vključujejo javni ključ in nekaj informacij o potrdilu lastnika. Ti podatki pa po drugi strani omogočajo preverjanje celovitosti samega certifikata, pristnosti in lastnika certifikata. Potrdila X.509 imajo ustrezen zasebni ključ, ki je zaradi varnosti običajno shranjen ločeno od potrdila.

Ključ SSH vsebuje samo javni ključ (ustrezni zasebni ključ je shranjen posebej). Ne vsebuje podatkov o lastniku ključa. Nekatere izvedbe SSH uporabljajo potrdila X.509 za preverjanje pristnosti, vendar dejansko ne preverjajo celotne verige potrdil – uporablja se samo javni ključ (zaradi česar je takšno preverjanje pristnosti nepopolno).

Zaključek

Protokol FTP kljub svoji častitljivi starosti nedvomno še vedno igra pomembno vlogo pri shranjevanju in distribuciji informacij v omrežju. Je priročen, večnamenski in standardiziran protokol. Na njegovi osnovi je bilo zgrajenih veliko datotečnih arhivov, brez katerih tehnično delo ne bi bilo tako učinkovito. Poleg tega je enostaven za postavitev, strežniški in odjemalski programi pa obstajajo za skoraj vse aktualne in manj aktualne platforme.

Njegove zaščitene različice pa rešujejo problem zaupnosti shranjenih in posredovanih podatkov v sodobnem svetu. Oba nova protokola imata svoje prednosti in slabosti ter imata nekoliko drugačne vloge. Na območjih, kjer je potreben datotečni arhiv, je bolje uporabiti FTPS, še posebej, če je tam že prej uporabljen klasični FTP. SFTP je manj pogost zaradi nezdružljivosti s starim protokolom, vendar je varnejši in ima več funkcionalnosti, saj je del sistema za upravljanje na daljavo.

Seznam virov

Vir: www.habr.com

Dodaj komentar