Понимание SFTP, FTPS и FTP

Опубликовано: 2022-08-18

FTP или протокол передачи файлов — один из самых популярных методов передачи данных, доступных для различных вариантов использования.

У FTP есть различные безопасные варианты, известные как FTPS и SFTP, которые включают в себя некоторые тонкие и некоторые не очень тонкие различия в том, как они работают. Эти различия связаны с тем, как происходит обмен данными, уровнем и типом безопасности при обмене данными, а также соображениями брандмауэра.

Знание того, как работают эти протоколы и различия между этими популярными механизмами передачи, может помочь вам выбрать, какой из них лучше всего подходит для ваших нужд.

FTP

FTP — это протокол передачи файлов с многолетней историей, первоначально предложенный в RFC 114. Позже он превратился в RFC 959, который является стандартом, используемым сегодня.

FTP работает по двум каналам для обмена информацией: один для команд, а другой для данных. Для работы FTP требуется два порта — канал команд и канал данных.

Командный канал работает на порту 21, который принимает подключения от клиентов и обрабатывает передачу команд. Командный канал остается открытым в течение всего сеанса FTP, пока клиент не отправит команду QUIT или сервер не отключится принудительно из-за бездействия или по любой другой возможной причине.

Канал данных использует временный порт по запросу, который прослушивается на сервере (пассивный режим) или на клиенте (активный режим). Этот канал отвечает за обмен фактическими данными между сервером и клиентом в виде списков каталогов и передачи файлов.

В отличие от командного канала, канал данных остается открытым только на время передачи файла, и как только он заканчивается, канал данных закрывается. Для одновременной передачи нескольких файлов или списков каталогов требуется несколько портов канала данных.

FTP по своей сути является небезопасным протоколом, поскольку как по каналам команд, так и по каналам данных информация передается в незашифрованном виде, что легко может быть перехвачено кем-либо, использующим атаки типа «человек посередине».

Как обсуждалось ранее, FTP требует входящего соединения через порт 21/tcp на стороне сервера для командного канала. Диапазон пассивных портов определен для передачи файлов и списков каталогов и разрешает входящие соединения. Этот процесс определения может различаться в зависимости от используемого FTP-сервера. Обратитесь к его документации для получения дополнительной информации. На стороне клиента должно быть разрешено исходящее соединение через порт 21/tcp вместе с пассивным диапазоном портов, определенным на сервере.

Аутентификация в FTP

Информация об аутентификации FTP передается по командному каналу во время первоначального установления соединения. FTP может использовать имя пользователя и пароль для аутентификации или может быть анонимным, чтобы любой мог войти в систему и получить доступ к серверу.

Активный и пассивный режимы FTP

FTP использует активный или пассивный режим для установки соединений.

В активном режиме пользователь подключается со случайного порта FTP-клиента к FTP-порту 21/tcp на сервере и отправляет команду PORT, указав порт клиента, к которому должен подключаться сервер. Этот порт будет использоваться для канала данных.

Затем сервер подключается с порта 20/tcp к клиентскому порту, ранее указанному клиентом с помощью команды PORT . Затем этот канал данных используется для передачи файлов между сервером и клиентом.

В пассивном режиме клиент подключается со случайного порта FTP-клиента к порту 21/tcp на сервере и отправляет команду PASV. Затем сервер отвечает случайным портом, который следует использовать для канала данных. Затем клиент использует другой случайный порт для подключения к порту, на который ответил сервер на предыдущем шаге. Это соединение канала данных затем используется для передачи файлов между сервером и клиентом.

Таким образом, в активном режиме начальный запрос на подключение инициируется клиентом, а запрос на подключение к каналу данных инициируется сервером.

С другой стороны, в пассивном режиме как начальные запросы на подключение, так и последующие запросы канала данных инициируются клиентом серверу. Это тонкое различие иногда влияет на то, как брандмауэр разрешает/блокирует традиционные FTP-запросы в зависимости от направления типа входящего/исходящего соединения.

FTPS

Даже если вы готовы пойти на риск, связанный с FTP, с незашифрованной передачей данных и атаками типа «основной посередине», отраслевые требования вынуждают вас использовать более защищенную альтернативу, такую ​​как FTPS и SFTP, которые сравнительно намного более безопасны.

В 1990 году, когда ландшафт безопасности изменился, компания Netscape создала протокол SSL или Secure Sockets Layer (SSL, теперь известный как TLS) для защиты связи по сети. SSL был применен к FTP, который стал FTPS или безопасным протоколом передачи файлов . FTPS или FTP/S обычно работают на порту 990/tcp , но их также можно увидеть на порту 21/tcp. Точно так же для канала данных порт 989/tcp является общим портом, используемым для FTPS. Если командный порт 21/tcp , ожидается, что его порт данных будет 20/tcp .

Как и FTP, FTPS использует для связи два канала: канал команд и канал данных. Либо канал данных может быть зашифрован с помощью FTPS, либо каналы команд и данных могут быть зашифрованы для большей безопасности.

FTPS, как и FTP, также использует несколько портов для каналов команд и данных. Итак, порт 21/tcp используется для первоначального подключения и передачи аутентификационной информации. Позже потребуются разные порты для настройки каналов данных для каждой передачи файла или запроса списка каталогов от клиента. Таким образом, как и FTP, ему нужен диапазон портов, разрешенных в вашем брандмауэре.

Аутентификация в FTPS

Аутентификация для FTPS работает с использованием имени пользователя и пароля, а также сертификата сервера для шифрования. Когда клиент FTPS подключается к серверу, он проверяет, является ли сертификат сервера доверенным для продолжения подключения. Этот сертификат можно запросить у клиента и сервера.

SFTP

В отличие от FTP и FTPS, SFTP (протокол передачи файлов SSH) — это совершенно другой протокол, основанный на SSH (или Secure Shell). SFTP по умолчанию работает на порту 22/tcp, так же, как и SSH, хотя его можно настроить на использование пользовательского свободного порта на сервере.

SFTP — это безопасный FTP-протокол, который использует SSH для отправки и получения файлов. Поскольку SSH полностью зашифрован, SFTP является надежным и безопасным методом передачи файлов по сети.

SFTP, в отличие от FTP и FTPS, использует единый канал связи для передачи команд и трафика данных, причем все они передаются в зашифрованном виде вместе с начальной аутентификацией.

Аутентификация в SFTP

Аутентификация в SFTP может быть выполнена с помощью простого имени пользователя и пароля, но, в отличие от FTP, вся информация, включая детали аутентификации, передается по сети в зашифрованном виде.

SFTP также поддерживает аутентификацию с использованием пары ключей SSH, комбинации секретного и открытого ключей, когда клиент предоставляет закрытый ключ для указанного пользователя, а сервер должен иметь соответствующий открытый ключ для успешной аутентификации. Это более безопасно, чем использование комбинации имени пользователя и пароля. Можно аутентифицировать одного и того же пользователя с помощью пароля и ключей SSH, если оба метода настроены на SFTP-сервере.

Резюме

В этой статье обобщаются основные характеристики различных популярных протоколов передачи файлов, а именно FTP, FTPS и SFTP, и подчеркиваются тонкие и существенные различия между этими протоколами. В нем рассматриваются порты, которые необходимо разрешить в брандмауэре для настройки рабочего FTP/FTPS/SFTP-сервера, а также подчеркивается необходимость переключения на более безопасные протоколы, такие как FTPS и SFTP.

Когда я говорю здесь FTP, я имею в виду любые протоколы, обсуждаемые в этой статье. Причина в том, что протоколу FTP уже несколько десятков лет, и даже более новые безопасные версии для повседневного использования иногда называются FTP, а не по назначению.

Вам также может быть интересно узнать о лучшем программном обеспечении FTP-сервера и клиентах FTP/SFTP.