Protokoloj SFTP kaj FTPS

Antaŭparolo

Antaŭ nur semajno mi verkis eseon pri la temo indikita en la titolo kaj alfrontis la fakton, ke, ni diru, ne ekzistas tiom da edukaj informoj en la Interreto. Plejparte sekaj faktoj kaj agordaj instrukcioj. Tial mi decidis iomete korekti la tekston kaj afiŝi ĝin kiel artikolon.

Kio estas FTP

FTP (File Transfer Protocol) estas protokolo por transdoni dosierojn tra reto. Ĝi estas unu el la bazaj Ethernet-protokoloj. Aperis en 1971 kaj komence laboris en DARPA-retoj. Nuntempe, kiel HTTP, dosiertransigo baziĝas sur modelo konsistanta el aro de protokoloj TCP/IP (Transmission Control Protocol/Interreta Protokolo). Difinite en RFC 959.

La protokolo difinas la jenon:

  • Kiel efektiviĝos la erarkontrolo?
  • Metodo de pakado de datumoj (se pakado estas uzata)
  • Kiel la senda aparato indikas, ke ĝi finis mesaĝon?
  • Kiel la ricevanta aparato indikas, ke ĝi ricevis mesaĝon?

Komunikado inter kliento kaj servilo

Ni rigardu pli detale la procezojn kiuj okazas dum FTP-operacio. La konekto estas pravigita de la protokolinterpretisto de la uzanto. La interŝanĝo estas kontrolita per kontrolkanalo en la TELNET-normo. FTP-komandoj estas generitaj de la protokolinterpretisto de la uzanto kaj senditaj al la servilo. La respondoj de la servilo ankaŭ estas senditaj al la uzanto per la kontrolkanalo. Ĝenerale, la uzanto havas la kapablon establi kontakton kun la protokolinterpretisto de la servilo kaj per aliaj rimedoj ol la interpretisto de la uzanto.

La ĉefa trajto de FTP estas, ke ĝi uzas duoblajn konektojn. Unu el ili estas uzata por sendi komandojn al la servilo kaj okazas defaŭlte per TCP-haveno 21, kiu povas esti ŝanĝita. La kontrolkonekto ekzistas tiel longe kiel la kliento komunikas kun la servilo. La kontrolkanalo devas esti malfermita dum transdono de datumoj inter maŝinoj. Se ĝi estas fermita, transdono de datumoj ĉesas. Tra la dua, rekta transdono de datumoj okazas. Ĝi malfermiĝas ĉiufoje kiam okazas dosiertransigo inter la kliento kaj servilo. Se pluraj dosieroj estas translokigitaj samtempe, ĉiu el ili malfermas sian propran transdona kanalo.

FTP povas funkcii en aktiva aŭ pasiva reĝimo, kies elekto determinas kiel la konekto estas establita. En aktiva reĝimo, la kliento kreas TCP-kontrolan konekton kun la servilo kaj sendas ĝian IP-adreson kaj arbitran klientan havenon al la servilo, kaj tiam atendas ke la servilo komencu TCP-konekton kun ĉi tiu adreso kaj havenombro. En kazo la kliento estas malantaŭ fajroŝirmilo kaj ne povas akcepti envenantan TCP-konekton, pasiva reĝimo povas esti uzata. En ĉi tiu reĝimo, la kliento uzas la kontrolfluon por sendi PASV-komandon al la servilo, kaj tiam ricevas de la servilo ĝian IP-adreson kaj havenon, kiujn la kliento tiam uzas por malfermi datumfluon de ĝia arbitra haveno.

Eblas ke datumoj povas esti transdonitaj al tria maŝino. En ĉi tiu kazo, la uzanto organizas kontrolkanalon kun du serviloj kaj organizas rektan datumkanalon inter ili. Kontrolkomandoj trairas la uzanton, kaj datumoj iras rekte inter la serviloj.

Dum elsendado de datenoj tra reto, kvar datenreprezentantaroj povas esti uzitaj:

  • ASCII - uzata por teksto. La datenoj estas, se necese, konvertitaj de la signoreprezentantaro sur la sendanta gastiganto ĝis "ok-bita ASCII" antaŭ dissendo, kaj (denove, se necese) al la karaktero reprezentado sur la ricevanta gastiganto. Aparte, novliniaj signoj estas ŝanĝitaj. Kiel rezulto, ĉi tiu reĝimo ne taŭgas por dosieroj enhavantaj pli ol simplan tekston.
  • Binara reĝimo - la senda aparato sendas ĉiun dosieron bajton post bajto, kaj la ricevanto stokas la fluon de bajtoj post ricevo. Subteno por ĉi tiu reĝimo estis rekomendita por ĉiuj FTP-efektivigoj.
  • EBCDIC - uzita por transdoni klartekston inter gastigantoj en EBCDIC-kodigado. Alie, ĉi tiu reĝimo estas simila al la ASCII-reĝimo.
  • Loka reĝimo - permesas al du komputiloj kun identaj agordoj sendi datumojn en sia propra formato sen konverti al ASCII.

Transdono de datumoj povas esti farita en iu ajn el tri reĝimoj:

  • Flua reĝimo - datumoj estas senditaj kiel kontinua fluo, liberigante FTP de farado de ajna pretigo. Anstataŭe, ĉiu pretigo estas farita de TCP. La fin-de-dosiera indikilo ne estas bezonata krom por apartigi datumojn en rekordojn.
  • Blokreĝimo - FTP rompas la datumojn en plurajn blokojn (kapobloko, nombro da bajtoj, datumkampo) kaj poste transdonas ilin al TCP.
  • Kunprema reĝimo - datumoj estas kunpremitaj uzante ununuran algoritmon (kutime per kodado de kurlongoj).

FTP-servilo estas servilo kiu disponigas la kapablon uzi la Dosieran Translokigan Protokolon. Ĝi havas iujn trajtojn, kiuj distingas ĝin de konvenciaj retserviloj:

  • Uzanto-konfirmo necesas
  • Ĉiuj operacioj estas faritaj ene de la nuna sesio
  • Kapablo fari diversajn agojn per la dosiersistemo
  • Aparta kanalo estas uzata por ĉiu konekto

FTP-kliento estas programo, kiu permesas vin konekti al fora servilo per FTP kaj ankaŭ plenumi la necesajn agojn sur ĝi kun elementoj de la dosiersistemo. La kliento povas esti retumilo, en kies adresbreto vi devus enigi la adreson, kiu estas la vojo al specifa dosierujo aŭ dosiero sur la fora servilo, konforme al la ĝenerala URL-blokdiagramo:

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

Tamen uzi retumilon en ĉi tiu kunteksto nur permesos al vi vidi aŭ elŝuti la interesajn dosierojn. Por plene utiligi ĉiujn avantaĝojn de FTP, vi devus uzi specialan programaron kiel kliento.

FTP-aŭtentikigo uzas uzantnomon/pasvortskemon por doni aliron. La uzantnomo estas sendita al la servilo per la komando USER, kaj la pasvorto estas sendita per la komando PASS. Se la informoj provizitaj de la kliento estas akceptitaj de la servilo, tiam la servilo sendos inviton al la kliento kaj la sesio komenciĝas. Uzantoj povas, se la servilo subtenas ĉi tiun funkcion, ensaluti sen provizi akreditaĵojn, sed la servilo povas nur doni limigitan aliron por tiaj sesioj.

La gastiganto provizanta la FTP-servon povas disponigi anoniman FTP-aliron. Uzantoj kutime ensalutas kun "anonima" (povas esti usklesentema sur kelkaj FTP-serviloj) kiel sia uzantnomo. Kvankam uzantoj estas kutime petataj provizi sian retpoŝtadreson anstataŭ pasvorton, neniu konfirmo estas efektive farita. Multaj FTP-gastigantoj, kiuj provizas programajn ĝisdatigojn, subtenas anoniman aliron.

Diagramo de protokolo

La kliento-servila interago dum FTP-konekto povas esti bildigita jene:

Protokoloj SFTP kaj FTPS

Sekura FTP

FTP ne estis origine intencita por esti sekura, ĉar ĝi estis destinita por komunikadoj inter multoblaj armeaj instalaĵoj kaj agentejoj. Sed kun la disvolviĝo kaj disvastiĝo de Interreto, la danĝero de neaŭtorizita aliro multfoje pliiĝis. Estis bezono protekti servilojn kontraŭ diversaj specoj de atakoj. En majo 1999, la verkintoj de RFC 2577 resumis la vundeblecojn en la sekvan liston de temoj:

  • Kaŝaj atakoj (resaltatakoj)
  • Parodi atakoj
  • Brutfortaj atakoj
  • Pakaĵeto kapti, flarante
  • Haveno ŝtelado

Regula FTP ne havas la kapablon transdoni datumojn en ĉifrita formo, kiel rezulto de kiuj uzantnomoj, pasvortoj, komandoj kaj aliaj informoj povas esti facile kaj facile kaptitaj de atakantoj. La kutima solvo al ĉi tiu problemo estas uzi "sekurajn", TLS-protektajn versiojn de la vundebla protokolo (FTPS) aŭ alian, pli sekuran protokolon, kiel ekzemple SFTP/SCP, provizitan per la plej multaj Secure Shell-protokolo-efektivigoj.

FTPS

FTPS (FTP + SSL) estas etendaĵo de la norma dosiera transiga protokolo, kiu aldonas al sia baza funkcieco la kreadon de ĉifritaj sesioj uzante la protokolon SSL (Secure Sockets Layer). Hodiaŭ, protekto estas provizita de ĝia pli progresinta analoga TLS (Transport Layer Security).

SSL

La SSL-protokolo estis proponita fare de Netscape Communications en 1996 por certigi la sekurecon kaj privatecon de retkonektoj. La protokolo subtenas klientan kaj servilan aŭtentikigon, estas aplikaĵo sendependa, kaj estas travidebla al HTTP, FTP, kaj Telnet protokoloj.

La SSL Handshake-protokolo konsistas el du etapoj: servila aŭtentikigo kaj laŭvola klienta aŭtentigo. En la unua etapo, la servilo respondas al la peto de la kliento sendante sian atestilon kaj ĉifradajn parametrojn. La kliento tiam generas majstran ŝlosilon, ĉifras ĝin per la publika ŝlosilo de la servilo, kaj sendas ĝin al la servilo. La servilo deĉifras la ĉefŝlosilon per sia privata ŝlosilo kaj aŭtentikigas sin al la kliento resendante mesaĝon aŭtentikigitan per la ĉefŝlosilo de la kliento.

Postaj datumoj estas ĉifritaj kaj aŭtentikigitaj per ŝlosiloj derivitaj de ĉi tiu ĉefŝlosilo. En la dua paŝo, kiu estas laŭvola, la servilo sendas peton al la kliento, kaj la kliento aŭtentikigas sin al la servilo resendante la peton kun sia propra cifereca subskribo kaj publika ŝlosila atestilo.

SSL subtenas diversajn kriptografiajn algoritmojn. Dum la establado de komunikado, la kriptosistemo de publika ŝlosilo RSA estas uzata. Post la ŝlosilŝanĝo, multaj malsamaj ĉifroj estas uzataj: RC2, RC4, IDEA, DES kaj TripleDES. MD5 ankaŭ estas uzata - algoritmo por krei mesaĝan resumon. La sintakso por publikaj ŝlosilaj atestiloj estas priskribita en X.509.

Unu el la gravaj avantaĝoj de SSL estas ĝia kompleta programaro-platforma sendependeco. La protokolo estas disvolvita laŭ la principoj de porteblo, kaj la ideologio de ĝia konstruo ne dependas de la aplikoj en kiuj ĝi estas uzata. Krome, estas ankaŭ grave ke aliaj protokoloj povas esti travideble supermetitaj al la SSL-protokolo; aŭ por plue pliigi la gradon de protekto de celaj informfluoj, aŭ por adapti la kriptografajn kapablojn de SSL por iu alia, bone difinita tasko.

SSL-konekto

Protokoloj SFTP kaj FTPS

La sekura kanalo provizita de SSL havas tri ĉefajn ecojn:

  • La kanalo estas privata. Ĉifrado estas uzata por ĉiuj mesaĝoj post simpla dialogo, kiu servas por determini la sekretan ŝlosilon.
  • La kanalo estas aŭtentikigita. La servila flanko de la konversacio ĉiam estas aŭtentikigita, dum la klientflanko estas laŭvole aŭtentikigita.
  • La kanalo estas fidinda. Mesaĝtransporto inkludas integreckontroladon (uzante la MAC).

Karakterizaĵoj de FTPS

Ekzistas du efektivigoj de FTPS, uzante malsamajn metodojn de disponigado de sekureco:

  • La implica metodo implikas uzi la norman SSL-protokolon por establi sesion antaŭ sendi datumojn, kiu, siavice, rompas kongruon kun regulaj FTP-klientoj kaj serviloj. Por retrokongruo kun klientoj kiuj ne subtenas FTPS, TCP-haveno 990 estas uzata por la kontrolkonekto kaj 989 estas uzata por datumtransigo.Tio konservas la norman havenon 21 por la FTP-protokolo. Ĉi tiu metodo estas konsiderata malnoviĝinta.
  • Eksplicita estas multe pli oportuna, ĉar ĝi uzas normajn FTP-komandojn, sed ĉifras la datumojn dum respondado, kio ebligas al vi uzi la saman kontrolkonekton kaj por FTP kaj FTPS. La kliento devas eksplicite peti sekuran transdonon de datumoj de la servilo, kaj poste aprobi la ĉifradan metodon. Se la kliento ne petas sekuran translokigon, la FTPS-servilo rajtas aŭ konservi aŭ fermi la nesekurigitan konekton. Aŭtentikigo kaj datuma sekureca intertraktadmekanismo estis aldonita sub RFC 2228 kiu inkludas la novan FTP AUTH-komandon. Kvankam ĉi tiu normo ne eksplicite difinas sekurecmekanismojn, ĝi precizigas ke sekura ligo devas esti iniciatita fare de la kliento uzante la algoritmon priskribitan supre. Se sekuraj konektoj ne estas subtenataj de la servilo, oni devas redoni erarkodon de 504. FTPS-klientoj povas akiri informojn pri la sekurecaj protokoloj subtenataj de la servilo uzante la komandon FEAT, tamen, la servilo ne devas malkaŝi kiajn sekurecnivelojn ĝi estas. subtenas. La plej oftaj FTPS-komandoj estas AUTH TLS kaj AUTH SSL, kiuj provizas TLS kaj SSL-sekurecon, respektive.

SFTP

SFTP (Secure File Transfer Protocol) estas aplikaĵtavola dosiertransiga protokolo, kiu funkcias super sekura kanalo. Ne konfuzu kun (Simple File Transfer Protocol), kiu havas la saman mallongigon. Se FTPS estas simple etendaĵo de FTP, tiam SFTP estas aparta kaj senrilata protokolo kiu uzas SSH (Secure Shell) kiel sian bazon.

Sekura Ŝelo

La protokolo estis evoluigita fare de unu el la IETF-grupoj nomitaj Secsh. La labordokumentaro por la nova SFTP-protokolo ne iĝis oficiala normo, sed komencis esti aktive uzata por aplikaĵevoluo. Poste, ses versioj de la protokolo estis publikigitaj. Tamen la laŭpaŝa pliiĝo de funkcieco en ĝi kondukis al tio, ke la 14-an de aŭgusto 2006, oni decidis ĉesi labori pri la disvolviĝo de la protokolo pro la kompletiĝo de la ĉefa tasko de la projekto (SSH-evoluo) kaj la manko. de sufiĉa faknivelo por pluiri al la evoluo de plenrajta fora dosiersistema protokolo.

SSH estas retprotokolo, kiu ebligas fora kontrolo de la operaciumo kaj tunelado de TCP-konektoj (ekzemple por dosiertransigo). Simile laŭ funkcieco al la protokoloj Telnet kaj rlogin, sed, male al ili, ĝi ĉifras la tutan trafikon, inkluzive de transdonitaj pasvortoj. SSH permesas elekton de malsamaj ĉifradaj algoritmoj. SSH-klientoj kaj SSH-serviloj estas disponeblaj por plej multaj retaj operaciumoj.

SSH permesas vin sekure translokigi preskaŭ ajnan alian retan protokolon en nesekurigita medio. Tiel, vi povas ne nur labori malproksime en via komputilo per la komanda ŝelo, sed ankaŭ transdoni sonan fluon aŭ videon (ekzemple, de retkamerao) per ĉifrita kanalo. SSH ankaŭ povas uzi kunpremadon de transdonitaj datumoj por posta ĉifrado, kio estas oportuna, ekzemple, por malproksime lanĉi X WindowSystem-klientojn.

La unua versio de la protokolo, SSH-1, estis evoluigita en 1995 fare de esploristo Tatu Ulönen de la Helsinki Universitato de Teknologio (Finnlando). SSH-1 estis skribita por provizi pli grandan privatecon ol la protokoloj rlogin, telnet kaj rsh. En 1996, pli sekura versio de la protokolo, SSH-2, estis evoluigita, kiu estas malkongrua kun SSH-1. La protokolo akiris eĉ pli da populareco, kaj antaŭ 2000 ĝi havis proksimume du milionojn da uzantoj. Nuntempe, la termino "SSH" kutime signifas SSH-2, ĉar La unua versio de la protokolo nun estas preskaŭ ne uzata pro gravaj mankoj. En 2006, la protokolo estis aprobita fare de la IETF laborgrupo kiel Interreta normo.

Estas du oftaj efektivigoj de SSH: privata komerca kaj libera malfermfonteco. La senpaga efektivigo nomiĝas OpenSSH. Antaŭ 2006, 80% de komputiloj en la Interreto uzis OpenSSH. La proprieta efektivigo estas evoluigita fare de SSH Communications Security, tute posedata filio de Tectia Corporation, kaj estas senpaga por nekomerca uzo. Ĉi tiuj efektivigoj enhavas preskaŭ la saman aron de komandoj.

La SSH-2-protokolo, male al la telnet-protokolo, estas imuna al trafikaj subaŭskultaj atakoj ("flarado"), sed ne estas imuna al viro-en-la-meza atakoj. La SSH-2-protokolo ankaŭ estas imuna al sesiaj kaperaj atakoj, ĉar estas neeble aliĝi aŭ forkapti jam establitan sesion.

Por malhelpi viro-en-la-mezon-atakojn dum ligado al gastiganto, kies ŝlosilo ankoraŭ ne estas konata al la kliento, la klienta programaro montras al la uzanto "ŝlosilan fingrospuron". Oni rekomendas zorge kontroli la "ŝlosilan foton" montritan de la klienta programaro per la servila ŝlosila momentfoto, prefere akirita per fidindaj komunikaj kanaloj aŭ persone.

SSH-subteno disponeblas en ĉiuj UNIX-similaj sistemoj, kaj plej multaj havas ssh-klienton kaj servilon kiel normajn ilojn. Estas multaj efektivigoj de SSH-klientoj por ne-UNIKSO-OJ. La protokolo akiris grandan popularecon post la ĝeneraligita evoluo de trafikanaliziloj kaj metodoj por interrompi la funkciadon de lokaj retoj, kiel alternativa solvo al la nesekura Telnet-protokolo por administrado de gravaj nodoj.

Komunikado uzante SSH

Por labori per SSH, vi bezonas SSH-servilon kaj SSH-klienton. La servilo aŭskultas por konektoj de klientmaŝinoj kaj, kiam konekto estas establita, elfaras aŭtentikigon, post kiu ĝi komencas servi la klienton. La kliento estas uzata por ensaluti en fora maŝino kaj plenumi komandojn.

Protokoloj SFTP kaj FTPS

Komparo kun FTPS

La ĉefa afero, kiu distingas SFTP de norma FTP kaj FTPS, estas, ke SFTP ĉifras absolute ĉiujn komandojn, uzantnomojn, pasvortojn kaj aliajn konfidencajn informojn.

Kaj FTPS kaj SFTP-protokoloj uzas kombinaĵon de malsimetriaj algoritmoj (RSA, DSA), simetriaj algoritmoj (DES/3DES, AES, Twhofish, ktp.), same kiel ŝlosilan interŝanĝalgoritmon. Por aŭtentigo, FTPS (aŭ por esti pli preciza, SSL/TLS super FTP) uzas X.509-atestilojn, dum SFTP (SSH-protokolo) uzas SSH-ŝlosilojn.

X.509-atestiloj inkluzivas publikan ŝlosilon kaj iujn informojn pri la atestilo de la posedanto. Ĉi tiu informo permesas, aliflanke, kontroli la integrecon de la atestilo mem, la aŭtentikecon kaj la posedanton de la atestilo. X.509-atestiloj havas respondan privatan ŝlosilon, kiu estas kutime konservita aparte de la atestilo pro sekurecaj kialoj.

La SSH-ŝlosilo enhavas nur la publikan ŝlosilon (la responda privata ŝlosilo estas konservita aparte). Ĝi ne enhavas ajnajn informojn pri la posedanto de la ŝlosilo. Kelkaj SSH-efektivigoj uzas X.509-atestilojn por aŭtentikigado, sed ili ne efektive kontrolas la tutan atestilĉenon—nur la publika ŝlosilo estas uzata (kio faras tian aŭtentikigon nekompleta).

konkludo

La FTP-protokolo sendube ankoraŭ ludas gravan rolon en la stokado kaj dissendo de informoj en la reto malgraŭ sia respektinda aĝo. Ĝi estas oportuna, multfunkcia kaj normigita protokolo. Multaj dosierarkivoj estis konstruitaj sur ĝia bazo, sen kiuj teknika laboro ne estus tiom efika. Krome, ĝi estas facile instalebla, kaj serviloj kaj klientprogramoj ekzistas por preskaŭ ĉiuj aktualaj kaj ne tiom aktualaj platformoj.

Siavice, ĝiaj protektitaj versioj solvas la problemon de konfidenco de konservitaj kaj transdonitaj datumoj en la moderna mondo. Ambaŭ novaj protokoloj havas siajn avantaĝojn kaj malavantaĝojn kaj servas iomete malsamajn rolojn. En tiuj lokoj, kie necesas dosiero-arkivo, estas preferinde uzi FTPS, precipe se klasika FTP jam estis uzata tie antaŭe. SFTP estas malpli ofta pro sia nekongruo kun la malnova protokolo, sed ĝi estas pli sekura kaj havas pli da funkcieco, ĉar ĝi estas parto de la fora mastruma sistemo.

Listo de fontoj

fonto: www.habr.com

Aldoni komenton