Пратаколы 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 server - гэта сервер, які прадугледжвае магчымасць выкарыстання пратаколу перадачы файлаў. Ён валодае вызначанымі асаблівасцямі, якія адрозніваюць яго ад звычайных вэб-сервераў:

  • Неабходна аўтэнтыфікацыя карыстальнікаў
  • Усе аперацыі праводзяцца ў рамках бягучай сесіі
  • Магчымасць ажыццяўлення розных дзеянняў з файлавай сістэмай
  • Ужываецца асобны канал для кожнага злучэння

FTP client - гэта праграма, якая дазваляе падлучыцца да выдаленага сервера па FTP і таксама выконваць на ім неабходныя дзеянні з элементамі файлавай сістэмы. Кліентам цалкам можа быць браўзэр, у адрасны радок якога варта ўвесці адрас, уяўлялы сабой шлях да вызначанага каталога або файла на выдаленым серверы, у адпаведнасці з агульнай блок-схемай URL:

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

Аднак жа, выкарыстанне вэб-аглядальніка ў такім разрэзе дазволіць толькі прагледзець ці спампаваць якія цікавяць файлы. Для таго, каб у поўнай меры задзейнічаць усе плюсы FTP, у якасці кліента варта прымяніць спецыялізаванае праграмнае забеспячэнне.

FTP-аўтэнтыфікацыя выкарыстоўвае схему імя карыстальніка/пароль для прадастаўлення доступу. Імя карыстальніка дасылаецца серверу камандай USER, а пароль - камандай PASS. Калі прадстаўленая кліентам інфармацыя прынятая серверам, то сервер адправіць кліенту запрашэнне і пачынаецца сесія. Карыстальнікі могуць, калі сервер падтрымлівае гэтую асаблівасць, увайсці ў сістэму без падавання ўліковых дадзеных, але сервер можа падаць толькі абмежаваны доступ для такіх сесій.

Хост, які забяспечвае FTP-сэрвіс, можа даць ананімны доступ да FTP. Карыстальнікі звычайна ўваходзяць у сістэму як "anonymous" (можа быць рэгістразалежным на некаторых FTP-серверах) у якасці імя карыстальніка. Хоць звычайна карыстальнікаў просяць даслаць адрас іх электроннай пошты замест пароля, ніякай праверкі фактычна не робіцца. Многія FTP-хасты, якія прадстаўляюць абнаўленні праграмнага забеспячэння, падтрымліваюць ананімны доступ.

Схема пратакола

Узаемадзеянне "кліент-сервер" пры FTP-злучэнні можна наглядна прадставіць наступным чынам:

Пратаколы SFTP і FTPS

Бяспечны FTP

FTP першапачаткова не задумваўся як абаронены, паколькі прызначаўся для сувязі паміж некалькімі вайсковымі аб'ектамі і ўстановамі. Але з развіццём і распаўсюджваннем інтэрнэту небяспека несанкцыянаванага доступу ўзрасла ў шмат разоў. Узнікла неабходнасць абароны сервераў ад рознага роду нападаў. У траўні 1999 аўтары RFC 2577 звялі ўразлівасці ў наступны спіс праблем:

  • Схаваная атакі (bounce attacks)
  • Спуф-напады (spoof attacks)
  • Напады метадам грубай сілы (brute force attacks)
  • Перахоп пакетаў, сніфінг (packet capture, sniffing)
  • Захоп партоў (port stealing)

Звычайны FTP не валодае магчымасцю перадачы дадзеных у зашыфраваным выглядзе, з прычыны чаго імёны карыстальнікаў, паролі, каманды і іншая інфармацыя могуць пры жаданні лёгка і проста быць перахоплены зламыснікамі. Звычайнае рашэнне гэтай праблемы – выкарыстоўваць "бяспечныя", TLS-абароненыя версіі ўразлівых пратаколу (FTPS) ці ж іншы, больш абаронены пратакол, накшталт SFTP/SCP, які прадстаўляецца з большасцю рэалізацый пратаколу Secure Shell.

FTPS

FTPS (FTP + SSL) – пашырэнне стандартнага пратакола перадачы файлаў, якое дадае ў яго базавы функцыянал стварэнне шыфраваных сесій з дапамогай пратакола SSL (Secure Sockets Layer – узровень абароненых сокетаў). На сённяшні дзень абарона забяспечваецца яго больш прасунутым аналагам TLS (Transport Layer Security – абарона транспартнага ўзроўню).

SSL

Пратакол SSL прапанаваны карпарацыяй Netscape Communications у 1996 году з мэтай забеспячэння бяспекі і сакрэтнасці інтэрнэт-злучэнняў. Пратакол падтрымлівае аўтэнтыфікацыю (усталяванне сапраўднасці) кліента і сервера, не залежыць ад прыкладанняў і празрысты для пратаколаў 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. Гэта дазваляе захаваць стандартны порт 21 для пратаколу FTP. Дадзены метад прызнаны састарэлым.
  • Відавочны - нашмат зручнейшы, бо выкарыстоўвае каманды стандартнага FTP, але пры адказе шыфруе дадзеныя, што дазваляе выкарыстоўваць адно і таксама кіравальнае злучэнне як для FTP, так і для FTPS. Кліент павінен відавочна запытаць абароненую перадачу дадзеных у сервера, а пасля зацвердзіць спосаб шыфравання. Калі кліент не запытае абароненую перадачу, FTPS сервер мае права як захаваць, так і закрыць неабароненае злучэнне. Механізм узгаднення ідэнтыфікацыі і абароны дадзеных быў дададзены пад RFC 2228 які ўключае ў сябе новую FTP каманду AUTH. Хоць гэты стандарт не вызначае відавочна механізмы абароны, ён вызначае, што абароненае злучэнне павінен ініцыяваць кліент з дапамогай апісанага вышэй алгарытму. Калі абароненыя злучэнні не падтрымліваюцца серверам, павінен быць вернуты код памылкі 504. FTPS кліенты могуць атрымаць інфармацыю аб падтрымліваемых серверам пратаколах абароны пры дапамозе каманды FEAT, тым не менш сервер не абавязаны выдаваць тое, якія ўзроўні бяспекі ён падтрымлівае. Найбольш распаўсюджаныя FTPS каманды AUTH TLS і AUTH SSL, якія забяспечваюць абарону TLS і SSL адпаведна.

SFTP

SFTP (Secure File Transfer Protocol) – пратакол прыкладнога ўзроўня перадачы файлаў, які працуе па-над бяспечным каналам. Не варта блытаць з (Simple File Transfer Protocol), якія маюць такую ​​ж абрэвіятуру. Калі FTPS з'яўляецца проста пашырэннем FTP, то SFTP гэта асобны і ніяк не злучаны з ім пратакол, які ў якасці асновы выкарыстае SSH (Secure Shell – бяспечная абалонка).

Secure Shell

Распрацоўкай пратакола займалася адна з груп IETF пад назвай Secsh. Працоўная дакументацыя да новага пратаколу 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. Прыватная рэалізацыя распрацоўваецца арганізацыяй SSH Communications Security, якая з'яўляецца стоадсоткавым падраздзяленнем карпарацыі Tectia, яна бясплатная для некамерцыйнага выкарыстання. Гэтыя рэалізацыі змяшчаюць практычна аднолькавы набор каманд.

Пратакол SSH-2, у адрозненне ад пратаколу telnet, устойлівы да нападаў праслухоўвання трафіку («снифинг»), але няўстойлівы да нападаў «чалавек пасярэдзіне». Пратакол SSH-2 таксама ўстойлівы да нападаў шляхам далучэння пасярэдзіне (ангел. sessionhijacking), бо немагчыма ўлучыцца ва ўжо ўсталяваную сесію або перахапіць яе.

Для прадухілення нападаў «чалавек пасярэдзіне» пры падлучэнні да хаста, ключ якога яшчэ не вядомы кліенту, кліенцкае ПА паказвае карыстачу «злепак ключа» (ангел. keyfingerprint). Рэкамендуецца старанна правяраць паказаны кліенцкім ПА "злепак ключа" са злепкам ключа сервера, пажадана атрыманым па надзейных каналах сувязі або асабіста.

Падтрымка SSH рэалізаваная ва ўсіх UNIX-падобных сістэмах, і на большасці з іх у ліку стандартных утыліт прысутнічаюць кліент і сервер ssh. Існуе мноства рэалізацый SSH-кліентаў і для не-UNIX АС. Вялікую папулярнасць пратакол атрымаў пасля шырокага развіцця аналізатараў трафіку і спосабаў парушэння працы лакальных сетак, як альтэрнатыўнае небяспечнаму пратаколу Telnet рашэнне для кіравання важнымі вузламі.

Сувязь з выкарыстаннем SSH

Для працы па SSH патрэбен SSH-сервер і SSH-кліент. Сервер праслухоўвае злучэнні ад кліенцкіх машын і пры ўстанаўленні сувязі праводзіць аўтэнтыфікацыю, пасля чаго пачынае абслугоўванне кліента. Кліент выкарыстоўваецца для ўваходу на выдаленую машыну і выканання каманд.

Пратаколы SFTP і FTPS

Параўнанне з FTPS

Галоўнае, што адрознівае SFTP ад стандартнага FTP і FTPS, гэта тое, што SFTP шыфруе абсалютна ўсе каманды, імёны карыстальнікаў, паролі і іншую канфідэнцыйную інфармацыю.

Абодва пратаколу FTPS і SFTP выкарыстоўваюць спалучэнне асіметрычных алгарытмаў (RSA, DSA), сіметрычных алгарытмаў (DES/3DES, AES, Twhofish г.д.), а таксама алгарытм абмену ключамі. Для аўтэнтыфікацыі FTPS (ці, калі быць больш дакладным, SSL / TLS па пратаколе FTP) выкарыстоўвае сертыфікаты X.509, у той час як SFTP (SSH пратакол) выкарыстоўвае SSH ключы.

Сертыфікаты X.509 уключае ў сябе адкрыты ключ і некаторую інфармацыю аб сертыфікаце ўладальніка. Гэтая інфармацыя дазваляе, з іншага боку, праверыць цэласнасць самога сертыфіката, сапраўднасць і ўладальніка пасведчання. Сертыфікатаў X.509 мае адпаведны зачынены ключ, які звычайна захоўваецца асобна ад сертыфіката па меркаваннях бяспекі.

SSH ключ змяшчае толькі адкрыты ключ (адпаведны закрыты ключ захоўваецца асобна). У ім не ўтрымліваецца ніякай інфармацыі аб уладальніку ключа. Некаторыя SSH рэалізацыі выкарыстоўваюць сертыфікаты X.509 для аўтэнтыфікацыі, але на самой справе яны не правяраюць увесь ланцужок сертыфікатаў - толькі адкрыты ключ выкарыстоўваецца (што робіць такую ​​праверку сапраўднасці няпоўнай).

Заключэнне

Пратакол FTP, несумненна, да гэтага часу гуляе важную ролю ў пытанні захоўвання і распаўсюджвання інфармацыі ў сетцы нягледзячы на ​​свой шаноўны ўзрост. Гэта зручны, шматфункцыянальны і стандартызаваны пратакол. На яго базе пабудавана мноства файлавых архіваў, без якіх тэхнічная праца была б не гэтак эфектыўная. Акрамя таго, ён лёгкі ў наладзе, а праграмы-серверы і кліенты існуюць практычна для ўсіх актуальных і не вельмі платформаў.

У сваю чаргу яго абароненыя версіі вырашаюць праблему прыватнасці захоўваемых і перадаюцца дадзеных у сучасным свеце. Абодва новыя пратаколы маюць свае плюсы і мінусы і выконваюць крыху розныя ролі. У тых абласцях, дзе неабходны менавіта файлавы архіў пераважней выкарыстоўваць FTPS, асабліва калі раней тамака ўжо выкарыстоўваўся класічны FTP. SFTP менш распаўсюджаны ў сілу сваёй несумяшчальнасці са старым пратаколам, але больш абаронены і мае большы функцыянал, бо з'яўляецца часткай сістэмы выдаленага кіравання.

Спіс крыніц

Крыніца: habr.com

Дадаць каментар