В чем разница между активным и пассивным FTP?
Кто-нибудь подскажет, пожалуйста, в чем разница между активным и пассивным FTP? Какой из них предпочтительнее?
5 ответов
Активный и пассивный - это два режима, в которых может работать FTP.
Для фона FTP фактически использует два канала между клиентом и сервером, каналы команд и данных, которые фактически являются отдельными TCP-соединениями.
Канал команд предназначен для команд и ответов, а канал данных - для фактической передачи файлов.
Такое разделение информации о командах и данных на отдельные каналы является отличным способом отправки команд на сервер без ожидания завершения текущей передачи данных. Согласно RFC, это требуется только для подмножества команд, таких как выход, прерывание текущей передачи и получение статуса.
В активном режиме клиент устанавливает канал команд, но сервер отвечает за установление канала данных. На самом деле это может быть проблемой, если, например, клиентский компьютер защищен брандмауэрами и не будет разрешать несанкционированные запросы сеанса от внешних сторон.
В пассивном режиме клиент устанавливает оба канала. Мы уже знаем, что он устанавливает командный канал в активном режиме и делает то же самое здесь.
Однако затем он запрашивает сервер (в командном канале) начать прослушивание порта (по усмотрению сервера), а не пытаться установить соединение с клиентом.
В рамках этого сервер также возвращает клиенту номер порта, который он выбрал для прослушивания, чтобы клиент знал, как к нему подключиться.
Как только клиент узнает об этом, он может успешно создать канал данных и продолжить.
Более подробная информация доступна в RFC: https://www.ietf.org/rfc/rfc959.txt
Я недавно столкнулся с этим вопросом на своем рабочем месте, поэтому я думаю, что я должен сказать кое-что больше здесь. Я буду использовать изображение, чтобы объяснить, как работает FTP в качестве дополнительного источника для предыдущего ответа.
Активный режим:
Пассивный режим:
В конфигурации активного режима сервер будет пытаться подключиться к случайному клиентскому порту. Таким образом, есть вероятность, что этот порт не будет одним из этих предопределенных портов. В результате попытка подключения к нему будет заблокирована брандмауэром, и соединение не будет установлено.
Пассивная конфигурация не будет иметь этой проблемы, так как клиент будет инициатором соединения. Конечно, на стороне сервера также может быть установлен межсетевой экран. Однако, поскольку ожидается, что сервер получит большее количество запросов на соединение по сравнению с клиентом, для администратора сервера было бы логично приспособиться к ситуации и открыть выбор портов для удовлетворения конфигураций пассивного режима.
Поэтому было бы лучше настроить сервер для поддержки пассивного режима FTP. Однако пассивный режим сделает вашу систему уязвимой для атак, поскольку клиенты должны подключаться к случайным портам сервера. Таким образом, для поддержки этого режима не только если на вашем сервере должно быть доступно несколько портов, ваш брандмауэр также должен позволять проходить соединения со всеми этими портами!
Чтобы снизить риски, хорошим решением было бы указать диапазон портов на вашем сервере, а затем разрешить только этот диапазон портов на брандмауэре.
Для получения дополнительной информации, пожалуйста, прочитайте официальный документ.
Отредактированная версия моей статьи Режимы FTP-соединения (Active vs. Passive):
Режим FTP-соединения (активный или пассивный), определяет, как устанавливается соединение для передачи данных. В обоих случаях клиент создает управляющее TCP-соединение с командным портом FTP-сервера 21. Это стандартное исходящее соединение, как и любой другой протокол передачи файлов (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 Firewalls / NATs
Некоторые брандмауэры / NAT пытаются автоматически открывать / закрывать порты данных, проверяя управляющее соединение FTP и / или переводя IP-адреса соединения данных в трафик управляющего соединения.
При использовании такого брандмауэра / NAT указанная выше конфигурация не требуется для обычного незашифрованного FTP. Но это не может работать с FTPS, так как трафик управляющего соединения зашифрован, а межсетевой экран / NAT не может ни проверять, ни изменять его.
Активный режим: -сервер инициирует соединение.
Пассивный режим: -клиент инициирует соединение.
Активный режим - клиент выдает серверу команду PORT, сигнализируя, что он "активно" предоставит IP-адрес и номер порта, чтобы открыть соединение для передачи данных обратно клиенту.
Пассивный режим - клиент выполняет команду PASV, чтобы указать, что он будет "пассивно" ждать, пока сервер предоставит IP и номер порта, после чего клиент создаст соединение данных с сервером.
Выше приведено много хороших ответов, но эта запись блога содержит полезную графику и дает довольно веское объяснение: https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and-passive-ftp/