Predgovor
Doslovno prije tjedan dana pisao sam referat na temu označenu u naslovu i naišao na to da, blago rečeno, nije bilo puno informacija koje bi se mogle smatrati edukativnima. Uglavnom su to suhe činjenice i upute za konfiguraciju. Stoga sam odlučio malo prilagoditi 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 protokola u Ethernetu. Pojavio se 1971. godine i prvotno 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 definira sljedeće:
- Na koji način će se provoditi provjera pogrešaka
- Metoda pakiranja podataka (ako se pakiranje koristi)
- Kako pošiljateljski uređaj obavještava da je završio poruku
- Kako uređaj za prijem obavještava da je primio poruku
Interakcija između klijenta i poslužitelja
Pogledajmo detaljnije procese koji se odvijaju tijekom rada FTP-a. Povezivanje inicira korisnički protokol. Upravljanje razmjenom vrši se putem kontrolnog kanala u TELNET standardu. FTP naredbe generira korisnički protokol i šalje ih poslužitelju. Odgovori poslužitelja također se šalju korisniku putem kontrolnog kanala. U općem slučaju, korisnik ima mogućnost uspostaviti kontakt s protokolom poslužitelja i sredstvima različitim od korisničkog protokola.
Glavna značajka FTP-a je ta što koristi dvostruku vezu. Jedna se koristi za slanje naredbi poslužitelju i odvija se prema zadanim postavkama preko TCP porta 21, koji se može izmijeniti. Kontrolna veza postoji cijelo vrijeme dok klijent komunicira s poslužiteljem. Kontrolni kanal mora biti otvoren tijekom prijenosa podataka između računala. Ako se zatvori, prijenos podataka prestaje. Druga veza se koristi za izravni prijenos podataka. Otvara se svaki put kada se prenosi datoteka između klijenta i poslužitelja. Ako se istovremeno prenosi više datoteka, za svaku se otvara svoj kanal prijenosa.
FTP lahko deluje v aktivnem ali pasivnem načinu, kar vpliva na način vzpostavitve povezave. V aktivnem načinu odjemalec vzpostavi nadzorno TCP-povezavo s strežnikom in strežniku pošlje svojo IP-naslov in naključna številko odjemalskega vrat, nato pa čaka, da strežnik vzpostavi TCP-povezavo na tej naslovu in številki vrat. Če je odjemalec za požarnim zidom in ne more sprejeti vhodne TCP-povezave, lahko uporabimo pasivni način. V tem načinu odjemalec uporablja nadzorni tok, da strežniku pošlje ukaz PASV, nato pa prejme od strežnika njegov IP-naslov in številko vrat, ki jih nato uporabi odjemalec za odprtje podatkovnega toka s svojega naključnega vrata.
Lahko se zgodi, da se podatki prenašajo na tretjo napravo. V tem primeru uporabnik vzpostavi nadzorni kanal z dvema strežnikoma in vzpostavi neposreden podatkovni kanal med njima. Nadzorni ukazi gredo skozi uporabnika, podatki pa neposredno med strežniki.
Pri prenosu podatkov po omrežju se lahko uporabljajo štiri predstavitve podatkov:
- ASCII – uporablja se za besedilo. Podatki se, če je potrebno, pred prenosom pretvorijo iz znakovne predstavitve na pošiljajočem gostitelju v "osembitni ASCII", in (spet, če je potrebno) v znakovno predstavitev prejemajočega gostitelja. Še posebej se spremenijo znaki za prelom vrstice. Posledično ta način ni primeren za datoteke, ki ne vsebujejo le običajnega besedila.
- Binarni način – naprava pošiljatelj pošlje vsak datoteko bajt za bajtom, prejemnik pa shranjuje tok bajtov ob prejemu. Podpora za ta način je bila priporočena za vse izvedbe FTP.
- EBCDIC – uporablja se za prenos običajnega besedila med gostitelji v kodiranju EBCDIC. V ostalem je ta način podoben ASCII načinom.
- Lokalni način – omogoča dvema računalnikoma z identičnimi nastavitvami, da pošiljata podatke v svoji lastni obliki brez pretvorbe v ASCII.
Prenos podatkov se lahko izvaja v kateremkoli od treh načinov:
- Tokovni način – podatki se pošiljajo v obliki neprekinjenega toka, kar sprosti FTP od kakršnekoli obdelave. Namesto tega se vsa obdelava izvede preko TCP. Indikator konca datoteke ni potreben, razen pri razdelitvi podatkov na zapise.
- Blokovni način – FTP razbija podatke na nekoliko blokova (blok zaglavlja, količina bajtova, polje podataka) i zatim ih šalje putem TCP-a.
- Način kompresije – podaci se kompresuju jedinstvenim algoritmom (obično kodiranjem dužina serija).
FTP server – to je server koji omogućava korišćenje protokola za prenos fajlova. On ima određene karakteristike koje ga razlikuju od običnih web servera:
- Potrebna je autentifikacija korisnika
- Sve operacije se obavljaju u okviru trenutne sesije
- Mogućnost izvršavanja različitih radnji sa fajl sistemom
- Koristi se poseban kanal za svaku vezu
FTP klijent – to je program koji omogućava povezivanje na udaljeni server putem FTP-a i takođe izvršavanje potrebnih radnji sa elementima fajl sistema. Klijent može biti web pretraživač, u čiju adresnu traku treba uneti adresu koja predstavlja put do određenog direktorijuma ili fajla na udaljenom serveru, u skladu sa opštom blok-shemom URL:
ftp://user:pass@address:port/directory/file
Međutim, korišćenje web pretraživača u takvom kontekstu omogućava samo pregled ili preuzimanje interesantnih fajlova. Da bi se u potpunosti iskoristile sve prednosti FTP-a, kao klijent treba koristiti specijalizovani softver.
FTP autentifikacija koristi šemu korisničko ime/lozinka za pružanje pristupa. Korisničko ime se šalje serveru komandom USER, a lozinka – komandom PASS. Ako server prihvati informacije koje je klijent dostavio, server šalje klijentu pozivnicu i počinje sesija. Korisnici mogu, ako server podržava ovu karakteristiku, da se prijave bez pružanja akreditiva, ali server može obezbediti samo ograničen pristup za takve sesije.
Host koji pruža FTP uslugu može omogućiti anonimni pristup FTP-u. Korisnici se obično prijavljuju kao „anonymous“ (može biti osetljivo na velika/slova na nekim FTP serverima) kao korisničko ime. Iako se obično traži od korisnika da pošalju adresu svoje elektronske pošte umesto lozinke, zapravo se ne vrši nikakva provera. Mnogi FTP hostovi koji pružaju ažuriranja softvera podržavaju anonimni pristup.
Šema protokola
Interakcija „klijent-server“ pri FTP konekciji može se vizuelno predstaviti na sledeći način:

Siguran FTP
FTP prvobitno nije bio zamišljen kao zaštićen, pošto je bio namenjen komunikaciji između nekoliko vojnih objekata i institucija. Međutim, sa razvojem i širenjem interneta opasnost od neovlašćenog pristupa je značajno porasla. Pojavila se potreba za zaštitom servera od raznih napada. U maju 1999. autori RFC 2577 su saželi ranjivosti u sledeći spisak problema:
- Skrivene napade (bounce attacks)
- Spoof napadi (spoof attacks)
- Napadi metodom „brute force“ (brute force attacks)
- Presretanje paketa, sniffing (packet capture, sniffing)
- Zarobljavanje portova (port stealing)
Obični FTP nema mogućnost prenosa podataka u šifrovanom obliku, zbog čega korisnička imena, lozinke, komande i druge informacije lako mogu biti presretnute od strane napadača. Uobičajeno rešenje ovog problema je korišćenje „bezbednih“, TLS-zaštićenih verzija ranjivog protokola (FTPS) ili drugog, sigurnijeg protokola, poput SFTP/SCP, koji se obezbeđuje sa većinom implementacija protokola Secure Shell.
FTPS
FTPS (FTP + SSL) – proširenje standardnog protokola prenosa datoteka, koje dodaje šifrovane sesije koristeći SSL (Secure Sockets Layer — nivo zaštićenih soketa). Danas se zaštita obezbeđuje njegovim naprednijim ekvivalentom TLS (Transport Layer Security — zaštita transportnog nivoa).
SSL
SSL protokol je predložila kompanija Netscape Communications 1996. godine sa ciljem obezbeđivanja bezbednosti i poverljivosti internet konekcija. Protokol podržava autentikaciju (potvrdu identiteta) klijenta i servera, nezavistan je od aplikacija i transparentan je za protokole HTTP, FTP i Telnet.
SSL Handshake protokol se sastoji od dva koraka: potvrda identiteta servera i neobavezna potvrda identiteta klijenta. U prvom koraku, server u odgovoru na zahtev klijenta šalje svoj sertifikat i parametre šifrovanja. Zatim klijent generiše glavnu šifru, šifruje je javnim ključem servera i šalje serveru. Server dešifruje glavnu šifru svojim privatnim ključem i potvrđuje svoj identitet klijentu, vraćajući mu poruku potpisanu glavnom šifrom klijenta.
Naslednji podatki so šifrirani in overjeni z ključi, pridobljenimi na podlagi tega ključnega mojstra. V drugem koraku, ki ni obvezen, strežnik pošlje zahtevek odjemalcu, odjemalec pa strežniku potrdi svojo identiteto, ko vrne zahtevek z lastnim digitalnim podpisom in certifikatom javnega ključa.
SSL podpira različne kriptografske algoritme. Med vzpostavljanjem povezave se uporablja kriptografski sistem z javnim ključem RSA. Po izmenjavi ključev se uporablja različne šifre: RC2, RC4, IDEA, DES in TripleDES. Uporablja se tudi MD5 — algoritem za ustvarjanje povzetkov sporočil. Sintaksa certifikatov javnega ključa je opisano v X.509.
Ena izmed pomembnih prednosti SSL je njegova popolna neodvisnost od programske opreme in platforme. Protokol je zasnovan na načelih prenosljivosti in ideologija njegove gradnje ni odvisna od aplikacij, v okviru katerih se uporablja. Poleg tega je pomembno, da se lahko nad SSL protokol prosojno naložijo drugi protokoli; bodisi za dodatno povečanje stopnje zaščite ciljnih informacijskih tokov, bodisi za prilagoditev kriptografskih sposobnosti SSL specifični nalogi.
SSL povezava

Nudeni SSL varni kanal ima tri osnovne 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 del dialoga je vedno overjen, medtem ko je overitev odjemalca opcijska.
- Kanal je zanesljiv. Prenos sporočil vključuje preverjanje celovitosti (z uporabo MAC).
Lastnosti FTPS
Obstajata dve izvedbi FTPS, ki uporabljata različne metode zagotavljanja varnosti:
- Neposredna metoda predvideva uporabo standardnega protokola SSL z vzpostavitvijo seje pred prenosom podatkov, kar pa povzroči nezdružljivost s klasičnimi FTP odjemalci in strežniki. Za povratno združljivost z odjemalci, ki ne podpirajo FTPS, se uporablja TCP-port 990 za kontrolno povezavo in 989 za prenos podatkov. To omogoča ohranitev standardnega porta 21 za protokol FTP. Ta metoda je bila priznana za zastarelo.
- FTPS je znatno pohodniji jer koristi standardne FTP komande, ali šifruje podatke prilikom odgovora, što omogućava korišćenje iste upravljačke veze i za FTP i za FTPS. Klijent mora eksplicitno da zatraži sigurni prenos podataka od servera, a zatim odobriti način šifrovanja. Ako klijent ne zatraži siguran prenos, FTPS server ima pravo da ili zadrži ili prekine nezaštićenu vezu. Mehanizam za usklađivanje identiteta i zaštite podataka dodat je pod RFC 2228, koji uključuje novu FTP komandu AUTH. Iako ovaj standard ne definiše jasno mehanizme zaštite, on definiše da sigurno povezivanje mora da inicira klijent pomoću gore opisanog algoritma. Ako server ne podržava sigurne veze, treba da se vrati kod greške 504. FTPS klijenti mogu dobiti informacije o podržanim protokolima zaštite servera pomoću komande FEAT, međutim server nije obavezan da otkriva koje nivoe sigurnosti podržava. Najčešće korišćene FTPS komande su AUTH TLS i AUTH SSL, koje pružaju zaštitu TLS i SSL, redom.
SFTP
SFTP (Secure File Transfer Protocol) je protokol aplikacionog nivoa za prenos datoteka koji funkcioniše preko sigurnog kanala. Ne treba ga mešati sa (Simple File Transfer Protocol), koji ima istu skraćenicu. Dok je FTPS samo proširenje FTP-a, SFTP je odvojen i nije u vezi s njim, jer kao osnovu koristi SSH (Secure Shell – sigurnu ljusku).
Secure Shell
Razvojem protokola bavila se jedna od grupa IETF pod nazivom Secsh. Radna dokumentacija za novi protokol SFTP nije postala zvanični standard, ali je počela aktivno da se koristi za razvoj aplikacija. U budućnosti je objavljeno šest verzija protokola. Međutim, postepeno povećanje funkcionalnosti dovelo je do odluke 14. avgusta 2006. godine o prekidu rada na razvoju protokola, zbog ispunjenja osnovnog zadatka projekta (razvoj SSH) i nedostatka dovoljnog nivoa stručnosti za prelazak na razvoj kompletnog protokola za udaljeni filesistem.
SSH je mrežni protokol koji omogućava udaljeno upravljanje operativnim sustavom i tuneliranje TCP veza (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 prenesene lozinke. SSH omogućuje odabir različitih šifriranja. SSH klijenti i SSH serveri dostupni su za većinu mrežnih operativnih sustava.
SSH omogućava sigurno prenošenje bilo kojeg drugog mrežnog protokola u nezaštićenoj sredini. Tako je moguće ne samo udaljeno raditi na računalu putem naredbenog retka, već i prenositi audio ili video stream (na primjer, s web kamere) preko šifriranog kanala. Također, SSH može koristiti kompresiju prenesenih podataka prije njihove šifriranja, što je praktično, primjerice, za udaljeno pokretanje X Window System klijenata.
Prva verzija protokola, SSH-1, razvijena je 1995. godine od strane istraživača Tatu Ulonena s Tehnološkog sveučilišta u Helsinkiju (Finska). SSH-1 je napisan kako bi se osigurao veći stupanj povjerljivosti od protokola rlogin, telnet i rsh. Godine 1996. razvijena je sigurnija verzija protokola, SSH-2, koja nije bila kompatibilna sa SSH-1. Protokol je stekao još veću popularnost i do 2000. godine je imao oko dva milijuna korisnika. Trenutno se pod pojmom "SSH" obično podrazumijeva upravo SSH-2, jer se prva verzija protokola zbog ozbiljnih nedostataka trenutno gotovo ne koristi. Godine 2006. protokol je odobren od strane radne skupine IETF kao internetski standard.
Postoje dvije verzije SSH: privatna komercijalna i besplatna slobodna. Slobodna verzija se zove OpenSSH. Do 2006. godine 80 % računala na internetu koristilo je upravo OpenSSH. Privatnu verziju razvija organizacija SSH Communications Security koja je 100 % poduzeće korporacije Tectia, a besplatna je za nekomercijalnu upotrebu. Ove verzije uključuju gotovo identičan skup naredbi.
Protokol SSH-2, za razliko od protokola telnet, je odporen na napade prisluškovanja prometa („snifing“), vendar ni odporen na napade „moški v sredini“. Protokol SSH-2 je prav tako odporen na napade, ki vključujejo prevzemanje seje (angleško session hijacking), saj se ni mogoče povezati v že vzpostavljeno sejo ali jo prestreči.
Za preprečevanje napadov „moški v sredini“ pri povezovanju s strežnikom, katerega ključ stranka še ne pozna, odjemalska programska oprema pokaže uporabniku „otisk ključa“ (angleško key fingerprint). Priporočljivo je, da natančno preverite prikazani otisak ključa s strežniškim otiskom ključa, idealno pridobljenim preko zanesljivih komunikacijskih kanalov ali osebno.
Podpora za SSH je implementirana v vseh sistemih, podobnih UNIX-u, in večina izmed njih vključuje standardne pripomočke, kot sta odjemalec in strežnik ssh. Obstaja veliko implementacij SSH-odjemalcev tudi za ne-UNIX operacijske sisteme. Protokol je pridobil veliko priljubljenost po širši uporabi analizatorjev prometa in metod za kršenje delovanja lokalnih omrežij, kot alternativna rešitev za obvladovanje pomembnih vozlišč, ki ni varna, protokolu Telnet.
Povezava z uporabo SSH
Za delo preko SSH potrebujete SSH-strežnik in SSH-odjemalec. Strežnik posluša povezave iz odjemalskih naprav in ob vzpostavitvi povezave izvede avtentikacijo, po kateri začne obravnavati stranko. Odjemalec se uporablja za prijavo na oddaljen stroj in izvajanje ukazov.

Primerjava s FTPS
Glavna stvar, ki SFTP loči od standardnega FTP in FTPS, je ta, da SFTP šifrira vse ukaze, uporabniška imena, gesla in druge zaupne informacije.
Oba protokola FTPS in SFTP uporabljata kombinacijo asimetričnih algoritmov (RSA, DSA), simetričnih algoritmov (DES/3DES, AES, Twhofish itd.), prav tako pa tudi algoritme za izmenjavo ključev. Za avtentikacijo FTPS (ali, natančneje, SSL/TLS po protokolu FTP) uporablja certifikate X.509, medtem ko SFTP (SSH protokol) uporablja SSH ključe.
Certifikati X.509 vključujejo javni ključ in določene informacije o lastniku certifikata. Te informacije omogočajo, da se z druge strani preveri celovitost samega certifikata, avtentičnost in lastnika potrdila. Certifikati X.509 imajo ustrezen zasebni ključ, ki se običajno hrani ločeno od certifikata zaradi varnostnih razlogov.
SSH ključ vsebuje le javni ključ (ustrezni zasebni ključ pa je shranjen ločeno). V njem ni nobenih informacij o lastniku ključa. Nekatere SSH implementacije uporabljajo X.509 certifikate za avtentikacijo, vendar v resnici ne preverjajo celotne verige certifikatov — uporablja se le javni ključ (kar tovrstno preverjanje avtentikacije naredi nepopolno).
Zaključek
Protokol FTP brez dvoma še vedno igra pomembno vlogo pri shranjevanju in distribuciji informacij v omrežju, kljub svoji dolgi zgodovini. To je priročen, večnamenski in standardiziran protokol. Na njegovi osnovi je zgrajen številne datotečne arhive, brez katerih tehnično delo ne bi bilo tako učinkovito. Poleg tega ga je enostavno nastaviti, programski strežniki in odjemalci pa obstajajo skoraj za vse pomembne in manj pomembne platforme.
Njegove zaščitene različice pa rešujejo težavo zasebnosti shranjenih in prenesenih podatkov v sodobnem svetu. Obe novi protokoli imata svoje prednosti in slabosti ter opravljata nekoliko različne vloge. Na tistih področjih, kjer je potreben prav datotečni arhiv, je priporočljivo uporabljati FTPS, še posebej, če je bil prej uporabljen klasični FTP. SFTP je manj razširjen zaradi svoje nezdružljivosti s starim protokolom, je pa bolj zaščiten in ponuja več funkcionalnosti, saj je del sistema oddaljenega upravljanja.
Spisak izvora.
Izvor: habr.com
