SFTP және FTPS протоколдары

Алғы сөз

Бір апта бұрын мен тақырыпта көрсетілген тақырып бойынша эссе жазып жатыр едім және Интернетте білім беру ақпараты соншалықты көп емес екеніне тап болдым. Негізінен құрғақ фактілер мен орнату нұсқаулары. Сондықтан мәтінді сәл түзетіп, мақала ретінде жариялауды жөн көрдім.

FTP дегеніміз не

FTP (File Transfer Protocol) – файлдарды желі арқылы тасымалдауға арналған протокол. Бұл негізгі Ethernet протоколдарының бірі. 1971 жылы пайда болды және бастапқыда DARPA желілерінде жұмыс істеді. Қазіргі уақытта, HTTP сияқты, файлдарды тасымалдау TCP/IP (Transmission Control Protocol/Internet Protocol) протоколдарының жиынтығынан тұратын үлгіге негізделген. RFC 959 стандартында анықталған.

Протокол келесілерді анықтайды:

  • Қатені тексеру қалай жүргізіледі?
  • Деректерді орау әдісі (егер қаптама пайдаланылса)
  • Жіберуші құрылғы хабарды аяқтағанын қалай көрсетеді?
  • Қабылдаушы құрылғы хабарлама алғанын қалай көрсетеді?

Клиент пен сервер арасындағы байланыс

FTP жұмысы кезінде пайда болатын процестерді толығырақ қарастырайық. Қосылым пайдаланушы протоколының интерпретаторымен инициализацияланады. Алмасу TELNET стандартындағы басқару арнасы арқылы басқарылады. FTP пәрмендері пайдаланушының протокол интерпретаторымен жасалады және серверге жіберіледі. Сервердің жауаптары да басқару арнасы арқылы пайдаланушыға жіберіледі. Тұтастай алғанда, пайдаланушы сервер протоколының интерпретаторымен және пайдаланушының аудармашысынан басқа құралдармен байланыс орнату мүмкіндігіне ие.

FTP-тің басты ерекшелігі - ол қос қосылымдарды пайдаланады. Олардың бірі серверге пәрмендерді жіберу үшін пайдаланылады және әдепкі бойынша өзгертуге болатын TCP 21 порты арқылы пайда болады. Басқару қосылымы клиент сервермен байланысқанша бар. Машиналар арасында деректерді тасымалдау кезінде басқару арнасы ашық болуы керек. Егер ол жабық болса, деректерді беру тоқтайды. Екіншісі арқылы деректерді тікелей тасымалдау орын алады. Ол клиент пен сервер арасында файлды тасымалдау орын алған сайын ашылады. Бірнеше файл бір уақытта тасымалданатын болса, олардың әрқайсысы өзінің тасымалдау арнасын ашады.

FTP белсенді немесе пассивті режимде жұмыс істей алады, олардың таңдауы қосылым қалай орнатылатынын анықтайды. Белсенді режимде клиент сервермен TCP басқару қосылымын жасайды және серверге өзінің IP мекенжайын және ерікті клиент портының нөмірін жібереді, содан кейін сервер осы мекенжаймен және порт нөмірімен TCP қосылымын бастауды күтеді. Егер клиент желіаралық қалқанның артында болса және кіріс TCP қосылымын қабылдай алмаса, пассивті режимді пайдалануға болады. Бұл режимде клиент серверге PASV пәрменін жіберу үшін басқару ағынын пайдаланады, содан кейін серверден оның IP мекенжайы мен порт нөмірін алады, содан кейін клиент өз ерікті портынан деректер ағынын ашу үшін пайдаланады.

Деректер үшінші құрылғыға берілуі мүмкін. Бұл жағдайда пайдаланушы екі сервері бар басқару арнасын ұйымдастырады және олардың арасында тікелей деректер арнасын ұйымдастырады. Басқару пәрмендері пайдаланушы арқылы өтеді, ал деректер серверлер арасында тікелей өтеді.

Деректерді желі арқылы тасымалдау кезінде төрт деректер көрсетілімін пайдалануға болады:

  • ASCII – мәтін үшін қолданылады. Деректер қажет болған жағдайда жіберу алдында жіберуші хосттағы таңба көрінісінен «сегіз разрядты ASCII» түріне және (қажет болса, қайтадан) қабылдаушы хосттағы таңба көрінісіне түрлендіріледі. Атап айтқанда, жаңа жол таңбалары өзгертіледі. Нәтижесінде, бұл режим жай мәтіннен көп файлдарды қамтитын файлдарға жарамайды.
  • Екілік режим – жіберуші құрылғы әрбір файлды байт бойынша жібереді, ал алушы алған кезде байт ағынын сақтайды. Бұл режимді қолдау барлық FTP іске асырулары үшін ұсынылған.
  • EBCDIC – EBCDIC кодтауында хосттар арасында қарапайым мәтінді тасымалдау үшін қолданылады. Әйтпесе, бұл режим ASCII режиміне ұқсас.
  • Жергілікті режим - бірдей параметрлері бар екі компьютерге ASCII түрлендірусіз деректерді өз форматында жіберуге мүмкіндік береді.

Деректерді беру үш режимнің кез келгенінде жүзеге асырылуы мүмкін:

  • Ағын режимі - деректер үздіксіз ағын ретінде жіберіледі, FTP кез келген өңдеуді орындаудан босатады. Оның орнына, барлық өңдеу TCP арқылы жүзеге асырылады. Деректерді жазбаларға бөлуді қоспағанда, файлдың соңы көрсеткіші қажет емес.
  • Блоктау режимі - FTP деректерді бірнеше блоктарға (тақырып блогы, байт саны, деректер өрісі) бөледі, содан кейін оларды TCP-ге жібереді.
  • Қысу режимі – деректер бір алгоритм арқылы қысылады (әдетте жұмыс ұзақтығын кодтау арқылы).

FTP сервері файлды тасымалдау протоколын пайдалану мүмкіндігін қамтамасыз ететін сервер. Оның кәдімгі веб-серверлерден ерекшеленетін белгілі бір ерекшеліктері бар:

  • Пайдаланушы аутентификациясы қажет
  • Барлық әрекеттер ағымдағы сеанс ішінде орындалады
  • Файлдық жүйемен әртүрлі әрекеттерді орындау мүмкіндігі
  • Әрбір қосылым үшін бөлек арна пайдаланылады

FTP клиенті - FTP арқылы қашықтағы серверге қосылуға, сонымен қатар файлдық жүйенің элементтерімен ондағы қажетті әрекеттерді орындауға мүмкіндік беретін бағдарлама. Клиент браузер болуы мүмкін, оның мекенжай жолына жалпы URL блок диаграммасына сәйкес қашықтағы сервердегі белгілі бір каталогқа немесе файлға жол болып табылатын мекенжайды енгізу керек:

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

Дегенмен, осы контексте веб-шолғышты пайдалану тек қызықты файлдарды көруге немесе жүктеп алуға мүмкіндік береді. FTP-тің барлық артықшылықтарын толық пайдалану үшін клиент ретінде арнайы бағдарламалық жасақтаманы пайдалану керек.

FTP аутентификациясы рұқсат беру үшін пайдаланушы аты/пароль схемасын пайдаланады. Пайдаланушы аты серверге USER пәрменімен, ал құпия сөз PASS командасымен жіберіледі. Егер клиент ұсынған ақпаратты сервер қабылдаса, онда сервер клиентке шақыру жібереді және сеанс басталады. Пайдаланушылар, егер сервер бұл мүмкіндікті қолдаса, тіркелгі деректерін бермей-ақ жүйеге кіре алады, бірақ сервер мұндай сеанстар үшін шектеулі қатынасты ғана бере алады.

FTP қызметін ұсынатын хост анонимді FTP қатынасын қамтамасыз ете алады. Пайдаланушылар әдетте пайдаланушы аты ретінде «анонимді» (кейбір FTP серверлерінде регистрді ескеруі мүмкін) арқылы жүйеге кіреді. Пайдаланушылардан әдетте құпия сөздің орнына электрондық пошта мекенжайын көрсету сұралғанымен, шын мәнінде ешқандай тексеру жүргізілмейді. Бағдарламалық құрал жаңартуларын қамтамасыз ететін көптеген FTP хосттары анонимді қатынасты қолдайды.

Протокол диаграммасы

FTP қосылымы кезінде клиент пен сервердің әрекеттесуін келесідей бейнелеуге болады:

SFTP және FTPS протоколдары

Қауіпсіз FTP

FTP бастапқыда қауіпсіз болуға арналмаған, өйткені ол көптеген әскери қондырғылар мен агенттіктер арасындағы байланысқа арналған. Бірақ Интернеттің дамуы мен таралуына байланысты рұқсатсыз кіру қаупі бірнеше есе артты. Серверлерді әртүрлі шабуылдардан қорғау қажеттілігі туындады. 1999 жылдың мамыр айында RFC 2577 авторлары осалдықтарды келесі мәселелер тізіміне жинақтады:

  • Жасырын шабуылдар (секіру шабуылдары)
  • Жалған шабуылдар
  • Күшті шабуылдар
  • Пакетті түсіру, иіскеу
  • Портты ұрлау

Кәдімгі FTP-де деректерді шифрланған түрде тасымалдау мүмкіндігі жоқ, нәтижесінде пайдаланушы аттары, парольдер, командалар және басқа ақпарат шабуылдаушылар оңай және оңай ұсталады. Бұл мәселенің әдеттегі шешімі осал хаттаманың (FTPS) «қауіпсіз», TLS-қорғалған нұсқаларын немесе Secure Shell протоколдарының көпшілігімен қамтамасыз етілген SFTP/SCP сияқты қауіпсізірек протоколды пайдалану болып табылады.

FTPS

FTPS (FTP + SSL) стандартты файлдарды тасымалдау протоколының кеңейтімі болып табылады, оның негізгі функционалдығына SSL (Secure Sockets Layer) протоколы арқылы шифрланған сеанстарды жасауды қосады. Бүгінгі күні қорғаныс оның анағұрлым жетілдірілген аналогы TLS (Transport Layer Security) арқылы қамтамасыз етіледі.

SSL

SSL хаттамасын 1996 жылы Netscape Communications интернет қосылымдарының қауіпсіздігі мен құпиялылығын қамтамасыз ету үшін ұсынған. Протокол клиент пен сервердің аутентификациясын қолдайды, қолданбадан тәуелсіз және HTTP, FTP және Telnet протоколдары үшін мөлдір.

SSL Handshake протоколы екі кезеңнен тұрады: сервердің аутентификациясы және қосымша клиенттің аутентификациясы. Бірінші кезеңде сервер клиенттің сұранысына өзінің сертификаты мен шифрлау параметрлерін жіберу арқылы жауап береді. Содан кейін клиент негізгі кілтті жасайды, оны сервердің ашық кілтімен шифрлайды және оны серверге жібереді. Сервер өзінің жеке кілтімен басты кілттің шифрын шешеді және клиенттің басты кілтімен аутентификацияланған хабарламаны қайтару арқылы клиентке аутентификацияланады.

Кейінгі деректер осы басты кілттен алынған кілттермен шифрланады және аутентификацияланады. Екінші қадамда, бұл міндетті емес, сервер клиентке сұраныс жібереді, ал клиент сұрауды өзінің сандық қолтаңбасымен және ашық кілт сертификатымен қайтару арқылы серверге аутентификацияланады.

SSL әртүрлі криптографиялық алгоритмдерді қолдайды. Байланысты орнату кезінде RSA ашық кілтті криптожүйе қолданылады. Кілттермен алмасудан кейін көптеген әртүрлі шифрлар қолданылады: RC2, RC4, IDEA, DES және TripleDES. Сондай-ақ MD5 қолданылады - хабарлама дайджестін құру алгоритмі. Ашық кілт сертификаттарының синтаксисі X.509-да сипатталған.

SSL маңызды артықшылықтарының бірі оның бағдарламалық-платформаның толық тәуелсіздігі болып табылады. Хаттама портативтілік принциптері бойынша әзірленген және оны құру идеологиясы ол қолданылатын қолданбаларға байланысты емес. Сонымен қатар, басқа хаттамалардың SSL протоколының үстіне мөлдір қабаттасуы да маңызды; мақсатты ақпарат ағындарын қорғау дәрежесін одан әрі арттыру немесе SSL криптографиялық мүмкіндіктерін қандай да бір басқа, нақты анықталған тапсырмаға бейімдеу.

SSL қосылымы

SFTP және FTPS протоколдары

SSL қамтамасыз ететін қауіпсіз арнаның үш негізгі қасиеті бар:

  • Арна жеке. Шифрлау құпия кілтті анықтауға қызмет ететін қарапайым диалогтан кейін барлық хабарламалар үшін қолданылады.
  • Арна аутентификацияланған. Әңгімелесудің сервер жағы әрқашан аутентификацияланады, ал клиент жағы қосымша аутентификацияланады.
  • Канал сенімді. Хабарды тасымалдау тұтастықты тексеруді қамтиды (MAC көмегімен).

FTPS мүмкіндіктері

Қауіпсіздікті қамтамасыз етудің әртүрлі әдістерін қолданатын FTPS екі іске асырылуы бар:

  • Жасырын әдіс деректерді жіберу алдында сеанс орнату үшін стандартты SSL протоколын пайдалануды қамтиды, бұл өз кезегінде қарапайым FTP клиенттерімен және серверлерімен үйлесімділікті бұзады. FTPS қолдамайтын клиенттермен кері үйлесімділік үшін TCP порты 990 басқару қосылымы үшін және 989 деректерді тасымалдау үшін пайдаланылады. Бұл FTP протоколы үшін стандартты 21 портты сақтайды. Бұл әдіс ескірген деп саналады.
  • Explicit әлдеқайда ыңғайлы, өйткені ол стандартты FTP пәрмендерін пайдаланады, бірақ жауап беру кезінде деректерді шифрлайды, бұл FTP және FTPS үшін бірдей басқару қосылымын пайдалануға мүмкіндік береді. Клиент серверден қауіпсіз деректерді тасымалдауды нақты сұрауы керек, содан кейін шифрлау әдісін мақұлдауы керек. Егер клиент қауіпсіз тасымалдауды сұрамаса, FTPS сервері қорғалмаған қосылымды қолдауға немесе жабуға құқылы. Жаңа FTP AUTH пәрменін қамтитын RFC 2228 астында аутентификация және деректер қауіпсіздігін келіссөздер механизмі қосылды. Бұл стандарт қауіпсіздік механизмдерін нақты анықтамаса да, қауіпсіз қосылымды клиент жоғарыда сипатталған алгоритмді пайдалана отырып бастау керек екенін көрсетеді. Қауіпсіз қосылымдарға сервер қолдау көрсетпесе, 504 қате коды қайтарылуы керек.FTPS клиенттері FEAT пәрмені арқылы сервер қолдайтын қауіпсіздік протоколдары туралы ақпаратты ала алады, дегенмен серверден оның қандай қауіпсіздік деңгейлері бар екенін ашу талап етілмейді. қолдайды. Ең көп таралған FTPS пәрмендері AUTH TLS және AUTH SSL болып табылады, олар сәйкесінше TLS және SSL қауіпсіздігін қамтамасыз етеді.

SFTP

SFTP (Secure File Transfer Protocol) – қауіпсіз арнаның үстінде жұмыс істейтін қолданбалы деңгей файлдарын тасымалдау протоколы. Бірдей аббревиатурасы бар (Қарапайым файлды тасымалдау протоколымен) шатастырмау керек. Егер FTPS жай ғана FTP кеңейтімі болса, SFTP негізі ретінде SSH (Secure Shell) қолданатын бөлек және байланыссыз протокол болып табылады.

Қауіпсіз Shell

Хаттаманы Secsh деп аталатын IETF топтарының бірі әзірлеген. Жаңа SFTP хаттамасының жұмыс құжаттамасы ресми стандартқа айналмады, бірақ қолданбаларды әзірлеу үшін белсенді түрде қолданыла бастады. Кейіннен хаттаманың алты нұсқасы шығарылды. Алайда, ондағы функционалдылықтың біртіндеп артуы 14 жылғы 2006 тамызда жобаның негізгі тапсырмасының (SSH әзірлеу) аяқталуына және болмауына байланысты хаттаманы әзірлеу бойынша жұмысты тоқтату туралы шешім қабылданғанына әкелді. толыққанды қашықтағы файлдық жүйе хаттамасын әзірлеуге көшу үшін жеткілікті сарапшы деңгейі.

SSH – операциялық жүйені қашықтан басқаруға және TCP қосылымдарын туннельдеуге мүмкіндік беретін желілік протокол (мысалы, файлдарды тасымалдау үшін). Функционалдылығы бойынша Telnet және rlogin протоколдарына ұқсас, бірақ олардан айырмашылығы ол барлық трафикті, соның ішінде жіберілетін құпия сөздерді шифрлайды. SSH әртүрлі шифрлау алгоритмдерін таңдауға мүмкіндік береді. SSH клиенттері мен SSH серверлері көптеген желілік операциялық жүйелер үшін қол жетімді.

SSH кез келген дерлік басқа желілік протоколды қорғалмаған ортада қауіпсіз тасымалдауға мүмкіндік береді. Осылайша, сіз компьютерде командалық қабық арқылы қашықтан жұмыс істеп қана қоймай, шифрланған арна арқылы аудио ағынды немесе бейнені (мысалы, веб-камерадан) жібере аласыз. SSH сонымен қатар келесі шифрлау үшін жіберілген деректерді қысуды пайдалана алады, бұл, мысалы, X WindowSystem клиенттерін қашықтан іске қосу үшін ыңғайлы.

Хаттаманың бірінші нұсқасы, SSH-1, 1995 жылы Хельсинки технологиялық университетінің (Финляндия) зерттеушісі Тату Улёненмен әзірленген. SSH-1 rlogin, telnet және rsh протоколдарына қарағанда көбірек құпиялылықты қамтамасыз ету үшін жазылған. 1996 жылы SSH-2 протоколымен үйлеспейтін SSH-1 протоколының қауіпсіз нұсқасы жасалды. Хаттама одан да танымал болды және 2000 жылға қарай оның шамамен екі миллион пайдаланушысы болды. Қазіргі уақытта «SSH» термині әдетте SSH-2 дегенді білдіреді, өйткені Хаттаманың бірінші нұсқасы қазір елеулі кемшіліктерге байланысты іс жүзінде қолданылмайды. 2006 жылы хаттама IETF жұмыс тобымен интернет стандарты ретінде бекітілді.

SSH екі жалпы іске асыру бар: жеке коммерциялық және тегін ашық бастапқы коды. Тегін енгізу OpenSSH деп аталады. 2006 жылға қарай Интернеттегі компьютерлердің 80% OpenSSH пайдаланған. Меншікті енгізуді Tectia корпорациясының XNUMX% еншілес кәсіпорны болып табылатын SSH Communications Security әзірлеген және коммерциялық емес пайдалану үшін ақысыз. Бұл іске асыру командалардың бірдей дерлік жиынын қамтиды.

SSH-2 протоколы, telnet протоколынан айырмашылығы, трафикті тыңдау шабуылдарына («иіскеу») төзімді, бірақ ортадағы адам шабуылдарына төзімді емес. SSH-2 протоколы сеансты ұрлау шабуылдарына да төзімді, өйткені бұрыннан орнатылған сеансқа қосылу немесе басып алу мүмкін емес.

Кілті клиентке әлі белгісіз хостқа қосылу кезінде ортадағы адам шабуылдарының алдын алу үшін клиент бағдарламалық құралы пайдаланушыға «кілт саусақ ізін» көрсетеді. Клиенттік бағдарламалық құрал көрсеткен «кілттің суретін» сенімді байланыс арналары арқылы немесе жеке өзі алған дұрысы сервер кілтінің суретімен мұқият тексеру ұсынылады.

SSH қолдауы барлық UNIX-тәрізді жүйелерде қол жетімді және көпшілігінде стандартты утилиталар ретінде ssh клиенті мен сервері бар. UNIX емес операциялық жүйелер үшін SSH клиенттерінің көптеген іске асырулары бар. Хаттама маңызды түйіндерді басқару үшін қауіпсіз емес Telnet протоколына балама шешім ретінде трафик анализаторлары мен жергілікті желілердің жұмысын бұзу әдістерін кеңінен дамытқаннан кейін үлкен танымалдыққа ие болды.

SSH көмегімен байланыс

SSH арқылы жұмыс істеу үшін сізге SSH сервері және SSH клиенті қажет. Сервер клиенттік машиналардан қосылымдарды тыңдайды және қосылым орнатылған кезде аутентификацияны орындайды, содан кейін ол клиентке қызмет көрсете бастайды. Клиент қашықтағы компьютерге кіру және командаларды орындау үшін пайдаланылады.

SFTP және FTPS протоколдары

FTPS-пен салыстыру

SFTP стандартты FTP және FTPS-тен ерекшеленетін басты нәрсе - SFTP барлық командаларды, пайдаланушы атын, құпия сөздерді және басқа да құпия ақпаратты шифрлайды.

FTPS және SFTP протоколдарының екеуі де асимметриялық алгоритмдердің (RSA, DSA), симметриялық алгоритмдердің (DES/3DES, AES, Twhofish және т.б.), сонымен қатар кілттер алмасу алгоритмінің комбинациясын пайдаланады. Аутентификация үшін FTPS (дәлірек айтсақ, FTP арқылы SSL/TLS) X.509 сертификаттарын пайдаланады, ал SFTP (SSH протоколы) SSH кілттерін пайдаланады.

X.509 сертификаттары ашық кілтті және иесінің сертификаты туралы кейбір ақпаратты қамтиды. Бұл ақпарат, екінші жағынан, сертификаттың өзінің тұтастығын, түпнұсқалығын және сертификат иесін тексеруге мүмкіндік береді. X.509 сертификаттарының сәйкес жеке кілті бар, ол әдетте қауіпсіздік мақсатында сертификаттан бөлек сақталады.

SSH кілтінде тек ашық кілт бар (сәйкес жеке кілт бөлек сақталады). Онда кілттің иесі туралы ешқандай ақпарат жоқ. Кейбір SSH енгізулері аутентификация үшін X.509 сертификаттарын пайдаланады, бірақ олар шын мәнінде бүкіл сертификаттар тізбегін тексермейді — тек ашық кілт пайдаланылады (бұл аутентификацияны толық емес етеді).

қорытынды

FTP хаттамасы, сөзсіз, өзінің ескілігіне қарамастан желіде ақпаратты сақтау және таратуда маңызды рөл атқарады. Бұл ыңғайлы, көп функциялы және стандартталған протокол. Оның негізінде көптеген файлдық мұрағаттар салынды, онсыз техникалық жұмыс онша тиімді болмас еді. Бұған қоса, оны орнату оңай және сервер мен клиенттік бағдарламалар барлық дерлік қазіргі және қазіргі емес платформалар үшін бар.

Өз кезегінде, оның қорғалған нұсқалары қазіргі әлемдегі сақталған және жіберілетін деректердің құпиялылығы мәселесін шешеді. Екі жаңа хаттаманың да жақсы және жаман жақтары бар және сәл басқа рөлдерді атқарады. Файл мұрағаты қажет аймақтарда, әсіресе классикалық FTP бұрын қолданылған болса, FTPS қолданған дұрыс. SFTP ескі протоколмен үйлеспейтіндіктен сирек кездеседі, бірақ ол қашықтан басқару жүйесінің бөлігі болғандықтан қауіпсіз және көбірек функционалдылыққа ие.

Дереккөздер тізімі

Ақпарат көзі: www.habr.com

пікір қалдыру