ftp passive mode что это

Доступ к FTP-серверу за NAT

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

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

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

Тут сразу виден недостаток данного метода: для работы в активном режиме клиенту требуется выделенный IP-адрес. Также определенные сложности будут возникать при нахождении клиента за брандмауэром или NAT-ом.

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

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

FTP сервер за NAT

Давайте установим на виртуальную машину ftp-server FTP-сервер vsftpd :

Про настройки подробно рассказывать не буду (подробнее можно прочитать здесь), упомяну только важные для нас:

Сохраняем новые правила, чтобы они применились после перезагрузки:

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

В реальной ситуации FTP-клиент и маршрутизатор должны иметь белые ip-адреса. Но мы здесь моделируем ситуацию, как будто бы у них белые ip-адреса. Просто потому, что у нас маршртузатор и FTP-клиент находятся в одной сети 192.168.110.0/24 и видят друг друга. Когда FTP-клиент устанавливает управляющее соединение с FTP-сервером — он отправляет пакеты на внешний интерфейс маршрутизатора, на порт 21. А маршрутизатор отправляет эти пакеты внутрь сети 192.168.30.0/24 — на ip-адрес 192.168.30.254 FTP-сервера (DNAT, первое правило).

Вроде все готово для испытаний, файл конфигурации FTP-сервера разрешает использовать только активный режим. Пробуем из сети 192.168.110.0/24 подключиться к FTP-серверу за NAT с виртуальной машины web-server (ip-адрес 192.168.110.12 ).

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

Теперь изменим настройки сервера, чтобы разрешить работу в пассивном режиме:

Пробуем подключиться к серверу

Источник

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

Прежде чем разъяснить разницу между активным и пассивным режимами работы FTP, следует установить, что же такое сам FTP и как он работает. Англоязычная аббревиатура FTP расшифровывается как File Transfer Protocol, что в переводе на русский означает протокол передачи файлов. Он предназначен для установки соединения между клиентом, то есть пользователем, и удаленным сервером.

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

Итак, в чем же принципиальное отличие?

Главное отличие активного и пассивного режимов работы протокола FTP состоит в том, кто из связки клиент-сервер производит подключение для передачи данных, то есть, грубо говоря, кто к кому подключается. Также отличаются порты, на которые производится передача данных. При активном режиме работы, клиент производит управляющее соединение с сервером, а вот подключение для передачи данных производит уже сам сервер. При пассивном режиме работы подключение для передачи данных, равно как и управляющее соединение с сервером инициируется только клиентом. То есть, в активом режиме сервер подключается к клиенту для передачи данных, а в пассивном – клиент к серверу.

Рассмотрим эти режимы более наглядно.

Отличия активного и пассивного режимов FTP

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

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

Как в активном, так и в пассивном режиме, установка соединения начинается с отправки запроса клиентом на сервер. Сначала устанавливается управляющее соединение. Для этого на клиенте создается временный порт с номером в диапазоне от 1024 до 65535 для установки управляющего соединения, а также порт для передачи данных. В активном режиме все происходит в следующем порядке:

Схематически это можно выразить в следующем виде:

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

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

Представим это в схеме:

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

Источник

🚼 Активный FTP и пассивный FTP сравнение и отличие

Вступление

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

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

Этот пост содержит примеры как активных, так и пассивных сеансов FTP из командной строки.

Эти примеры сессий должны помочь немного прояснить ситуацию.

Они также дают хорошую картину того, что происходит за кулисами во время сеанса FTP. Теперь перейдем к информации по теме…

Основы

FTP является исключительно службой на основе TCP.

Для FTP нет компонента UDP.

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

Читайте также:  расстояние какой буквой обозначается в математике 4 класс

Традиционно это порт 21 для командного порта и порт 20 для порта данных.

Однако возникает путаница, когда мы обнаруживаем, что в зависимости от режима порт данных не всегда находится на порте 20.

Активный FTP

В активном режиме FTP клиент подключается от случайного непривилегированного порта (N> 1024) к командному порту FTP-сервера, а именно 21.

Затем клиент начинает прослушивать порт N + 1 и отправляет команду FTP PORT N + 1 на FTP. сервер.

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

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

При продолжительном соединение все выглядит следующим образом:

На шаге 1 командный порт клиента связывается с командным портом сервера и отправляет команду PORT 1027.

Затем сервер отправляет ACK обратно на командный порт клиента на шаге 2.

На шаге 3 сервер инициирует подключение через свой локальный порт данных к порту данных клиент указал ранее.

Наконец, клиент отправляет ACK обратно, как показано на шаге 4.

Основная проблема с активным режимом FTP на самом деле ложится на клиентскую сторону.

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

Со стороны брандмауэра на стороне клиента это внешняя система, инициирующая соединение с внутренним клиентом, что обычно блокируется.

Пример активного FTP

Ниже приведен пример активного сеанса FTP.

Изменены только имена серверов, IP-адреса и имена пользователей.

В этом примере сеанс FTP инициируется от user01 (192.0.0.1), блока Solaris, на котором работает стандартный клиент командной строки FTP, к dest_serv (192.0.0.2), блока Solaris, на котором запущен solaris [TM] 9 ftpd.

Флаг отладки (-d) используется с клиентом FTP, чтобы показать, что происходит за кулисами.

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

Есть несколько интересных вещей, чтобы рассмотреть об этом диалоге.

Обратите внимание, что при вводе команды PORT указывается порт в клиентской (192.0.0.1) системе, а не на сервере.

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

Пока мы находимся на этой теме, быстрое примечание о формате команды PORT.

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

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

Чтобы найти действительный порт, умножьте пятый октет на 256, а затем добавьте шестой октет к сумме.

Таким образом, в приведенном ниже примере номер порта ((256 * 188) + 231) или 48359.

Быстрая проверка с помощью netstat должна подтвердить эту информацию.

Пассивный FTP

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

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

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

При открытии FTP-соединения клиент открывает два случайных непривилегированных порта локально (N> 1024 и N + 1).

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

В результате сервер открывает случайный непривилегированный порт (P> 1024) и отправляет команду PORT P обратно клиенту.

Затем клиент инициирует соединение от порта N + 1 к порту P на сервере для передачи данных.

С точки зрения брандмауэра на стороне сервера, для поддержки FTP в пассивном режиме необходимо открыть следующие каналы связи:

При подключении FTP-соединение в пассивном режиме выглядит следующим образом:

На шаге 1 клиент связывается с сервером через командный порт и выдает команду PASV.

Затем сервер отвечает на шаге 2 с помощью PORT 2024, сообщая клиенту, какой порт он прослушивает для подключения к данным.

На шаге 3 клиент затем инициирует соединение для передачи данных со своего порта данных на указанный порт данных сервера.

Наконец, сервер отправляет ACK на шаге 4 в порт данных клиента.

Хотя пассивный режим FTP решает многие проблемы на стороне клиента, он открывает целый ряд проблем на стороне сервера.

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

К счастью, многие FTP-демоны, включая демон Solaris in.ftpd, позволяют администратору указывать диапазон портов, которые будет использовать FTP-сервер. См. Приложение 1 для получения дополнительной информации.

Вторая проблема связана с поддержкой и устранением неполадок клиентов, которые поддерживают (или не поддерживают) пассивный режим.

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

Большинство браузеров поддерживают только пассивный режим при доступе к URL-адресам ftp://. Это может быть как хорошим, так и плохим фактов, в зависимости от того, какие серверы и брандмауэры настроены для поддержки.

Пример пассивного FTP

Ниже приведен пример пассивного сеанса FTP.

Изменены только имена серверов, IP-адреса и имена пользователей.

В этом примере сеанс FTP инициируется от user01 (192.0.0.1), окна Solaris, на котором работает стандартный клиент командной строки FTP, до dest_serv (192.0.0.2), Solaris, работающего под управлением Solaris 9 ftpd.

Читайте также:  что делает сотрудник мфц

Флаг отладки (-d) используется с клиентом FTP, чтобы показать, что происходит за кулисами.

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

Нормальный вывод на сервер показан черным, а ввод пользователя – жирным.

Обратите внимание на разницу в команде PORT в этом примере по сравнению с примером активного FTP.

Здесь мы видим, что порт открывается в системе сервера (192.0.0.2), а не на клиенте. См. Обсуждение формата команды PORT выше в разделе «Пример активного FTP».

Резюме

Следующая таблица должна помочь администраторам запомнить, как работает каждый режим FTP:

Краткий обзор плюсов и минусов активного и пассивного FTP также по порядку:

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

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

Пассивный FTP полезен для клиента, но вреден для администратора FTP-сервера.

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

К счастью, есть некоторый компромисс.

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

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

Таким образом, все, кроме этого диапазона портов, может быть защищено на стороне сервера.

Хотя это не устраняет все риски для сервера, оно значительно снижает его. См. Приложение 1 для получения дополнительной информации.

Источник

Ftp passive mode что это

В этой статье объясняется в чем разница между пассивным и активным режимами. Это показывается на примере vsftpd и ipfw. Даются рекомендации по их настройке и описываются необходимые правила фаервола.

На иностранном языке это называется PORT и PASV mode. FTP-соединение всегда начинается одинаково для пассивного и активного режимов. Клиент устанавливает соединение с произвольного порта на 21 порт сервера и передает логин/пароль.
Дальше, если используется активный режим, то клиент сообщает серверу произвольный порт из диапазона 1024-65535, по которому сервер может подключится и организовать канал передачи данных. Со стороны сервера используется порт 20.
Если выбран пассивный режим, то наоборот сервер сообщает номер произвольного порта, по которому клиент может подключиться для организации канала передачи данных.

# vsftpd работает самостоятельно, без помощи inetd/xinetd в «standalone mode»
listen=YES

# слушаем 21 порт
listen_port=21

# работа в фоновом режиме
background=YES

# приветствие при входе
ftpd_banner=Welcome you to Serra’s FTP Server! Here is allowed only 10 users with 10 connections at the same time. Have a pleasant pastime!

# включаем пассивный режим
pasv_enable=YES

# диапазон портов для пассивного режима
pasv_min_port=40000
pasv_max_port=40500

# максимальное количество клиентов, которые могут быть подключены
max_clients=10

# максимальное количество соединений с одного ip
max_per_ip=10

# запрет анонимных пользователей
anonymous_enable=NO

# Разрешить локальных пользователей из файла /etc/passwd
local_enable=YES

# запираем локальных пользователей в домашнем каталоге после входа
chroot_local_user=YES

# домашние директории, которые указаны в файле /etc/passwd
passwd_chroot_enable=YES

# пользователи указанные в vsftpd.chroot_list не запираются в тюрьму
chroot_list_enable=YES

# отключаем проверку которая вызывает ошибку «vsftpd: refusing to run with writable root inside chroot()»
allow_writeable_chroot=YES

# разрешаем запись
write_enable=YES

# задаём права для файлов, но не каталогов
file_open_mode=0777

# маска на создаваемые локальными пользователями файлы.
local_umask=002

# безопасный каталог, должен быть пустым и без прав записи пользователю ftp
secure_chroot_dir=/var/empty

# включаем запись логов
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log

# пользователи из списка vsftpd.user_list блокируются перед запросом пароля
userlist_enable=YES

# разрешаем ативный режим
port_enable=YES

# исходяшие соединения идут с 20 порта
connect_from_port_20=YES

# входящие соединения на 20 порт
ftp_data_port=20

# поддержка древних FTP клиентов
async_abor_enable=YES

# скрываем настоящих владельцев файлов на ftp
hide_ids=YES

Он будет ротироваться при достижении 1 MB и сжиматься.

convert_charset_enable=YES
local_charset=UTF8
remote_charset=WIN1251

add 1050 allow tcp from any to me 20,21, 40000-50000 in via rl1
add 1060 allow tcp from me 20 to any out via rl1

Источник

Ftp порты для пассивного режима

Технический блог специалистов ООО»Интерфейс»

Особенности работы протокола FTP

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

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

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

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

В активном режиме клиент устанавливает управляющее соединение на порт 21 сервера и передает специальную команду PORT, в которой указывает свой адрес и порт для передачи данных. Получив данную команду, сервер устанавливает соединение с 20 порта на указанный в команде порт клиента.

Внимательный читатель сразу заметит недостаток данного метода: для работы в активном режиме клиенту требуется выделенный IP-адрес. Также определенные сложности будут возникать при нахождении клиента за брандмауэром или NAT’ом.

Читайте также:  при какой температуре спирт кипит при температуре

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

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

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

Проблема брандмауэра

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

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

Проблема NAT

На первый взгляд может показаться, что для нормальной работы FTP-сервера через NAT требуется только правильно настроить форвардинг портов. Однако это не так. Если вы внимательно читали про работу протокола в начале статьи, то должны были запомнить, что в зависимости от режима сервер или клиент передают адрес и порт для соединения. А теперь задумаемся, какой адрес передаст сервер, находящийся за NAT? Правильно, внутренний и, несмотря на правильный проброс портов, клиент не сможет подключиться к такому серверу.

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

В большинстве случаев для нормальной работы FTP-сервера за NAT достаточно будет пробросить 21 порт для управляющей сессии, 20 – для активного режима (если используется), а также указать и пробросить диапазон динамических портов для передачи данных.

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

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

Инструменты пользователя

Инструменты сайта

Содержание

Введение

Клиент посылает запросы серверу и принимает файлы. В качестве клиентов могут использоваться – internet explorer, Windows Commander, NetVampir, gftp и т.д.

Сервер обрабатывает запросы клиента на получение файла. В качестве серверов могут использоваться – vsftpd, IIS, wuftpd, proftpd и т.д.

Режимы работы FTP: активный и пассивный

Первоначальная настройка брандмауера

Создаем минимальный набор правил в нашем фаерволе. Этот пример создан лишь для того, чтобы показать принцип работы iptables. Для более углубленного понимания работы iptables рекомендую прочитать статью Оскара Андерсона в переводе Андрея Кисилева – Iptables Tutorial 1.1.19, которая считается классикой.

eth0 – смотрит в локальную сеть, eth1 – смотрит в мир. Данным скриптом (firewall.sh) удобно пользоваться на стадии отладки правил.

После того, как у вас все настроено, лучше воспользоваться штатными средствами управления iptables. Для этого воспользуемся скриптом для сохранения текущих правил в файл. В разных дистрибутивах набор правил может сохраняться по отличному от /etc/sysconfig/iptables пути. Данный путь является стандартным для Red Hat дистрибутивов и его клонов, например CentOS.

Но при таких настройках фаервола ftp через nat еще не будет работать. Для облегчения нашей задачи воспользуемся специальным модулем, который и был разработан как раз для этих целей. Загрузим модуль ip_nat_ftp, который и будет выполнять всю черную работу вместо нас.

Обратите внимание, что в цепочке eth0-eth1, через которую проходят все транзитные пакеты, мы открыли только порт 21 и разрешили прохождение пакетов с состоянием RELATED и ESTABLISHED. Для работы ftp как в активном так и в пассивном режимах больше ничего не требуется, все остальные заботы берут на себя модули ip_nat_ftp и ip_conntrack_ftp.

Тестирование

После того, как мы загрузили модуль и правил можно приступить непосредственно к тестированию. Для этого можно воспользоваться любимым ftp клиентом и попробовать соединиться с любым ftp сервером. В качестве клиента я использовал ftp клиент встроенный в far, который позволяет использовать как активный, так и пассивный режимы. Если под рукой нет никакого ftp клиента всегда можно воспользоваться встроенным в windows клиентом как показано ниже.

Для наглядности можно посмотреть с помощью tcpdump что происходит при попытке подключиться к удаленному ftp серверу.

Ну вот собственно и вся настройка. Для того, чтобы каждый раз при загрузке системы модуль ip_nat_ftp загружался автоматически необходимо внести небольшие изменения в файл /etc/sysconfig/iptables-config.

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

Источник

Сказочный портал