Введение
FTPS (также известный как FTP SSL и FTP Secure) — это расширение широко используемого протокола передачи файлов (FTP), добавляющее поддержку криптографических протоколов Transport Layer Security (TLS) и, ранее, Secure Sockets Layer (SSL, использование которого теперь запрещено RFC7568). FTPS не следует путать с протоколом SSH File Transfer Protocol (SFTP) — подсистемой безопасной передачи файлов для протокола Secure Shell (SSH), с которой он несовместим. Он также отличается от FTP через SSH, представляющего собой способ организации туннеля для FTP-соединения через SSH.
FTP over SSL
FTPS (also known as FTP SSL and FTP Secure) is an extension to the commonly used File Transfer Protocol (FTP) that adds support for the Transport Layer Security (TLS) and, formerly, the Secure Sockets Layer (SSL, which is now prohibited by RFC7568) cryptographic protocols. FTPS should not be confused with the SSH File Transfer Protocol (SFTP), a secure file transfer subsystem for the Secure Shell (SSH) protocol with which it is not compatible. It is also different from FTP over SSH, which is the practice of tunneling FTP through an SSH connection.
Предыстория
Протокол передачи файлов был разработан в 1971 году для использования в научной и исследовательской сети ARPANET. Доступ к ARPANET в то время был ограничен небольшим числом военных объектов и университетов, а также узким кругом пользователей, которые могли работать без требований к безопасности и конфиденциальности данных в рамках протокола. По мере того как ARPANET уступала место NSFNET, а затем Интернету, более широкая аудитория потенциально получала доступ к данным при их передаче по все более длинным маршрутам от клиента к серверу. Соответственно, возрастала вероятность несанкционированного перехвата данных третьими лицами. В 1994 году компания Netscape разработала и выпустила обертку прикладного уровня Secure Sockets Layer. Этот протокол позволял приложениям обмениваться данными по сети конфиденциально и безопасно, предотвращая прослушивание, несанкционированное изменение и подделку сообщений. Хотя он мог повысить безопасность любого протокола, использующего надежные соединения, такие как TCP, чаще всего он использовался Netscape совместно с HTTP для создания HTTPS. Протокол SSL в конечном итоге был применен к FTP, и в конце 1996 года был опубликован проект запроса комментариев (RFC). Вскоре после этого был зарегистрирован официальный порт IANA. Однако RFC был окончательно утвержден только в 2005 году.
Способы обращения к обеспечению
Для использования с FTP-клиентами были разработаны два отдельных метода обеспечения безопасности: неявный и явный. Неявный метод требует установления защиты транспортного уровня с самого начала соединения, что, в свою очередь, нарушает совместимость с клиентами и серверами, не поддерживающими FTPS. Явный метод использует стандартные команды и ответы протокола FTP для перехода от незашифрованного соединения к зашифрованному, позволяя использовать один управляющий порт для работы как с клиентами, поддерживающими FTPS, так и с клиентами, не поддерживающими FTPS.
Неявный
Переговоры не поддерживаются в конфигурациях FTPS с неявным шифрованием. Клиент должен немедленно инициировать соединение с сервером FTPS, отправив сообщение TLS ClientHello. Если сервер FTPS не получит это сообщение, он должен разорвать соединение. Для обеспечения совместимости с существующими клиентами, не поддерживающими FTPS, предполагалось, что имплицитный FTPS будет прослушивать известный порт IANA 990/TCP для управляющего канала FTPS и порт 989/TCP для канала передачи данных FTPS. Это позволяло администраторам сохранять поддержку устаревших сервисов на исходном управляющем канале FTP 21/TCP. Следует отметить, что неявные переговоры не были определены в RFC 4217. Таким образом, это считается более ранним и устаревшим способом установления TLS/SSL для FTP.
Явное
В режиме явного (также известном как FTPES) запроса, FTPS-клиент должен "явно запросить" защиту у FTPS-сервера, а затем перейти к взаимно согласованному методу шифрования. Если клиент не запрашивает защиту, FTPS-сервер может либо разрешить клиенту продолжить работу в незащищенном режиме, либо отклонить соединение. Механизм для согласования аутентификации и безопасности с FTP был добавлен в RFC 2228, который включал новую команду FTP AUTH. Хотя в этом RFC явно не определены обязательные механизмы безопасности, такие как SSL или TLS, он требует, чтобы FTPS-клиент инициировал запрос к FTPS-серверу с использованием взаимно известного механизма. Если FTPS-клиент инициирует запрос к FTPS-серверу с использованием неизвестного механизма безопасности, FTPS-сервер ответит на команду AUTH кодом ошибки 504 (не поддерживается). Клиенты могут определить, какие механизмы поддерживаются, запрашивая FTPS-сервер с помощью команды FEAT, хотя серверы не обязаны честно сообщать об уровнях поддерживаемой безопасности. Распространенными способами активации безопасности FTPS были AUTH TLS и AUTH SSL. Явный метод определен в RFC 4217. В более поздних версиях документа соответствие FTPS требовало, чтобы клиенты всегда согласовывали соединение с использованием метода AUTH TLS.
Общая поддержка
FTPS обеспечивает полную поддержку криптографических протоколов TLS и SSL, включая использование сертификатов открытых ключей для аутентификации сервера и сертификатов для авторизации клиента. Он также поддерживает совместимые алгоритмы шифрования, такие как AES, RC4, RC2, Triple DES и DES. Кроме того, поддерживаются хеш-функции SHA, MD5, MD4 и MD2.
Область применения
В неявном режиме весь сеанс FTPS зашифрован. В явном режиме клиент имеет полный контроль над тем, какие части соединения подлежат шифрованию. Включение и отключение шифрования для управляющего канала FTPS и канала передачи данных FTPS может осуществляться в любой момент времени. Единственное ограничение исходит от сервера FTPS, который может отклонять команды в соответствии с политикой шифрования сервера.
Безопасный командный канал
В режим защищенного командного канала можно войти, отправив команды AUTH TLS или AUTH SSL. После этого весь обмен управляющими командами между FTPS-клиентом и сервером считается зашифрованным. Обычно рекомендуется переходить в это состояние до аутентификации и авторизации пользователя, чтобы предотвратить перехват имени пользователя и пароля третьими лицами.
Безопасный канал передачи данных
В защищенный канал передачи данных можно войти с помощью команды PROT. Он не активируется автоматически при выполнении команды AUTH TLS. После этого вся связь по каналу передачи данных между FTPS-клиентом и сервером считается зашифрованной. FTPS-клиент может в любой момент выйти из режима защищенного канала передачи данных, отправив команду CDC (clear data channel).
Сертификаты SSL
Как и HTTPS, FTPS-серверы должны предоставлять сертификат открытого ключа. Эти сертификаты можно запросить и создать с помощью таких инструментов, как OpenSSL. Когда эти сертификаты подписаны доверенным центром сертификации, это гарантирует, что клиент подключен к нужному серверу, предотвращая атаку типа "человек посередине". Если сертификат не подписан доверенным ЦС (самоподписанный сертификат), FTPS-клиент может выдать предупреждение о том, что сертификат недействителен. Клиент может принять сертификат или отклонить соединение. Это отличается от протокола SSH File Transfer Protocol (SFTP), который не использует подписанные сертификаты, а полагается на аутентификацию публичных ключей по стороннему каналу.
Несовместимость брандмауэра
Поскольку FTP использует динамический вторичный порт (для каналов данных), многие брандмауэры были разработаны для перехвата управляющих сообщений протокола FTP, чтобы определить, какие вторичные соединения данных необходимо разрешить. Однако, если управляющее соединение FTP зашифровано с использованием TLS/SSL, брандмауэр не может определить номер TCP-порта соединения данных, согласованного между клиентом и FTP-сервером. Поэтому во многих сетях, защищенных брандмауэром, развертывание FTPS может завершиться неудачей, в то время как нешифрованное развертывание FTP будет работать. Эту проблему можно решить, используя ограниченный диапазон портов для данных и настроив брандмауэр на открытие этих портов.