Eessõna
Täpsemalt nädal tagasi kirjutasin ma referaati pealkirjas mainitud teemal ja sattusin olukorda, kus, olgu öeldud, teaduslikku teavet internetis pole kuigi palju. Peamiselt on teavet vaid kuivad faktid ja seadistamisjuhised. Seetõttu otsustasin teksti veidi kohandada ja avaldada selle artiklina.
Mis on FTP
FTP (File Transfer Protocol) on protokoll failide edastamiseks võrgus. See on üks Etherneti põhiprotokolle. See ilmus 1971. aastal ja töötas algselt DARPA võrkudes. Praegu põhineb failide edastus nagu HTTP TCP/IP protokollide kogumil (Transmission Control Protocol/Internet Protocol). Määratletud RFC 959-s.
Protokoll määrab järgmised punktid:
- Kuidas toimub veateadete kontrollimine
- Andmete pakkimise meetod (kui pakkimist kasutatakse)
- Kuidas saatja seade teatab, et on sõnumi saatmise lõpetanud
- Kuidas vastuvõttev seade teatab, et on sõnumi saanud
Suhtlemine kliendi ja serveri vahel
Vaatame FTP tööprotsesse lähemalt. Ühendus algatatakse kasutaja protokolli tõlgendajaga. Andmevahetuse juhtimine toimub TELNET standardi kaudu juhtimiskanalis. FTP käsud genereerib kasutaja protokolli tõlgendaja ja saadab need serverile. Serveri vastused saadetakse kasutajale samamoodi juhtimiskanali kaudu. Üldiselt on kasutajal võimalus luua kontakt serveri protokolli tõlgendajaga ja kasutada selleks erinevaid vahendeid kui kasutaja tõlgendaja.
FTP peamine omadus on see, et see kasutab kahetasandilist ühendust. Üks neist kasutatakse käskude edastamiseks serverile ja toimub vaikimisi TCP-porti 21 kaudu, mida saab muuta. Juhtimisühendus püsib kuni klient suhtleb serveriga. Juhtimiskanalis peab olema avatud andmete edastamine masinate vahel. Kui see suletakse, katkeb andmete edastus. Teine ühendus toimub otsese andmeedastuse jaoks. See avatakse iga kord, kui fail edastatakse kliendi ja serveri vahel. Kui edastatakse samaaegselt mitu faili, avatakse igaühe jaoks oma edastuskanal.
FTP võib töötada aktiivses või passiivses režiimis, mille valik määrab ühenduse loomise viisi. Aktiivses režiimis loob klient juhtme TCP-ühenduse serveriga ja edastab serverile oma IP-aadressi ning suvalise kliendipordi numbri, seejärel ootab, kuni server käivitab TCP-ühenduse selle aadressi ja pordiga. Kui klient on tulemüüri taga ja ei saa sisse tulevat TCP-ühendust vastu võtta, võib kasutada passiivset režiimi. Selles režiimis kasutab klient juhtimisvoogu, et saata serverile käsk PASV, ning seejärel saab serverilt oma IP-aadressi ja pordinumbri, mida klient seejärel kasutab andmevoo avamiseks oma suvaliselt valitud pordist.
Võib juhtuda, et andmed saadetakse kolmandale arvutile. Sellisel juhul korraldab kasutaja juhtimiskanali kahe serveri vahel ja loob otsekanali andmete edastamiseks nende vahel. Juhtimis käsud lähevad läbi kasutaja, samas kui andmed edastatakse otse serverite vahel.
Andmete edastamisel võrgus võivad olla neli andmete esituse viisi:
- ASCII – kasutatakse teksti puhul. Andmed, kui on vajalik, konverteeritakse edastamise eel saatja hosti sümbolvormist "kaheksabitiseks ASCII"-ks ning (taas, kui on vajadus) vastuvõtva hosti sümbolvorminguks. Eriti muudetakse rea vahetuse sümboleid. Selle tulemusena ei sobi see režiim failidele, mis sisaldavad mitte ainult tavalist teksti.
- Binaarne režiim – saatmise seadmed saadavad iga faili baiti haaval ning vastuvõtja salvestab baiti voogu selle vastuvõtmise ajal. Selle režiimi toetamine on soovitatav kõikide FTP rakenduste jaoks.
- EBCDIC – kasutatakse tavalise teksti edastamiseks hostide vahel EBCDIC kodeeringus. Muul osal on see režiim sarnane ASCII-režiimile.
- Kohalik režiim – võimaldab kahel arvutil, millel on identset seade, saata andmeid oma formaadis ilma ASCII konverteerimiseta.
Andmete edastamine võib toimuda igas kolmes režiimis:
- Voogude režiim – andmed saadetakse pideva voona, vabastades FTP igasugusest töötlemisest. Selle asemel teostab kogu töötlemise TCP. Faili lõpu indikaatorit ei ole vaja, välja arvatud andmete eraldamise korral rekorditeks.
- Blokeerimisrežiim – FTP jagab andmed mitmeks blokiks (peablokk, baitide arv, andmeväli) ja edastab need seejärel TCP kaudu.
- Kompresseerimisrežiim – andmed kompressitakse ühtse algoritmiga (tavaliselt seeriapikkuste kodeerimisega).
FTP server – on server, mis võimaldab kasutada failiedastuse protokolli. Sellel on teatud omadused, mis eristavad seda tavalistest veebiserveritest:
- Kasutajate autentimine on vajalik
- Kõik toimingud teostatakse käimasoleva seansi raames
- Võimalus teostada erinevaid toiminguid failisüsteemiga
- Iga ühenduse jaoks rakendatakse eraldi kanali
FTP klient – on programm, mis võimaldab ühenduda kaugserveriga FTP kaudu ja samuti teostada sellel vajalikku tegevust failisüsteemi elementidega. Kliendiks võib olla ka brauser, mille aadressiribal tuleb sisestada aadress, mis esindab teed kindlasse katalooge või faili kaugserveris, vastavalt URL-i üldisele plaanile:
ftp://user:pass@address:port/directory/file
Kuid veebibrauseri kasutamine sellises ühenduses võimaldab vaid vaadata või alla laadida huvipakkuvaid faile. Kõigi FTP eeliste täielikuks kasutamiseks tuleks kasutada spetsialiseeritud tarkvara kliendina.
FTP-autentimine kasutab kasutajanime/parooli mustrit juurdepääsu andmiseks. Kasutajanimi saadetakse serverile käsuga USER, ja parool – käsuga PASS. Kui server aktsepteerib kliendi antud teavet, saadab server kliendile kutse ja seanss algab. Kasutajad saavad, kui server toetab seda funktsiooni, siseneda süsteemi ilma autentimisandmeid esitamata, kuid server võib selliste seansside jaoks pakkuda ainult piiratud juurdepääsu.
Host, mis pakub FTP-teenust, võib anda anonüümse juurdepääsu FTP-le. Kasutajad logivad tavaliselt süsteemi kui "anonymous" (mõnel FTP-serveril võib olla tähtede poolest sõltuv) kasutajanimega. Kuigi tavaliselt palutakse kasutajatel saata oma e-posti aadress parooli asemel, ei tehta tegelikult mingit kontrolli. Paljud FTP-hostid, mis pakuvad tarkvarauuendusi, toetavad anonüümset ligipääsu.
Protokolli skeem
Klient-server interaktsioon FTP-ühenduse korral võib näiliselt välja näha järgmiselt:

Turvaline FTP
FTP ei ole algselt mõeldud turvalisena, kuna see oli mõeldud suhtlemiseks mitme sõjalise objekti ja asutuse vahel. Kuid interneti arengu ja laienemisega on ebaseadusliku juurdepääsu oht mitmekordistunud. Seetõttu on tekkinud vajadus serverite kaitsmiseks erinevat tüüpi rünnakute eest. Mais 1999 tõid RFC 2577 autorid välja haavatavuste järgmise nimekirja:
- Peidetud rünnakud (bounce attacks)
- Spoonimisrünnakud (spoof attacks)
- Karmide jõurünnakud (brute force attacks)
- Pakettide pealtkuulamine, sniffimine (packet capture, sniffing)
- Portide varastamine (port stealing)
Tavaline FTP ei võimalda andmete edastamist krüpteeritud kujul, mistõttu kasutajanimi, paroolid, käsud ja muud andmed võivad kergesti ja lihtsalt sattuda pahatahtlike isikute kätte. Selle probleemi tavapärane lahendus on kasutada "turvalisi", TLS-i kaitstud haavatavaid protokolle (FTPS) või mõnda teist, turvalisemat protokolli, nagu SFTP/SCP, mis on saadaval enamikus Secure Shell protokolli rakendustes.
FTPS
FTPS (FTP + SSL) – standardse failiedastusprotokolli laiendus, mis lisab selle põhi funktsioonidele krüpteeritud sessioonide loomise SSL-protokolli (Secure Sockets Layer - turvaliste soklite tase) kaudu. Praegu tagab kaitse selle arenenum analoog TLS (Transport Layer Security - transportkihi kaitse).
SSL
SSL protokollit pakkus välja Netscape Communications 1996. aastal, et tagada internetiühenduste turvalisus ja konfidentsiaalsus. Protokoll toetab kliendi ja serveri autentimist, ei sõltu rakendustest ja on HTTP, FTP ja Telnet protokollide jaoks läbipaistev.
SSL Handshake protokoll koosneb kahest etapist: serveri autentimine ja valikuline kliendi autentimine. Esimeses etapis saadab server kliendi päringule vastates oma sertifikaadi ja krüpteerimisseaded. Seejärel genereerib klient põhivõtme, krüpteerib selle serveri avaliku võtmega ja saadab serverile. Server dekrüpteerib põhivõtme oma erakluga ja kinnitab oma autentsuse kliendile, saates talle sõnumi, mis on kinnitatud kliendi põhivõtmega.
Järgmised andmed krüpteeritakse ja allkirjastatakse selle meistrivõtme põhjal saadud võtmetega. Teisel etapil, mis ei ole kohustuslik, saadab server kliendile päringu ja klient kinnitab serverile oma autentimist, saates tagasi päringu koos oma digitaalse allkirjaga ja avaliku võtme sertifikaadiga.
SSL toetab mitmesuguseid krüptograafilisi algoritme. Ühenduse loomisel kasutatakse RSA avalikku võtme krüptosüsteemi. Pärast võtmete vahetamist kasutatakse mitmeid erinevaid šifreid: RC2, RC4, IDEA, DES ja TripleDES. Samuti kasutatakse MD5, mis on sõnumi kokkuvõtte loomise algoritm. Avalike võtme sertifikaatide süntaks on kirjeldatud X.509 standardis.
Üks SSL olulisi eeliseid on selle täielik platvormi sõltumatus. Protokoll on välja töötatud ülekandmise põhimõtete kohaselt, ja selle ülesehituse ideoloogia ei sõltu rakendustest, milles seda kasutatakse. Peale selle on oluline, et SSL-protokolli peale võivad läbatuda ja teised protokollid, et suurendada sihtinformatsioonivoogude kaitse astet või kohandada SSL-i krüptograafilisi võimeid mõnele teisele kindlale ülesandele.
SSL-ühendus

Pakutaval SSL-i turvalisel kanalil on kolm peamist omadust:
- Kanal on privaatne. Krüpteerimist kasutatakse kõigi sõnumite puhul pärast lihtsat dialooge, mis teenib saladusvõtme määratlemise eesmärki.
- Kanal on autenditud. Dialooge serveri pool on alati autenditud, samas kui kliendi pool autenditakse vabatahtlikult.
- Kanal on usaldusväärne. Sõnumite edastamine hõlmab terviklikkuse kontrollimist (MAC-i kaasabil).
FTPS-i eripärad
FTPS-i on olemas kaks teostust, mis kasutavad erinevaid meetodeid turvalisuse tagamiseks:
- Mitte-avalik meetod eeldab standardse SSL protokolli kasutamist istungi loomisel enne andmete edastamist, mis omakorda rikub ühilduvust tavaliste FTP klientide ja serveritega. Tagamaks ühilduvust klientidega, kes ei toeta FTPS-i, kasutatakse kontrollühenduseks TCP-porti 990 ja andmete edastamiseks porti 989. See võimaldab säilitada standardset porti 21 FTP protokolli jaoks. Seda meetodit peetakse vananenuks.
- Selge – palju mugavam, kuna kasutab standardse FTP käske, kuid krüpteerib andmed vastuse andmisel, võimaldades sama kontrollühenduse kasutamist nii FTP kui ka FTPS jaoks. Klient peab selgelt taotlema serverilt turvalist andmeedastust ja pärast seda kinnitama krüptimise meetodi. Kui klient ei taotle turvalist edastust, on FTPS serveril õigus nii salvestada kui ka sulgeda kaitseta ühendus. Identifitseerimise ja andmete kaitsmise kokkuleppe mehhanism lisati RFC 2228 alla, mis hõlmab uut FTP käsku AUTH. Kuigi see standard ei määra selgelt kaitsemehhanisme, määrab ta, et turvalist ühendust peab algatama klient ülaltoodud algoritmi abil. Kui server ei toeta turvalisi ühendusi, peab tagastama veakoodi 504. FTPS kliendid saavad teada serveri toetatud kaitseprotokollidest käsku FEAT kasutades, kuid server ei ole kohustatud avaldama, milliseid turvalisuse tasemeid ta toetab. Kõige levinumad FTPS käsud AUTH TLS ja AUTH SSL, mis tagavad vastavalt TLS ja SSL kaitse.
SFTP
SFTP (Secure File Transfer Protocol) – rakenduskihtide failide edastamise protokoll, mis töötab turvalise kanali peal. Mitte 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 kasutab aluseks SSH-d (Secure Shell – turvaline kest).
Secure Shell
Protokolli arendamisega tegeles üks IETF rühm nimega Secsh. Uue protokolli SFTP töödokumendid ei saanud ametlikuks standardiks, kuid neid hakati aktiivselt kasutama rakenduste arendamiseks. Edasi on välja antud kuus protokolli versiooni. Siiski, järkjärguline funktsionaalsuse suurendamine tõi kaasa sellele, et 14. augustil 2006 võeti vastu otsus lõpetada protokolli arendamine põhitegevuse (SSH arendamine) täitmise ja piisava ekspertiisi puudumise tõttu täieliku kaugfailisüsteemi protokolli välja töötamiseks.
SSH on võrguprotokoll, mis võimaldab kaugjuhtimist operatsioonisüsteemidest ja TCP-ühenduste tunneldamist (nt failide edastamiseks). Selle funktsionaalsus sarnaneb Telneti ja rlogin protokollidega, kuid erinevalt neist krüpteerib kogu liikluse, sealhulgas edastatavad paroolid. SSH võimaldab valida erinevaid krüpteerimisalgoritme. SSH-kliendid ja SSH-serverid on saadaval enamikule võrgu operatsioonisüsteemidest.
SSH võimaldab turvaliselt edastada peaaegu igasugust muud võrguprotokolli kaitsetuks keskkonnas. Nii on võimalik mitte ainult kaugjuhtida arvutit käsurea kaudu, vaid ka edastada krüpteeritud kanaliga helivoogu või videot (nt veebikaamerast). Samuti võib SSH kasutada edastatavate andmete tihendamist enne nende krüpteerimist, mis on mugav näiteks kaugrakenduste käivitamiseks X WindowSystemi kaudu.
Protokolli esimene versioon, SSH-1, töötati välja 1995. aastal uurija Tatu Uloneni poolt Helsingi Tehnikaülikoolist (Soome). SSH-1 kirjutati selleks, et tagada suurem konfidentsiaalsus võrreldes rlogin, telnet ja rsh protokollidega. 1996. aastal töötati välja turvalisem versioon protokollist, SSH-2, mis ei olnud ühilduv SSH-1-iga. Protokoll sai veelgi populaarsemaks ning 2000. aastaks oli sellel umbes kaks miljonit kasutajat. Praegu tähendab mõisted "SSH" tavaliselt just SSH-2, kuna protokolli esimese versiooni ilmsed puudused on selle kasutuse praktiliselt ära kaotanud. Aastal 2006 kinnitati protokoll IETF töögrupi poolt Interneti-standardina.
Levinud on kaks SSH-i rakendust: kommertsiaalne ja tasuta avatud versioon. Tasuta versioon kannab nime OpenSSH. Aastaks 2006 kasutas 80 % interneti arvutitest just OpenSSH-d. Kommertsiaalset versiooni arendab organisatsioon SSH Communications Security, mis on Tectia korporatsiooni täielik tütarfirma, ja see on tasuta mittetulunduslikuks kasutamiseks. Need rakendused sisaldavad peaaegu sama käsu komplekti.
SSH-2 protokoll, erinevalt telnet protokollist, on kaitstud liiklust kuulamise rünnakute («sniffing») vastu, kuid ei ole kaitstud «mees keset» rünnakute vastu. SSH-2 protokoll on samuti kaitstud sessiooni röövimise rünnakute (ingl. session hijacking) vastu, kuna ei ole võimalik liituda juba loodud sessiooniga või seda peatada.
Kuna rünnakute vältimiseks «mees keset»ühenduse loomisel hostiga, mille võti kliendile pole veel teada, näitab kliendi tarkvara kasutajale «võtme koopia» (ingl. key fingerprint). Soovitav on hoolikalt kontrollida kliendi tarkvara näidatud «võtme koopia» vastavust serveri võtme koopiale, mida on soovitatav hankida usaldusväärsete suhtluskanalite kaudu või isiklikult.
SSH toe on olemas kõigis UNIX-i sarnastes süsteemides, kus enamikus kuuluvad standardse utiliidi hulka ssh klient ja server. SSH klientide mitmekesised lahendused on olemas ka mitte-UNIX opsüsteemidele. Protokoll on suure populaarsuse saavutanud pärast andmeanalüsaatorite ja kohalike võrkude rikkevõtete laiendatud arendamist, pakkudes alternatiivi ohutuks Telnet protokolliks oluliste sõlmede haldamiseks.
SSH kaudu suhtlemine
SSH tööks on vajalik SSH-server ja SSH-klient. Server kuulab ühendusi kliendimasinatelt ja autentib end pärast ühenduse loomist, seejärel alustab kliendi teenindamist. Klient kasutatakse kaugmasinale sisenemiseks ja käskude täitmiseks.

Võrdlus FTPS-iga
Peamine, mis eristab SFTP-d standardsetest FTP ja FTPS protokollidest, on see, et SFTP krüpteerib täielikult kõik käsud, kasutajanimed, paroolid ja muud konfidentsiaalsed andmed.
Mõlemad protokollid FTPS ja SFTP kasutavad asümmeetriliste algoritmide (RSA, DSA), sümmeetriliste algoritmide (DES/3DES, AES, Twhofish jne) ja võtmevahetuse algoritmide kombinatsiooni. FTPS (või, kui olla täpsem, SSL/TLS FTP protokollis) kasutab autentimiseks X.509 sertifikaate, samas kui SFTP (SSH protokoll) kasutab SSH võtmeid.
X.509 sertifikaadid sisaldavad avalikku võtit ja teavet sertifikaadi omaniku kohta. See teave võimaldab verifitseerida sertifikaadi terviklikkust, autentsust ja omaniku õigusi. X.509 sertifikaadid omavad vastavat privaatvõtit, mis tavaliselt hoitakse sertifikaadist eraldi, et tagada turvalisus.
SSH võti sisaldab ainult avalikku key, samas kui vastav privaatvõti hoitakse eraldi. See ei sisalda mingeid andmeid võtme omaniku kohta. Mõned SSH rakendused kasutavad autentimiseks X.509 sertifikaate, kuid tegelikult ei kontrollita kogu sertifikaadi ahelat — kasutatakse ainult avalikku võtit (mis muudab sellise autentimise mittetäielikuks).
Kokkuvõte
FTP-protokoll mängib jätkuvalt olulist rolli teabe salvestamise ja levitamise küsimustes, vaatamata oma väärikale vanusele. See on mugav, multifunktsionaalne ja standardiseeritud protokoll. Selle põhjal on loodud palju failiarhive, ilma milleta oleks tehniline töö palju ebaefektiivne. Lisaks on selle seadistamine lihtne ning serveri ja kliendi programmid eksisteerivad praktiliselt kõigil praegustel ning vähem tuntud platvormidel.
Oma korda lahendavad selle kaitstud versioonid tänapäeva maailmas salvestatud ja edastatud andmete konfidentsiaalsuse probleemi. Mõlemal uuel protokollil on oma plussid ja miinused ning need täidavad veidi erinevaid rolle. Nendes valdkondades, kus on vajalik just failiarhiiv, on parem kasutada FTPS-i, eriti kui seal on juba varem kasutatud klassikalist FTP-d. SFTP on vähem levinud oma kokkusobimatuse tõttu vana protokolliga, kuid on paremini kaitstud ja omab rohkem funktsioone, kuna on osa kaugjuhtimise süsteemist.
Viidatud allikad
Allikas: habr.com
