Eessõna
Tõepoolest, ma kirjutasin nädala tagasi referaadi pealkirjas mainitud teemal ja avastasin, et harivaid andmeid veebis ei ole just palju. Peamiselt leidub kuivi fakte ja seadistamisjuhiseid. Seetõttu otsustasin teksti veidi kohandada ja avaldada selle artiklina.
Mis on FTP
FTP (File Transfer Protocol) on failide edastamise protokoll, mis töötab üle võrgu. See on üks Etherneti põhiprotokollidest. See ilmus 1971. aastal ja töötas algselt DARPA võrkudes. Praegu põhineb failiedastus, nagu ka HTTP, TCP/IP protokollide kogumil (Transmission Control Protocol/Internet Protocol). Määratletud RFC 959-s.
Protokoll määratleb järgmised aspektid:
- Kuidas viiakse läbi veaparandus
- Andmete pakkimise meetod (kui pakkimist kasutatakse)
- Kuidas saatv seade teatab, et ta on sõnumi saatmise lõpetanud
- Kuidas vastuvõttev seade teatab, et ta on sõnumi saanud
Suhtlemine kliendi ja serveri vahel
Uurime FTP-protsesside toimimist lähemalt. Ühendus algatatakse kasutaja protokolli tõlgendaja poolt. Andmevahetuse haldamine toimub juhtimiskanali kaudu, mis vastab TELNET-ile. FTP-käsud genereeritakse kasutaja protokolli tõlgendaja poolt ja edastatakse serverile. Serveri vastused saadetakse kasutajale samuti juhtimiskanali kaudu. Üldiselt on kasutajal võimalus luua kontakt serveri protokolli tõlgendajaga, kasutades erinevaid vahendeid kui kasutaja tõlgendaja.
FTP peamine omadus on topeltühenduse kasutamine. Üks neist on serveriga käskude edastamiseks ja see toimub vaikimisi TCP-port 21 kaudu, mida saab muuta. Juhtimisühendus on avatud seni, kuni klient suhtleb serveriga. Juhtimiskanali peab olema avatud andmete edastamiseks masinate vahel. Kui see suletakse, peatub andmete edastamine. Teise kaudu toimub otsene andmete edastamine. See avatakse iga kord, kui faili edastatakse kliendi ja serveri vahel. Kui edastatakse korraga mitu faili, avatakse igaühe jaoks oma edastuskanal.
FTP võib töötada aktiivses või passiivses režiimis, millest sõltub ühenduse loomise viis. Aktiivses režiimis loob klient juhtimistee TCP-ühenduse serveriga ja saadab serverile oma IP-aadressi ning suvalise kliendi pordi numbri, seejärel ootab, kuni server käivitab TCP-ühenduse selle aadressi ja pordi numbriga. Kui klient asub tulemüüri taga ja ei saa siseneda TCP-ühendust, võib kasutada passiivset režiimi. Selles režiimis kasutab klient juhtimisvoogu, et saata serverile käsk PASV, ja seejärel saab serverilt selle IP-aadressi ja pordi numbri, mida klient kasutab oma suvaliselt portilt andmevoo avamiseks.
On võimalik, et andmeid võidakse edastada kolmandasse masinasse. Selles olukorras loob kasutaja juhtimistee kahe serveriga ja organiseerib nende vahel otsekoha andmete edastamise. Juhtimiskäsklused kulgevad kasutaja kaudu, samas kui andmed edastatakse otse serverite vahel.
Andmete edastamisel võrgus võivad olla kasutusel neli andmete esitlemise vormi:
- ASCII – kasutatakse teksti jaoks. Andmed, kui vajalik, konverteeritakse enne saatmist sümbolite esitust saatjahostis 'kaheksabitiseks ASCII' ja (taas, kui vajalik) sümbolite esituseks vastuvõtja hostis. Eelkõige muudetakse reavahetuse sümboleid. Seetõttu ei sobi see režiim failide jaoks, mis sisaldavad mitte ainult tavalist teksti.
- Binaarne režiim – saatmise seade saadab iga faili baitide kaupa, ja vastuvõtja salvestab baitide voolu vastuvõtmise ajal. Selle režiimi toetamist on soovitatud kõigile FTP rakendustele.
- EBCDIC – kasutatakse tavalise teksti saatmiseks hostide vahel EBCDIC kodeeringus. Muus osas on see režiim sarnane ASCII-režiimiga.
- Kohalik režiim – võimaldab kahel samade seadetega arvutil saata andmeid oma formaadis ilma ASCII-ks konverteerimiseta.
Andmete edastamine võib toimuda ühes kolmest režiimist:
- Voogesitusrežiim – andmed saadetakse pideva voona, vabastades FTP igasugusest töötlemisest. Selle asemel tehakse kogu töötlemine TCP-s. Faili lõpu näidikut ei vajata, välja arvatud andmete jagamiseks salvestusteks.
- Plokirežiim – FTP jagab andmed mitmeks plokiks (plokipealkiri, baitide arv, andmeväli) ja edastab need seejärel TCP-le.
- Kompresseerimise režiim – andmed kompresseeritakse ühtse algoritmi abil (tavaliselt pikkade seeriate kodeerimisega).
FTP server – see on server, mis võimaldab failide edastamise protokolli kasutamist. Sellel on teatud omadused, mis eristavad seda tavalistest veebiserveritest:
- Kasutajate autentimine on vajalik
- Kõik toimingud viiakse läbi praegustes seanssides
- Võimalus teostada erinevaid toiminguid failisüsteemiga
- Iga ühenduse jaoks kasutatakse eraldi kanalit
FTP klient – see on programm, mis võimaldab ühenduda kaugserveriga FTP kaudu ning teha seal vajalikud toimingud failisüsteemi elementidega. Klient võib olla ka brauser, mille aadressiriba tuleb sisestada aadress, mis esindab teed kindla katalooge või faili juurde kaugserveris, vastavalt URL-i üldisele plaanile:
ftp://user:pass@address:port/directory/file
Kuid veebibrauseri kasutamine sellisel viisil võimaldab vaid vaadata või laadida alla huvitavaid faile. Et täielikult ära kasutada FTP kõiki eeliseid, tuleks kliendina kasutada spetsialiseeritud tarkvara.
FTP autentimine kasutab kasutajanime/parooli skeemi ligipääsu saamiseks. Kasutajanimi saadetakse serverile käsuga USER ja parool käsuga PASS. Kui server aktsepteerib kasutaja esitatud teavet, saadab server kliendile kutse ja sessioon algab. Kasutajad võivad, kui server toetab seda omadust, siseneda süsteemi ilma sissetulekuteta, kuid server võib selliste sessioonide jaoks pakkuda vaid piiratud ligipääsu.
FTP-teenust pakkuv host võib anda anonüümse juurdepääsu FTP-le. Kasutajad logivad tavaliselt sisse kui "anonymous" (teatud FTP-serverites võib see olla tähedundlik) kasutajanime. Kuigi tavaliselt palutakse kasutajatel saata oma e-posti aadress parooli asemel, ei toimu tegelikku kontrolli. Paljud FTP-hostid, mis pakuvad tarkvarauuendusi, toetavad anonüümset juurdepääsu.
Protokolli skeem
FTP-ühenduse "klient-server" koostoimet saab visuaalselt esitada järgmiselt:

Turvaline FTP
FTP ei olnud algselt mõeldud turvaliseks, kuna see oli loodud suhtlemiseks mitme sõjaväeobjekti ja asutuse vahel. Kuid interneti arengu ja leviku tõttu on mitteautorisatsiooni oht tõusnud mitmeid kordi. Seetõttu tekkis vajadus kaitsta serve erinevat tüüpi rünnakute eest. Mai 1999. aastal koondasid RFC 2577 autorid haavatavused järgmisesse probleemide nimekirja:
- Peidetud rünnakud (bounce attacks)
- Spoonitud rünnakud (spoof attacks)
- Jõhkrute rünnakud (brute force attacks)
- Pakettide pealtkuulamine (packet capture, sniffing)
- Portide varastamine (port stealing)
Tavaline FTP ei toeta andmete edastamist krüpteeritud vormis, mistõttu võivad kasutajanimesid, paroole, käske ja muud teavet soovikorral kergesti ja lihtsalt kurjategijate poolt pealt kuulata. Tavaline lahendus sellele probleemile on kasutada 'turvalisi', TLS-kaitstud versioone haavatavast protokollist (FTPS) või mõnda muud, turvalisemat protokolli, nagu SFTP/SCP, mis on saadaval enamikus Secure Shelli protokolli rakendustes.
FTPS
FTPS (FTP + SSL) – standardse failide edastamise protokolli täiendamine, mis lisab selle põhifunktsioonidele võime luua krüpteeritud sessioone SSL protokolli (Secure Sockets Layer — turvakatte tasand). Täna tagab kaitse selle täiustatud analoog TLS (Transport Layer Security — transporditase kaitse).
SSL
SSL protokolli pakkus 1996. aastal ettevõte Netscape Communications eesmärgiga tagada internetiühenduste turvalisus ja salajasus. Protokoll toetab kliendi ja serveri autentimist ja ei sõltu rakendustest, olles läbipaistev HTTP, FTP ja Telnet protokollide jaoks.
SSL Handshake protokoll koosneb kahest etapist: serveri autentimine ja valikuline kliendi autentimine. Esimeses etapis saadab server kliendi päringule vastates oma sertifikaadi ja krüpteerimisparameetrid. Seejärel genereerib klient master-võtme, krüpteerib selle serveri avaliku võtmega ja saadab serverile. Server dekodeerib master-võtme oma isikliku võtmega ja kinnitab oma autentimisest kliendile, saates tagasi sõnumi, mis on allkirjastatud kliendi master-võtmega.
Järgnevad andmed krüpteeritakse ja allkirjastatakse selle peamise võtme alusel genereeritud võtmetega. Teisel, mitte kohustuslikul etapil saadab server kliendile päringu ja klient kinnitab serveri autentsuse, saates tagasi päringu koos oma digitaalse allkirjaga ja avaliku võtme sertifikaadiga.
SSL toetab erinevaid krüptograafilisi algoritme. Ühenduse loomise käigus kasutatakse RSA avaliku võtme krüptosüsteemi. Klahvide vahetamise järel kasutatakse palju erinevaid šifreid: RC2, RC4, IDEA, DES ja TripleDES. Samuti kasutatakse MD5 — sõnumite kokkuvõtte loomise algoritmi. Avalike võtmete sertifikaatide süntaks on kirjeldatud X.509-s.
Üks SSL-i olulisemaid eeliseid on selle täielik platvormide ja tarkvarade sõltumatus. Protokoll on välja töötatud ülekantavuse põhimõtete alusel, ja its ülesehituse ideoloogia ei sõltu neist rakendustest, mille osana seda kasutatakse. Lisaks sellele on oluline, et SSL-i protokolli peal võivad olla läbipaistvalt ka teised protokollid, kas sihitud teabevoogude kaitse taseme tõstmiseks või SSL-i krüptograafiliste võimete kohandamiseks mingisuguste teadlike ülesannete jaoks.
SSL-ühendus

Etuudatud SSL-i turvaline kanal omab kolme peamist omadust:
- Kanal on privaatne. Krüpteerimist kasutatakse kõigi sõnumite puhul pärast lihtsat dialooge, mis teenib kindla salajase võtme määratlemiseks.
- Kanal on autentitud. Dialooge serveri pool alati autentitakse, samas kui kliendi pool autentitakse vabatahtlikult.
- Kanal on usaldusväärne. Sõnumite edastamine hõlmab terviklikkuse kontrollimist (kasutades MAC-i).
FTPS-i omadused
FTPS-i on kaks erinevat rakendust, mis kasutavad erinevaid turvameetodeid:
- Varjatud meetod eeldab SSL-protokolli kasutamist sessiooni loomiseks enne andmete saatmist, mis omakorda rikub ühilduvust tavaliste FTP-kliendide ja serveritega. Tagasiulatuva ühilduvuse säilitamiseks klientidega, mis ei toeta FTPS-i, kasutatakse kontrollühenduse jaoks TCP-porti 990 ja andmete edastamiseks 989. See võimaldab säilitada standardporti 21 FTP-protokollile. Seda meetodit peetakse vananenuks.
- Selge FTPS on palju mugavam, kuna see kasutab standardseid FTP käsku, kuid krüpteerib andmed vastuse andmisel, mis võimaldab kasutada sama juhtmeühendust nii FTP kui ka FTPS jaoks. Klient peab serverilt eraldi nõudma kaitstud andmeedastust ning seejärel kinnitama krüpteerimismeetodi. Kui klient ei soovi kaitstud edastust, on FTPS serveril õigus nii edastust säilitada kui ka sulgeda kaitsetu ühendus. Identifitseerimise ja andmete kaitse kokkuleppe mehhanism lisati alljärgneva RFC 2228 kaudu, mis hõlmab uut FTP käsku AUTH. Kuigi see standard ei defineeri selgelt kaitsemehhanisme, määrab see, et kaitstud ühenduse peab algatama klient eelpool kirjeldatud algoritmi abil. Kui server ei toeta kaitstud ühendusi, tuleb tagastada tõrkekood 504. FTPS kliendid saavad teavet serveri toetatavate kaitseprotokollide kohta FEAT käsku abil, kuid server ei ole kohustatud avalikustama, millised turvatasemed ta toetab. Kõige levinumad FTPS käsud on AUTH TLS ja AUTH SSL, mis pakuvad vastavalt TLS ja SSL kaitset.
SFTP
SFTP (Secure File Transfer Protocol) – failide edastamise rakendusprotokoll, mis töötab turvalise kanali kohal. Seda ei tohi segi ajada (Simple File Transfer Protocol), millel on sama akronüüm. Kui FTPS on lihtsalt FTP laiendus, siis SFTP on eraldi ja sellega mitte seotud protokoll, mis põhineb SSH-l (Secure Shell – turvaline kest).
Secure Shell
Protokolli arendamisega tegeles üks IETF-i rühm nimega Secsh. Uue SFTP protokolli töödokumentatsioon ei saanud ametlikuks standardiks, kuid hakati seda aktiivselt kasutama rakenduste arendamiseks. Edasi on välja antud kuus versiooni protokollist. Siiski, selle funktsionaalsuse järkjärguline suurenemine viis selleni, et 14. augustil 2006 tehti otsus protokolli arendamise lõpetada, kuna projekti põhieesmärk (SSH arendamine) oli saavutatud ning puudus piisav eksperditase, et liikuda täieõigusliku kaugfailisüsteemi protokolli arendamise juurde.
SSH on võrguprotokoll, mis võimaldab kaugjuhtimist operatsioonisüsteemis ja TCP-ühenduste tunnelimist (näiteks failide edastamiseks). See on funktsionaalsuse poolest sarnane Telneti ja rlogin protokollidega, kuid erinevalt neist krüpteerib kogu liikluse, sealhulgas edastatavad paroolid. SSH võimaldab erinevate krüpteerimisalgoritmide valimist. SSH-kliendid ja SSH-serverid on saadaval enamikule võrgukeskkondadele.
SSH võimaldab turvaliselt edastada peaaegu igasuguseid teisi võrguprotokolle kaitsmata keskkonnas. Seega on võimalik mitte ainult töötada kaugel arvutis käsurida kaudu, vaid edastada krüpteeritud kanali kaudu ka heli- või videovoogu (näiteks veebikaamerast). SSH suudab kasutada edastatava teabe tihendamist, et hiljem seda krüpteerida, mis on mugav näiteks X WindowSystemi klientide kaugkäivitamiseks.
Protokolli esimene versioon, SSH-1, töötati välja 1995. aastal Tatu Uljõe poolt Helsingi Tehnikaülikoolist (Soome). SSH-1 kirjutati suurema privaatsuse tagamiseks kui rlogin, telnet ja rsh protokollid. 1996. aastal töötati välja turvalisem protokolliversioon, SSH-2, mis ei ole ühilduv SSH-1-ga. Protokoll sai veelgi populaarsemaks ja 2000. aastaks oli sellel umbes kaks miljonit kasutajat. Täna mõistetakse termini „SSH” all enamasti just SSH-2, kuna esimesel versioonil on tõsiste puuduste tõttu peaaegu enam ei kasutata. 2006. aastal kehtestas protokolli IETF-i töörühm Interneti-standardina.
SSH-lahendused on laialdaselt levitatud: on olemas kommertslik ja tasuta avatud versioon. Tasuta versioon on tuntud kui OpenSSH. Aastal 2006 kasutas 80% interneti arvutitest just OpenSSH-d. Kommertslikult arendab SSH Communications Security, mis on Tectia korporatsiooni täielikult omanduses, ning see on tasuta mitteäriliseks kasutamiseks. Need lahendused sisaldavad praktiliselt identset käsukomplekti.
Protokoll SSH-2 on võrreldes telnet-protokolliga vastupidav liikluse pealtkuulamise rünnakutele („sniffing“), kuid on haavatav „mees keset teed“ rünnakute suhtes. Protokoll SSH-2 on samuti kaitstud seansihüppamise rünnakute vastu, kuna ei ole võimalik liituda juba loodud seansiga ega selle üle võtta.
Et kaitsta end „mees keset teed“ rünnakute eest hostiga ühenduse loomisel, mille võti ei ole kliendile veel teada, näitab klienditarkvara kasutajale „võtme jälje“ („key fingerprint“). Soovitatakse hoolikalt võrrelda klienditarkvara näidatud „võtme jälge“ serveri jäljega, eelistatult usaldusväärsete kommunikatsioonikanalite kaudu või isiklikult.
SSH tugi on saadaval kõigis UNIX-i sarnastes süsteemides ning enamik neist sisaldab standardsetes utiliitides SSH kliendi ja serveri. SSH klientide jaoks on palju erinevaid teostusi, mis on saadaval ka mitte-UNIX-i operatsioonisüsteemides. Protokoll on muutunud populaarseks pärast liiklusanalüsaatorite ja kohalike võrkude tööd häirivate meetodite laialdast arengut, pakkudes alternatiivi ebaturvalisele Telnet-protokollile oluliste sõlmede haldamiseks.
Seos SSH abil
SSH tööks on vajalik SSH-server ja SSH-klient. Server kuulab ühendusi kliendimasinatelt ja autentib need pärast ühenduse loomist, seejärel hakkab ta klienti teenindama. Klient on mõeldud kaugmasinasse sisselogimiseks ja käskude täitmiseks.

Võrdlus FTPS-iga
Peamine erinevus SFTP vahel tavalise FTP ja FTPS-iga on see, et SFTP krüpteerib absoluutselt kõik käsklused, kasutajanimed, paroolid ja muu konfidentsiaalne teave.
Nii FTPS kui SFTP protokollid kasutavad kombinatsiooni asümmeetrilistest algoritmidest (RSA, DSA), sümmeetrilistest algoritmidest (DES/3DES, AES, Twhofish jne) ning ka võtmevahetusalgoritme. FTPS autentimiseks (või kui olla täpsem, SSL/TLS protokolli FTP kaudu) kasutatakse X.509 sertifikaate, samas kui SFTP (SSH protokoll) kasutab SSH võtmeid.
X.509 sertifikaadid sisaldavad avalikku võti ja teavet sertifikaadi omaniku kohta. See teave võimaldab omakorda kontrollida sertifikaadi terviklikkust, autentsust ja omaniku isikut. Igal X.509 sertifikaadil on vastav privaatvõti, mida tavaliselt hoitakse sertifikaadist eraldi turvalisuse kaalutlustel.
SSH võtme sisaldab ainult avalikku võtit (vastav privaatvõti hoitakse eraldi). See ei sisalda mingit teavet võtme omaniku kohta. Mõned SSH rakendused kasutavad autentimiseks X.509 sertifikaate, kuid tegelikult ei kontrollita kogu sertifikaadiketti — kasutusel on vaid avalik võti (mis muudab sellise autentimise mittetäiuslikuks).
Kokkuvõte
FTP-protokoll mängib endiselt olulist rolli teabe salvestamisel ja jagamisel võrgus, hoolimata oma väärikast vanusest. See on mugav, mitmekülgne ja standardiseeritud protokoll. Selle alusel on loodud mitmeid failiarhive, ilma milleta oleks tehniline töö vähem tõhus. Lisaks on see kergesti seadistatav ning serveri- ja kliendiprogramme leidub praktiliselt kõikidele aktuaalsetele ja vähem levinud platvormidele.
Kaitstud versioonid lahendavad omakorda andmete konfidentsiaalsuse probleemid, mis on tänapäeva maailmas äärmiselt olulised. Mõlemal uuel protokollil on oma eelised ja puudused ning nad täidavad veidi erinevaid rolle. Valdkondades, kus on oluline just failiarhiv, on soovitatav kasutada FTPS-i, eriti kui seal on varem juba kasutatud klassikalist FTP-d. SFTP-d kasutatakse vähem, kuna see ei ühildu vana protokolliga, kuid see on turvalisem ja pakub suuremat funktsionaalsust, kuna see on osa kaugjuhtimisseadmest.
Allikate nimekiri
Allikas: habr.com
