SFTP и FTPS протоколи

предговор

Само преди седмица пишех есе по темата, посочена в заглавието, и се сблъсках с факта, че, да речем, в интернет няма толкова много образователна информация. Предимно сухи факти и инструкции за настройка. Затова реших леко да коригирам текста и да го публикувам като статия.

Какво е FTP

FTP (File Transfer Protocol) е протокол за прехвърляне на файлове през мрежа. Това е един от основните Ethernet протоколи. Появява се през 1971 г. и първоначално работи в мрежите на DARPA. Понастоящем, подобно на HTTP, прехвърлянето на файлове се основава на модел, състоящ се от набор от TCP/IP (Протокол за контрол на предаването/Интернет протокол) протоколи. Дефинирано в 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 обобщиха уязвимостите в следния списък с проблеми:

  • Скрити атаки (bounce атаки)
  • Фалшиви атаки
  • Атаки с груба сила
  • Улавяне на пакети, снифтинг
  • Кражба на пристанище

Редовният 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 протокола. Този метод се счита за остарял.
  • Explicit е много по-удобно, тъй като използва стандартни FTP команди, но криптира данните при отговор, което ви позволява да използвате една и съща контролна връзка както за FTP, така и за FTPS. Клиентът трябва изрично да поиска защитен трансфер на данни от сървъра и след това да одобри метода на криптиране. Ако клиентът не поиска защитен трансфер, FTPS сървърът има право или да поддържа, или да затвори незащитената връзка. Под RFC 2228 беше добавен механизъм за удостоверяване и договаряне на сигурността на данните, който включва новата команда FTP AUTH. Въпреки че този стандарт не дефинира изрично механизмите за сигурност, той уточнява, че защитена връзка трябва да бъде инициирана от клиента, използвайки алгоритъма, описан по-горе. Ако защитените връзки не се поддържат от сървъра, трябва да се върне код за грешка 504. FTPS клиентите могат да получат информация за протоколите за сигурност, поддържани от сървъра, като използват командата FEAT, но от сървъра не се изисква да разкрива какви нива на сигурност има поддържа. Най-често срещаните FTPS команди са AUTH TLS и AUTH SSL, които осигуряват съответно TLS и SSL сигурност.

SFTP

SFTP (Протокол за защитено прехвърляне на файлове) е протокол за прехвърляне на файлове от приложно ниво, който работи върху защитен канал. Да не се бърка с (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 Corporation, и е безплатно за некомерсиална употреба. Тези реализации съдържат почти същия набор от команди.

Протоколът SSH-2, за разлика от протокола telnet, е устойчив на атаки за подслушване на трафик („подслушване“), но не е устойчив на атаки човек по средата. Протоколът SSH-2 също е устойчив на атаки за отвличане на сесия, тъй като е невъзможно да се присъедините или да отвлечете вече установена сесия.

За да предотврати атаки тип „човек по средата“ при свързване към хост, чийто ключ все още не е известен на клиента, клиентският софтуер показва на потребителя „отпечатък на ключ“. Препоръчва се внимателно да проверите „моментната снимка на ключа“, показана от клиентския софтуер, с моментната снимка на ключа на сървъра, за предпочитане получена чрез надеждни комуникационни канали или лично.

Поддръжката на 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 е по-рядко срещан поради несъвместимостта му със стария протокол, но е по-сигурен и има повече функционалност, тъй като е част от системата за дистанционно управление.

Списък с източници

Източник: www.habr.com

Добавяне на нов коментар