Как включить пассивный режим? Режимы работы ftp серверов.

3 ответов

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

В активном режиме клиент устанавливает командный канал (от клиентского порта X до порта сервера 21 (b)), но сервер устанавливает канал данных (из порта сервера 20 (b) на клиентский порт Y , где Y был предоставлен клиентом).

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

Пассивный режим обычно используется в ситуациях, когда FTP-сервер не может установить канал данных. Одной из основных причин этого является сетевые брандмауэры. Хотя у вас может быть правило брандмауэра, которое позволяет вам открывать FTP-каналы до ftp.microsoft.com , серверы Microsoft могут не иметь возможности открывать канал данных через брандмауэр.

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

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

  • Клиент отправляет PORT 2001 (a) на сервер и сервер подтверждает в командном канале.
  • Сервер открывает канал данных с порта сервера 20 (b) на порт клиента 2001 (a) .
  • Клиент подтверждает канал данных.

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

  • Клиент открывает командный канал с клиентского порта 2000 (a) на порт сервера 21 (b) .
  • Клиент отправляет PASV на сервер в командном канале.
  • Сервер отправляет обратно (в командном канале) PORT 1234 (a) после начала прослушивания на этом порту.
  • Клиент открывает канал данных от клиента 2001 (a) к серверному порту 1234 (a) .
  • Сервер подтверждает канал данных.

В этот момент команды и каналы данных открыты.

(a) Обратите внимание, что выбор портов на стороне клиента зависит от клиента, так как выбор порта канала данных сервера в пассивном режиме зависит от сервера.

(b) Далее следует отметить, что использование портов 20 и 21 является лишь условным (хотя и сильным). Нет абсолютного требования, чтобы эти порты использовались, хотя клиент и сервер должны были согласовать, какие порты используются. Я видел реализации, которые пытаются скрыть от клиентов, используя разные порты (тщетные, на мой взгляд).

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

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

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

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

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

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

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

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

Редуцированная версия моей статьи Режимы 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 не может его проверять и изменять.

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


Исправляем это недоразумение.


Обязательно сохраним оригинальный файл termsrv.dll. Запустим командную строку от Администратора и выполним

copy c:\Windows\System32\termsrv.dll termsrv.dll_old

Затем смотрим вашу версию. Правый клик на файле c:\Windows\System32\termsrv.dll и выберем свойства.


Скачиваем измененный файл соответствующий вашей версии

Если хочется все исправить своими руками, то копируем свой файл termsrv.dll из папки c:\Windows\System32\ на рабочий стол. Открываете его любым hex редактором, например этим бесплатным HxD . И заменяете байты в указанной строчке.

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

Windows 7 SP1 64bit:

173C0: B8 8B
173C1: 00 87
173C2: 01 38
173C3: 00 06
173C5: 90 00
173C6: 89 39
173C8: 38 3C
173CC: 90 0F
173CD: 90 84
173CE: 90 EB
173CF: 90 C2
173D0: 90 00
173D1: 90 00
176FA: 00 01
5AD7E: EB 74
Для Windows 8.1 (64bit) заменяем целиком строку!
в v6.3.9600.16384
строчку
8B 81 38 06 00 00 39 81 3C 06 00 00 0F 84 1B 70 00 00
на
B8 00 01 00 00 89 81 38 06 00 00 90 90 90 90 90 90 90

в 6.3.9600.16384 to 6.3.9600.17095
строчку
39 81 3C 06 00 00 0F 84 9E 31 05 00
на

6.3.9600.17095 to 6.3.9600.17415
строчку
39 81 3C 06 00 00 0F 84 D3 1E 02 00
на
B8 00 01 00 00 89 81 38 06 00 00 90
Воспользуемся инструментом замены с типом шестнадцатеричные значения

После замены сохраняете изменения.

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



Далее останавливаете службу удаленного рабочего стола


Заменяем файл termsrv.dll на скаченный или измененный.

Еще нужно изменить значение ключа в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser на 0!

И снова запускаем службу!

Подключаемся и радуемся! Теперь локального пользователя не выкидывает из системы!

Для Windows XP
1) Редактируем файл
termsrv.dll (SP2 5.1.2600.2180) 295,424 bytes

128BB: 75 -> 74
217D3: 8B -> 33
217D4: C7 -> C0
2192D: 8B -> 33
2192E: C7 -> C0
225B7: 54 -> 20
termsrv.dll (SP3 5.1.2600.5512) 295,424 bytes
22A17: 74 -> 75
22A69: 7F -> 90
22A6A: 16 -> 90
2) Заменять файл в директории C:\Windows\System32\ нужно в безопасном режиме, поскольку по умолчанию включена защита системных файлов (System File Protection). Для этого перезагрузите компьютер с зажатой F8 , выберите безопасный режим.
3) Добавить ключи реестра

EnableConcurrentSessions ”=dword:00000001

EnableConcurrentSessions ”=dword:00000001
AllowMultipleTSSessions ”=dword:00000001

4) Далее Пуск -> Выполнить, gpedit.msc. В окне редактора групповой политики Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Служба терминалов. Включите Ограничение количества подключений и установите количество подключений равное 3 или более.
5) Перезагружайтесь и подключайтесь!

    активный режим - Состояние оборудования, которое включено и подсоединено к радиосети для осуществления обмена пользовательской информацией (голос или данные), также определяется как режим трафика (МСЭ Т K.49). }

Статьи по теме: