FTP – създаване на сигурна връзка

Помощен център

FTP – създаване на сигурна връзка

Протоколът за прехвърляне на файлове (FTP) е стандартен мрежов протокол, използван за прехвърляне на компютърни файлове между клиент и сървър в компютърна мрежа.

Основният FTP протокол обикновено използва порт 21 като средство за комуникация - FTP сървъра слуша на порт 21 за връзка с FTP клиент.

Как работи FTP протокола?

FTP клиента се свързва към FTP сървъра на порт 21 и се удостоверява като изпраща потребителско име и парола. Тази основна връзка се нарича Control Connection или Command Connection.

След удостоверяване, клиентът и сървърът обикновено договарят чрез серия от синхронизирани команди, управлявани от Command Connection, нов общ порт, наречен Data Connection, през който се осъществява трансфера.

Control Connection остава неактивна до края на трансфера, когато съобщава дали прехвърлянето на файловете е успешно или не.

Разговорът между клиента и сървъра се извършва в обикновен текст - цялата комуникация между двете страни се изпраща в незащитен формат по интернет. Това прави FTP много несигурен протокол и не би било трудно за трета страна, като например Man-in-the-Middle, да открадне данните за удостоверяване на потребителя.

FTPS - FTP през SSL

Докато основния FTP протокол не е сигурен, през годините са добавени разширения, за да се повиши сигурността на FTP, а именно стандартно 2048 битово TLS (Transport Layer Security) криптиране.

FTP over SSL (популярен като FTPS) позволява криптиране както на контролните, така и на връзките за данни едновременно или самостоятелно. Това е важно, защото договарянето на SSL връзката отнема много време и трябва да се направи два пъти - веднъж за Data Connection и веднъж за Control Connection - а това ще доведе до голямо забавяне ако клиент планира да трансферира голям брой малки файлове.

FTPS обикновено се изпълнява на порт 990 (връзката се нарича Implicit) или на порт 21 (Explicit).

Ако клиент се свърже към FTPS сървър на порт 990, предположението е, че клиентът възнамерява да договори криптирана връзка. Следователно SSL ръкостискането се извършва незабавно. Връзката е означена като Implicit, защото номерът на порта подсказва сигурност.

FTP клиентите, които се свързват на порт 21 и възнамеряват да използват SSL за сигурност, трябва да направят допълнителна стъпка, за да заявят изрично своите намерения, като изпратят на сървъра командата AUTH SSL или AUTH TLS.

След като сървърът получи тази команда, двете страни изпълняват SSL ръкостискане (handshake) и установяват сигурна връзка - затова порт 21 е посочен като Explicit.

Това позволява на клиента да активира по-голяма сигурност, когато е необходимо, или да ускори процеса когато сигурносттта не е от голямо значение (например качване на изображения за уеб, които ще бъдат публикувани в сайт).

SFTP - FTP през SSH

SFTP (Secure File Transfer Protocol) е сравнително нов протокол, който позволява прехвърлянето на файлове и данни през връзка, която предварително е била защитена чрез протокола Secure Shell (SSH).

За разлика от FTP, протоколът SFTP е базиран на пакети вместо текстово базиран. Когато FTP може да изпрати команда като DELE file.txt, SFTP ще изпрати бинарен код 0xBC и след това file.txt. Чрез изпращане на по-малко данни протоколът SFTP е по-бърз от FTP.

Друга разлика е, че при SFTP файловите трансфери се извършват последователно през главната контролна връзка, като по този начин се елиминира необходимостта от отваряне на отделна връзка за данни. Това има много предимства - чрез повторното използване на основната връзка, не се отварят други връзки между клиента и сървъра, което води до по-сигурна и ефективна връзка.

Тъй като SFTP работи през SSH, той по своята същност е сигурен. Няма несигурна версия - криптирането не може да бъде задействано или изключено чрез команда (AUTH) както при FTPS.

Друга разлика е, че повечето версии на SFTP са в състояние да предоставят много по-богат и по-подробен набор от данни за файловете, като разрешения, дата, време, размер и друга информация, която обикновено не е достъпна за FTP, благодарение на по-модерния и ефективен SFTP протокол.

В следващите примери ще ви покажем как може да ползвате безплатния FTP клиент FileZilla за изграждане на криптирана връзка с хостинга.

FTPS Implicit връзка чрез FileZilla

От информацията в началото на статията разбрахме, че FTPS изгражда два вида връзка - Implicit на порт 990 и Explicit на порт 21.

Отворете FileZilla, кликнете File > Site Manager:

ftps

Въведете данните за логване в cPanel:

ftps

От падащото меню Protocol изберете FTP - File Transfer Protocol.

От падащото меню Encryption изберете Require implicit FTP over TLS, въведете порт 990 и кликнете бутона Connect:

ftps

Не може да бъде установена връзка със сървъра с тези настройки и се генерира грешка:

ftps

Нека опитаме на порт 21 със същите данни за Protocol и Encryption:

ftps

Отново се генерира грешка:

ftps

Implicit договаряне не е дефинирано в RFC 4217 и се счита за по-ранен, отхвърлен метод за договаряне на TLS/SSL връзка за FTP.

Метода FTPS Implicit не се поддържа на сървърите на ICN.bg.

FTPS Explicit връзка чрез FileZilla

Отворете отново Site Manager, от падащото меню Encryption изберете Use explicit FTP over TLS if available и натиснете бутона Connect:

ftps

В прозореца с процесите виждаме, че успешно е изградена TLS връзка:

ftps

Имаме достъп до главната директория на хостинга през защитена връзка:

ftps

Избраната настройка е компромисна и трябва да се използва когато не сме сигурни дали сървъра поддържа FTPS (if available означава ако е налична).

Всички хостинг сървъри на ICN.bg поддържат FTPS затова препоръчаме да ползвате настройката Require explicit FTP over TLS:

ftps

SFTP сигурна връзка чрез FileZilla

За да ползвате SFTP трябва да имате заплатен и активиран SSH за вашия хостинг план (за плановете Бизнес и Стандарт SSH е безплатен и само трябва да се активира ръчно от колегите от техническа поддръжка).

При активиран и работещ SSH, в Site Manager на FileZilla от падащото меню Protocol избираме опцията SFTP SSH File Transfer Protocol, въвеждаме порт 22022 и кликаме бутона Connect:

ftps

Приемете ключа от сървъра като кликнете бутона ОК. За да не потвърждавате ключа при всяко логване през SFTP маркирайте полето Always trust this host …

ftps

Като резултат от въвеждане на коректни данни имаме достъп до главната директория на хостинга:

ftps

Припомняме, че за да работи SFTP трябва да се използвате данните за достъп на главния cPanel потребител. Ако ползвате данни на допълнително създаден FTP потребител, сървъра няма да позволи създаването на връзка и ще генерира грешка Authentication failed:

ftps