SFTP ja FTPS protokollid

Eessõna

Just nädal tagasi kirjutasin pealkirjas märgitud teemal esseed ja seisin silmitsi tõsiasjaga, et ütleme, et Internetis pole nii palju harivat teavet. Enamasti kuivad faktid ja seadistusjuhised. Seetõttu otsustasin teksti veidi parandada ja postitada selle artiklina.

Mis on FTP

FTP (File Transfer Protocol) on protokoll failide edastamiseks võrgu kaudu. See on üks põhilisi Etherneti protokolle. Ilmus 1971. aastal ja töötas algselt DARPA võrkudes. Praegu põhineb failiedastus sarnaselt HTTP-ga mudelil, mis koosneb TCP/IP (Transmission Control Protocol/Internet Protocol) protokollide komplektist. Määratletud RFC 959-s.

Protokoll määratleb järgmise:

  • Kuidas veakontroll läbi viiakse?
  • Andmete pakendamise meetod (kui kasutatakse pakendit)
  • Kuidas saatev seade teatab, et on sõnumi lõpetanud?
  • Kuidas vastuvõttev seade teatab, et ta on sõnumi vastu võtnud?

Side kliendi ja serveri vahel

Vaatame FTP töö käigus toimuvaid protsesse lähemalt. Ühenduse initsialiseerib kasutaja protokollitõlk. Vahetust juhitakse TELNETi standardis kontrollkanali kaudu. FTP käsud genereerib kasutaja protokollitõlk ja saadetakse serverisse. Juhtkanali kaudu saadetakse kasutajale ka serveri vastused. Üldjuhul on kasutajal võimalus luua kontakt serveri protokolli tõlgiga ja muul viisil kui kasutaja tõlk.

FTP peamine omadus on see, et see kasutab topeltühendust. Ühte neist kasutatakse käskude saatmiseks serverisse ja see toimub vaikimisi TCP pordi 21 kaudu, mida saab muuta. Juhtühendus eksisteerib seni, kuni klient suhtleb serveriga. Masinate vahel andmete edastamisel peab juhtimiskanal olema avatud. Kui see on suletud, siis andmeedastus peatub. Teise kaudu toimub otsene andmeedastus. See avaneb iga kord, kui toimub failiedastus kliendi ja serveri vahel. Kui korraga edastatakse mitu faili, avab igaüks neist oma edastuskanali.

FTP võib töötada aktiivses või passiivses režiimis, mille valik määrab ühenduse loomise viisi. Aktiivses režiimis loob klient TCP-juhtühenduse serveriga ja saadab serverile oma IP-aadressi ja suvalise kliendi pordi numbri ning ootab seejärel, kuni server selle aadressi ja pordinumbriga TCP-ühenduse loob. Kui klient on tulemüüri taga ja ei saa sissetulevat TCP-ühendust vastu võtta, saab kasutada passiivset režiimi. Selles režiimis kasutab klient PASV-käsu serverisse saatmiseks juhtimisvoogu ja saab seejärel serverilt selle IP-aadressi ja pordi numbri, mida klient kasutab seejärel andmevoo avamiseks oma suvalisest pordist.

Võimalik, et andmeid võidakse üle kanda kolmandasse masinasse. Sel juhul korraldab kasutaja kahe serveriga juhtimiskanali ja korraldab nende vahel otseandmekanali. Juhtkäsud käivad läbi kasutaja ja andmed liiguvad otse serverite vahel.

Andmete üle võrgu edastamisel saab kasutada nelja andmeesitlust:

  • ASCII – kasutatakse teksti jaoks. Andmed teisendatakse vajaduse korral enne edastamist saatva hosti märgiesitusest "kaheksabitiseks ASCII-ks" ja (vajadusel uuesti) vastuvõtvas hostis olevaks märgiesitluseks. Eelkõige muudetakse reavahetusmärke. Seetõttu ei sobi see režiim failidele, mis sisaldavad rohkem kui lihtteksti.
  • Binaarrežiim – saateseade saadab iga faili baithaaval ja saaja salvestab baitide voo vastuvõtmisel. Selle režiimi tugi on soovitatav kõigi FTP-rakenduste jaoks.
  • EBCDIC – kasutatakse lihtteksti edastamiseks hostide vahel EBCDIC-kodeeringus. Muidu sarnaneb see režiim ASCII režiimiga.
  • Kohalik režiim – võimaldab kahel identse seadistusega arvutil saata andmeid oma vormingus ilma ASCII-vormingusse teisendamata.

Andmeedastust saab teostada mis tahes kolmest režiimist:

  • Voorežiim – andmed saadetakse pideva voona, vabastades FTP-d igasugusest töötlemisest. Selle asemel teostab kogu töötlemine TCP. Faililõpu indikaator pole vajalik, välja arvatud andmete kirjeteks eraldamiseks.
  • Block mode – FTP jagab andmed mitmeks plokiks (päiseplokk, baitide arv, andmeväli) ja edastab need seejärel TCP-le.
  • Tihendusrežiim – andmed tihendatakse ühe algoritmi abil (tavaliselt jooksupikkuste kodeerimisega).

FTP-server on server, mis võimaldab kasutada failiedastusprotokolli. Sellel on teatud funktsioonid, mis eristavad seda tavapärastest veebiserveritest:

  • Vajalik kasutaja autentimine
  • Kõik toimingud tehakse praeguse seansi jooksul
  • Võimalus teha failisüsteemiga erinevaid toiminguid
  • Iga ühenduse jaoks kasutatakse eraldi kanalit

FTP-klient on programm, mis võimaldab luua FTP kaudu ühenduse kaugserveriga ja teha sellel ka vajalikke toiminguid failisüsteemi elementidega. Klient võib olla brauser, mille aadressiribale peaksite sisestama aadressi, mis on kaugserveris asuva konkreetse kataloogi või faili tee, vastavalt üldisele URL-i plokkskeemile:

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

Veebibrauseri kasutamine selles kontekstis võimaldab teil aga ainult huvipakkuvaid faile vaadata või alla laadida. Kõigi FTP eeliste täielikuks kasutamiseks peaksite kliendina kasutama spetsiaalset tarkvara.

FTP autentimine kasutab juurdepääsu andmiseks kasutajanime/parooli skeemi. Kasutajanimi saadetakse serverisse käsuga USER, parool aga käsuga PASS. Kui server aktsepteerib kliendi esitatud teavet, saadab server kliendile kutse ja seanss algab. Kui server seda funktsiooni toetab, saavad kasutajad sisse logida mandaate esitamata, kuid server saab sellistele seanssidele anda ainult piiratud juurdepääsu.

FTP-teenust pakkuv host võib pakkuda anonüümset FTP-juurdepääsu. Tavaliselt logivad kasutajad sisse anonüümse kasutajanimega (võib mõnes FTP-serveris olla tõstutundlik). Kuigi kasutajatel palutakse tavaliselt parooli asemel sisestada oma e-posti aadress, ei kontrollita tegelikult. Paljud FTP-hostid, mis pakuvad tarkvaravärskendusi, toetavad anonüümset juurdepääsu.

Protokolli diagramm

Kliendi-serveri suhtlust FTP-ühenduse ajal saab visualiseerida järgmiselt.

SFTP ja FTPS protokollid

Turvaline FTP

FTP ei olnud algselt mõeldud olema turvaline, kuna see oli mõeldud suhtlemiseks mitme sõjaväerajatise ja agentuuri vahel. Kuid Interneti arengu ja levikuga on volitamata juurdepääsu oht mitu korda suurenenud. Oli vaja kaitsta servereid erinevat tüüpi rünnakute eest. 1999. aasta mais võtsid RFC 2577 autorid haavatavused kokku järgmises nimekirjas:

  • Varjatud rünnakud (põrkerünnakud)
  • Petturlikud rünnakud
  • Jõhja jõu rünnakud
  • Pakettide püüdmine, nuusutamine
  • Sadama varastamine

Tavalisel FTP-l puudub võimalus andmeid krüpteeritud kujul edastada, mille tulemusel on kasutajanimed, paroolid, käsud ja muu info ründajate poolt hõlpsasti ja hõlpsalt vahele jäetud. Selle probleemi tavaline lahendus on kasutada haavatava protokolli (FTPS) "turvalisi", TLS-kaitsega versioone või mõnda muud turvalisemat protokolli, näiteks SFTP/SCP, mis on varustatud enamiku Secure Shelli protokolli rakendustega.

FTPS

FTPS (FTP + SSL) on standardse failiedastusprotokolli laiendus, mis lisab selle põhifunktsioonidele krüpteeritud seansside loomise SSL-protokolli (Secure Sockets Layer) abil. Tänapäeval pakub kaitset selle täiustatud analoog TLS (Transport Layer Security).

SSL

SSL-protokolli pakkus välja Netscape Communications 1996. aastal, et tagada Interneti-ühenduste turvalisus ja privaatsus. Protokoll toetab kliendi ja serveri autentimist, on rakendusest sõltumatu ning on HTTP, FTP ja Telneti protokollidele läbipaistev.

SSL-i käepigistuse protokoll koosneb kahest etapist: serveri autentimine ja valikuline kliendi autentimine. Esimeses etapis vastab server kliendi päringule, saates oma sertifikaadi ja krüpteerimisparameetrid. Seejärel genereerib klient põhivõtme, krüpteerib selle serveri avaliku võtmega ja saadab selle serverisse. Server dekrüpteerib peavõtme oma privaatvõtmega ja autentib end kliendile, tagastades kliendi peavõtmega autentitud sõnumi.

Järgnevad andmed krüpteeritakse ja autentitakse sellest peavõtmest tuletatud võtmetega. Teises etapis, mis on valikuline, saadab server kliendile päringu ja klient autentib end serveris, tagastades päringu oma digitaalallkirja ja avaliku võtme sertifikaadiga.

SSL toetab mitmesuguseid krüptoalgoritme. Side loomisel kasutatakse RSA avaliku võtmega krüptosüsteemi. Pärast võtmevahetust kasutatakse palju erinevaid šifreid: RC2, RC4, IDEA, DES ja TripleDES. Kasutatakse ka MD5 – algoritmi sõnumi kokkuvõtte koostamiseks. Avaliku võtme sertifikaatide süntaksit kirjeldatakse X.509-s.

Üks SSL-i olulisi eeliseid on selle täielik sõltumatus tarkvaraplatvormist. Protokoll on välja töötatud kaasaskantavuse põhimõtetel ja selle ülesehituse ideoloogia ei sõltu rakendustest, milles seda kasutatakse. Lisaks on oluline, et SSL-protokolli peale saaks ka teisi protokolle läbipaistvalt katta; kas selleks, et veelgi suurendada sihtinfovoogude kaitseastet või kohandada SSL-i krüptograafilisi võimalusi mõne muu, täpselt määratletud ülesande jaoks.

SSL-ühendus

SFTP ja FTPS protokollid

SSL-i pakutaval turvalisel kanalil on kolm peamist atribuuti:

  • Kanal on privaatne. Krüptimist kasutatakse kõigi sõnumite jaoks pärast lihtsat dialoogi, mille eesmärk on määrata salajane võti.
  • Kanal on autentitud. Vestluse serveripool autentitakse alati, kliendipool aga valikuliselt.
  • Kanal on usaldusväärne. Sõnumi edastamine hõlmab terviklikkuse kontrollimist (kasutades MAC-i).

FTPS-i omadused

FTPS-il on kaks rakendust, mis kasutavad turvalisuse tagamiseks erinevaid meetodeid:

  • Kaudne meetod hõlmab standardse SSL-protokolli kasutamist seansi loomiseks enne andmete saatmist, mis omakorda rikub ühilduvust tavaliste FTP klientide ja serveritega. Tagasiühilduvuse tagamiseks klientidega, kes ei toeta FTPS-i, kasutatakse juhtühenduseks TCP-porti 990 ja andmeedastuseks 989. See säilitab FTP-protokolli standardpordi 21. Seda meetodit peetakse aegunuks.
  • Explicit on palju mugavam, kuna see kasutab standardseid FTP-käske, kuid krüpteerib vastamisel andmed, mis võimaldab kasutada sama juhtühendust nii FTP kui ka FTPS jaoks. Klient peab selgesõnaliselt taotlema serverilt turvalist andmeedastust ja seejärel krüpteerimismeetodi heaks kiitma. Kui klient turvalist ülekannet ei taotle, on FTPS-serveril õigus turvamata ühendus säilitada või sulgeda. RFC 2228 alla lisati autentimis- ja andmeturbe läbirääkimismehhanism, mis sisaldab uut FTP AUTH käsku. Kuigi see standard ei määratle selgelt turbemehhanisme, täpsustab see siiski, et klient peab ülalkirjeldatud algoritmi abil turvalise ühenduse algatama. Kui server ei toeta turvalisi ühendusi, tuleb tagastada veakood 504. FTPS-i kliendid saavad teavet serveri toetatud turvaprotokollide kohta käsuga FEAT, kuid server ei pea avaldama, milliseid turbetasemeid ta toetab. Levinumad FTPS-i käsud on AUTH TLS ja AUTH SSL, mis pakuvad vastavalt TLS-i ja SSL-i turvalisust.

SFTP

SFTP (Secure File Transfer Protocol) on rakenduskihi failiedastusprotokoll, mis töötab turvalise kanali peal. Mitte segi ajada (Simple File Transfer Protocol), millel on sama lühend. Kui FTPS on lihtsalt FTP laiendus, siis SFTP on eraldiseisev ja mitteseotud protokoll, mille aluseks on SSH (Secure Shell).

Secure Shell

Protokolli töötas välja üks IETF-i gruppidest nimega Secsh. Uue SFTP-protokolli töödokumentatsioonist ei saanud ametlikku standardit, vaid seda hakati rakenduste arendamiseks aktiivselt kasutama. Seejärel anti välja kuus protokolli versiooni. Funktsionaalsuse järkjärguline kasv selles tõi aga kaasa asjaolu, et 14. augustil 2006 otsustati protokolli arendustöö lõpetada seoses projekti põhiülesande (SSH arendus) valmimise ja puudumisega. piisaval eksperditasemel, et liikuda edasi täieõigusliku kaugfailisüsteemi protokolli väljatöötamise juurde.

SSH on võrguprotokoll, mis võimaldab operatsioonisüsteemi kaugjuhtimist ja TCP-ühenduste tunneldamist (näiteks failide edastamiseks). Funktsionaalsuselt sarnaneb Telneti ja rlogini protokollidega, kuid erinevalt neist krüpteerib kogu liikluse, sealhulgas edastatud paroolid. SSH võimaldab valida erinevaid krüpteerimisalgoritme. SSH-kliendid ja SSH-serverid on saadaval enamiku võrguoperatsioonisüsteemide jaoks.

SSH võimaldab turvamata keskkonnas turvaliselt edastada peaaegu kõiki muid võrguprotokolle. Seega saate mitte ainult käsukesta kaudu arvutis kaugtööd teha, vaid ka krüpteeritud kanali kaudu edastada helivoogu või videot (näiteks veebikaamerast). SSH saab kasutada ka edastatud andmete tihendamist järgnevaks krüptimiseks, mis on mugav näiteks X WindowSystemi klientide kaugkäivitamiseks.

Protokolli esimese versiooni SSH-1 töötas välja 1995. aastal Helsingi Tehnikaülikooli (Soome) teadur Tatu Ulönen. SSH-1 on kirjutatud suurema privaatsuse tagamiseks kui rlogin-, telnet- ja rsh-protokollid. 1996. aastal töötati välja protokolli turvalisem versioon SSH-2, mis ei ühildu SSH-1-ga. Protokoll saavutas veelgi populaarsuse ja 2000. aastaks oli sellel ligikaudu kaks miljonit kasutajat. Praegu tähendab termin "SSH" tavaliselt SSH-2, kuna Protokolli esimest versiooni oluliste puuduste tõttu nüüd praktiliselt ei kasutata. 2006. aastal kiitis protokolli Interneti-standardina heaks IETF-i töörühm.

SSH-l on kaks levinumat rakendust: privaatne kommerts- ja tasuta avatud lähtekoodiga rakendus. Tasuta rakendust nimetatakse OpenSSH-ks. 2006. aastaks kasutas 80% Internetis leiduvatest arvutitest OpenSSH-d. Varalise teostuse on välja töötanud SSH Communications Security, mis on Tectia Corporationi XNUMX% omanduses olev tütarettevõte, ja see on mitteäriliseks kasutamiseks tasuta. Need teostused sisaldavad peaaegu samu käske.

SSH-2 protokoll, erinevalt telneti protokollist, on vastupidav liikluse pealtkuulamisrünnakutele ("nuusutamine"), kuid ei ole vastupidav meestevaheliste rünnakute suhtes. SSH-2 protokoll on vastupidav ka seansikaaperdamise rünnakutele, kuna juba loodud seanssiga liitumine või kaaperdamine on võimatu.

Vahepealse rünnaku vältimiseks hostiga, mille võtit klient veel ei tea, näitab klienditarkvara kasutajale võtme sõrmejälge. Soovitatav on hoolikalt kontrollida klienditarkvara kuvatavat "võtme hetktõmmist" koos serveri võtme hetktõmmisega, mis on eelistatavalt saadud usaldusväärsete sidekanalite kaudu või isiklikult.

SSH-tugi on saadaval kõikides UNIX-laadsetes süsteemides ning enamikul on standardsete utiliitidena ssh-klient ja -server. Mitte-UNIX-i operatsioonisüsteemide jaoks on palju SSH-klientide rakendusi. Protokoll saavutas suure populaarsuse pärast liiklusanalüsaatorite ja kohalike võrkude töö häirimise meetodite laialdast väljatöötamist alternatiivse lahendusena oluliste sõlmede haldamise ebaturvalisele Telneti protokollile.

Suhtlus SSH abil

SSH kaudu töötamiseks vajate SSH-serverit ja SSH-klienti. Server kuulab kliendi masinate ühendusi ja kui ühendus on loodud, teostab autentimist, misjärel hakkab klienti teenindama. Klienti kasutatakse kaugmasinasse sisselogimiseks ja käskude täitmiseks.

SFTP ja FTPS protokollid

Võrdlus FTPS-iga

Peamine, mis eristab SFTP-d standardsest FTP-st ja FTPS-ist, on see, et SFTP krüpteerib absoluutselt kõik käsud, kasutajanimed, paroolid ja muu konfidentsiaalse teabe.

Nii FTPS kui ka SFTP protokollid kasutavad kombinatsiooni asümmeetrilistest algoritmidest (RSA, DSA), sümmeetrilistest algoritmidest (DES/3DES, AES, Twhofish jne), aga ka võtmevahetusalgoritmi. Autentimiseks kasutab FTPS (või täpsemalt SSL/TLS üle FTP) X.509 sertifikaate, SFTP (SSH-protokoll) aga SSH-võtmeid.

X.509 sertifikaadid sisaldavad avalikku võtit ja teavet omaniku sertifikaadi kohta. See teave võimaldab teisest küljest kontrollida sertifikaadi enda terviklikkust, autentsust ja sertifikaadi omanikku. X.509 sertifikaatidel on vastav privaatvõti, mida tavaliselt hoitakse turvalisuse huvides serdist eraldi.

SSH-võti sisaldab ainult avalikku võtit (vastav privaatvõti salvestatakse eraldi). See ei sisalda teavet võtme omaniku kohta. Mõned SSH-rakendused kasutavad autentimiseks X.509 sertifikaate, kuid tegelikult ei kontrolli need kogu sertifikaadiahelat – kasutatakse ainult avalikku võtit (mis muudab sellise autentimise mittetäielikuks).

Järeldus

FTP-protokoll mängib kahtlemata oma auväärsest vanusest hoolimata endiselt olulist rolli teabe salvestamisel ja levitamisel võrgus. See on mugav, multifunktsionaalne ja standardiseeritud protokoll. Selle baasil on üles ehitatud palju failiarhiive, ilma milleta ei oleks tehniline töö nii tõhus. Lisaks on seda lihtne seadistada ning serveri- ja kliendiprogrammid on olemas peaaegu kõikide praeguste ja mitte nii praeguste platvormide jaoks.

Selle kaitstud versioonid lahendavad omakorda salvestatud ja edastatud andmete konfidentsiaalsuse probleemi tänapäeva maailmas. Mõlemal uuel protokollil on oma plussid ja miinused ning need täidavad veidi erinevaid rolle. Nendes piirkondades, kus on vaja failiarhiivi, on eelistatav kasutada FTPS-i, eriti kui klassikalist FTP-d on seal juba varem kasutatud. SFTP on vähem levinud, kuna see ei ühildu vana protokolliga, kuid see on turvalisem ja sellel on rohkem funktsioone, kuna see on osa kaughaldussüsteemist.

Allikate loetelu

Allikas: www.habr.com

Lisa kommentaar