В чем разница между активным и пассивным FTP?

Кто-нибудь скажет мне, какая разница между активным и пассивным FTP? Какой из них предпочтительнее?

Ответ 1

Активный и пассивный - это два режима, в которых может работать FTP.

Для фона FTP фактически использует два канала между клиентом и сервером, каналы команд и данных, которые фактически являются отдельными TCP-соединениями.

Канал команд предназначен для команд и ответов, а канал данных - для фактической передачи файлов.

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


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

В пассивном режиме клиент устанавливает оба канала. Мы уже знаем, что он устанавливает командный канал в активном режиме и делает то же самое здесь.

Однако затем он запрашивает сервер (в командном канале) начать прослушивание порта (по усмотрению сервера), а не пытаться установить соединение с клиентом.

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

Как только клиент узнает об этом, он может успешно создать канал данных и продолжить.

Более подробная информация доступна в RFC: https://www.ietf.org/rfc/rfc959.txt

Ответ 2

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

Активный режим:

active mode


Пассивный режим:

enter image description here


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

enter image description here


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

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

Чтобы снизить риски, хорошим решением было бы указать диапазон портов на вашем сервере, а затем разрешить только этот диапазон портов на вашем брандмауэре.

Для получения дополнительной информации ознакомьтесь с официальным документом .

Ответ 3

Редуцированная версия моей статьи Режимы FTP-подключения (Active vs. Passive):

Режим подключения FTP (активный или пассивный) определяет, как устанавливается соединение с данными. В обоих случаях клиент создает соединение управления TCP с портом 21 сервера FTP-сервера. Это стандартное исходящее соединение, как и с любым другим протоколом передачи файлов (SFTP, SCP, WebDAV) или любым другим клиентским приложением TCP (например, веб-браузер). Поэтому при открытии контрольного соединения обычно нет проблем.

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

В активном режиме клиент начинает прослушивать случайный порт для входящих соединений данных с сервера (клиент отправляет команду FTP PORT, чтобы сообщить серверу, на каком порту он прослушивается). В настоящее время типично, что клиент находится за брандмауэром (например, встроенным брандмауэром Windows) или NAT-маршрутизатором (например, ADSL-модем), неспособным принимать входящие TCP-соединения.

По этой причине был введен пассивный режим и в настоящее время используется в основном. Использование пассивного режима является предпочтительным, потому что большая часть сложной конфигурации выполняется только один раз на стороне сервера, опытным администратором, а не индивидуально на стороне клиента, (возможно) неопытными пользователями.

В пассивном режиме клиент использует управляющее соединение для отправки команды PASV на сервер, а затем получает серверный IP-адрес и номер порта сервера с сервера, который затем использует клиент, чтобы открыть соединение с данными IP-адрес сервера и номер порта сервера.

Конфигурация сети для пассивного режима

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

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

Когда FTP-сервер находится за NAT, он должен знать его внешний IP-адрес, поэтому он может предоставить его клиенту в ответ на команду PASV.

Конфигурация сети для активного режима

В активном режиме большая часть нагрузки на конфигурацию находится на стороне клиента.

Брандмауэр (например, брандмауэр Windows) и NAT (например, правила маршрутизации модема ADSL) на стороне клиента должны быть настроены так, чтобы разрешать/маршрутизировать диапазон портов для входящих соединений данных. Чтобы открыть порты в Windows, откройте "Панель управления" > "Система и безопасность" > "Брандмауэр Windows" > "Дополнительные параметры" > "Входящие правила" > "Новое правило". Для маршрутизации портов на NAT (если есть) обратитесь к его документации.

Когда NAT в вашей сети, FTP-клиент должен знать свой внешний IP-адрес, который WinSCP должен предоставить FTP-серверу с помощью команды PORT. Чтобы сервер мог правильно подключиться к клиенту, чтобы открыть соединение для передачи данных. Некоторые FTP-клиенты могут автоматически определять внешний IP-адрес, некоторые из них должны быть настроены вручную.

Smart Firewall/NAT

Некоторые брандмауэры /NAT пытаются автоматически открывать/закрывать порты данных, проверяя соединение с FTP-соединением и/или переводить IP-адреса подключения к данным в трафик управляющего соединения.

При использовании такого брандмауэра /NAT вышеуказанная конфигурация не требуется для простого незашифрованного FTP. Но это не может работать с FTPS, поскольку трафик управляющего соединения зашифрован, а брандмауэр /NAT не может его проверять и изменять.

Ответ 4

Активный режим:  -server инициирует соединение.

Пассивный режим:  -client инициирует соединение.

Ответ 5

Активный режим - клиент выдает серверу команду PORT, сигнализируя, что он будет "активно" предоставлять IP-адрес и номер порта, чтобы открыть соединение для передачи данных обратно клиенту.

Пассивный режим - клиент запускает команду PASV, чтобы указать, что он будет "пассивно" ждать, пока сервер предоставит IP и номер порта, после чего клиент создаст соединение данных с сервером.

Выше приведено много хороших ответов, но эта запись блога содержит полезную графику и дает довольно веское объяснение: https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and-passive-ftp/