- Как переключить ftp.exe в пассивный режим? или загрузка с wput
- FTP Connection Modes (Active vs. Passive)
- Network Configuration for Passive Mode
- Notes for Uncommon Local Network Configurations
- Network Configuration for Active Mode
- Smart Firewalls/NATs
- Information Security Squad
- 🚼 Активный FTP и пассивный FTP сравнение и отличие
- Вступление
- Основы
- Активный FTP
- Пример активного FTP
- Пассивный FTP
- Пример пассивного FTP
- Резюме
Как переключить ftp.exe в пассивный режим? или загрузка с wput
Использовал я как-то стандартный ftp.exe из Windows, все было хорошо, пока не он не перестал работать.
200 PORT command successful. Consider using PASV.
Оказалось понадобился пассивный режим.
Так думаю, нет вопросов, прошелся по справке не видно ничего такого, нашел обсуждение
quote pasv
но эта команда переводит сервер в пассивный режим, но не клиент ftp.exe
Альтернатива нашлась быстро — это wput, так как в делах закачки я доверяю wget, то wput был принят в мою команду без колебаний.
Скачать ftp-клиент с возможностью докачки и пассивным режимом работы можно тут или с официального сайта.
Синтаксис работы простой, хотя над тем чтобы понять как закачать файл, если он находится не в каталоге с wput и не создавать подкаталоги на удаленном сервере мне понадобилось пол часа, вот не мог я понять логики, но главное результат..
Пример работы с wput
c:\Work\wput.exe -v -u -nd —basename=c:\data\xls\ c:\data\xls\price.zip ftp://username:password@testsite.com
Слова статьи: как закачать файл на сервер ftp, загрузить файл из командной строки, пассивный режим ftp пример работы, how to configure ftp.exe to use passive mode (PASV), пример использования wput.exe
Внимание! Добавлено 13.10.2011
Что-то с временем обнаружился какой-то баг — при копировании архива с файлами wput’ом на фтп сервер, дата и время файла обновлялось, а текстовый файл не менялся, а иногда менялся, я сильно не заморачивался с выяснением что да как, так как до этого столкнулся с багом 7zip который иногда не создавал новый архив, если старый архив лежал на том месте, а иногда создавал, в общем я решил кардинально — заменил wput на curl, тем более curl я использовал в другом новом проекте и опыт работы с ним уже был.
Скачать облегченный curl — ссылка
curl.exe -T %data_dir%\%file_name% -u %ftp_user%:%ftp_pass% %ftp_server% %data_dir% — каталог с данными для отправки %file_name% — имя отправляемого файла на фтп %ftp_user% — имя пользователя фтп %ftp_pass% — пароль на фтп %ftp_server% — адрес фтп сервера
Вот такой простой синтаксис для загрузки и все стало работать как часы.
FTP Connection Modes (Active vs. Passive)
Where FTP protocol is more complicated comparing to the other file transfer protocols are file transfers. While the other protocols use the same connection for both session control and file (data) transfers, the FTP protocol uses a separate connection for the file transfers and directory listings.
In the active mode, the client starts listening on a random port for incoming data connections from the server (the client sends the FTP command PORT to inform the server on which port it is listening). Nowadays, it is typical that the client is behind a firewall (e.g. built-in Windows firewall) or NAT router (e.g. ADSL modem), unable to accept incoming TCP connections.
For this reason the passive mode was introduced and is mostly used nowadays. It is a default for WinSCP too. Using the passive mode is preferable because most of the complex configuration is done only once on the server side, by experienced administrator, rather than individually on a client side, by (possibly) inexperienced users.
In the passive mode, the client uses the control connection to send a PASV command to the server and then receives a server IP address and server port number from the server, which the client then uses to open a data connection to the server IP address and server port number received.1
Use Passive mode session settings to toggle between the active and the passive mode.
Network Configuration for Passive Mode
With the passive mode, most of the configuration burden is on the server side. The server administrator should setup the server as described below.
The firewall and NAT on the FTP server side have to be configured not only to allow/route the incoming connections on FTP port 21,2 but also a range of ports for the incoming data connections. Typically, the FTP server software has a configuration option to setup a range of the ports, the server will use. And the same range has to be opened/routed on the firewall/NAT.
When the FTP server is behind a NAT, it needs to know it’s external IP address, so it can provide it to the client in a response to PASV command.
It is common, that the FTP server is not configured properly and provides its internal IP address, that cannot be used from a client network. By default WinSCP detects, when an unroutable IP address is provided, and uses a server (control connection) address instead.3 You can tell that this happened from a session log:
Notes for Uncommon Local Network Configurations
When the NAT happens on a client side, what the FTP server cannot know, the IP address it provides is wrong too (from a client’s perspective). You can force WinSCP to ignore the IP address provided by the server using a Force IP address for passive mode connections session setting.
When using a restrictive local firewall that blocks even outgoing connections, you need to open not only control connection port 21, but also a port range for data connections. To open as little ports as possible, find out what ports is the FTP server configured to use. If you cannot know that, you have to open all unprivileged port range, 1024–65535.
Network Configuration for Active Mode
With the active mode, most of the configuration burden is on the client side.
The firewall (e.g. Windows firewall) and NAT (e.g. ADSL modem routing rules) on the client side have to be configured to allow/route a range of ports for the incoming data connections. You should restrict range of local ports that WinSCP uses for the active mode. Then open those ports in Windows Firewall. Go to Control Panel > System and Security > Windows Defender Firewall4 > Advanced Settings > Inbound Rules > New Rule. For routing the ports on the NAT (if any), refer to its documentation.
When there’s NAT in your network, you have to configure an external IP address that the WinSCP needs to provide to the FTP server using PORT command. So that the server can correctly connect back to WinSCP to open the data connection. For that use External IP address setting in Preferences.
Smart Firewalls/NATs
Some firewalls/NATs try to automatically open/close data ports by inspecting FTP control connection and/or translate the data connection IP addresses in control connection traffic.5
With such a firewall/NAT, the above configuration is not necessary for a plain unencrypted FTP. But this cannot work with FTPS, as the control connection traffic is encrypted and the firewall/NAT cannot inspect nor modify it.
Information Security Squad
stay tune stay secure
- Home
- 2019
- Май
- 13
- 🚼 Активный FTP и пассивный FTP сравнение и отличие
🚼 Активный FTP и пассивный FTP сравнение и отличие
Вступление
Один из наиболее часто встречающихся вопросов при работе с брандмауэрами и другими проблемами подключения к Интернету – это различие между активным и пассивным FTP (протокол передачи файлов) и как лучше всего поддерживать один или оба из них.
Надеемся, что следующая статья поможет разобраться в путанице, связанной с поддержкой FTP в среде с межсетевым экраном.
Этот пост содержит примеры как активных, так и пассивных сеансов FTP из командной строки.
Эти примеры сессий должны помочь немного прояснить ситуацию.
Они также дают хорошую картину того, что происходит за кулисами во время сеанса FTP. Теперь перейдем к информации по теме…
Основы
FTP является исключительно службой на основе TCP.
Для FTP нет компонента UDP.
FTP является необычной службой, в которой используются два порта: порт данных и порт команды (также известный как порт управления).
Традиционно это порт 21 для командного порта и порт 20 для порта данных.
Однако возникает путаница, когда мы обнаруживаем, что в зависимости от режима порт данных не всегда находится на порте 20.
Активный FTP
В активном режиме FTP клиент подключается от случайного непривилегированного порта (N> 1024) к командному порту FTP-сервера, а именно 21.
Затем клиент начинает прослушивать порт N + 1 и отправляет команду FTP PORT N + 1 на FTP. сервер.
Затем сервер подключится к указанному клиенту порту данных через локальный порт данных, который является портом 20.
С точки зрения серверного брандмауэра, для поддержки активного режима FTP необходимо открыть следующие каналы связи:
- Порт FTP-сервера 21 отовсюду (Клиент инициирует соединение)
Порт 21 сервера FTP для портов> 1024 (сервер отвечает на порт управления клиента) - Порт 20 сервера FTP для портов> 1024 (сервер инициирует подключение данных к порту данных клиента)
- Порт 20 сервера FTP от портов> 1024 (Клиент отправляет ACK на порт данных сервера)
При продолжительном соединение все выглядит следующим образом:
- С клиентского порта 1026 (Cmd) на серверный порт 21 (Cmd)
- С порта сервера 21 (Cmd) на порт клиента 1026 (Cmd)
- С порта сервера 20 (данные) на порт клиента 1027 (данные)
- С клиентского порта 1027 (данные) на серверный порт 20 (данные)
На шаге 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-сервера 21 отовсюду (Клиент инициирует соединение)
- Порт 21 сервера FTP для портов> 1024 (сервер отвечает на порт управления клиента)
- Порты FTP-сервера> 1024 отовсюду (Клиент инициирует подключение данных к произвольному порту, указанному сервером)
- Порты FTP-сервера> 1024 для удаленных портов> 1024 (Сервер отправляет ACK (и данные) на порт данных клиента)
При подключении FTP-соединение в пассивном режиме выглядит следующим образом:
- С клиентского порта 1026 (Cmd) на серверный порт 21 (Cmd)
- С порта сервера 21 (Cmd) на порт клиента 1026 (Cmd)
- С клиентского порта 1027 (данные) на серверный порт 2024
- С порта сервера 2024 (Cmd) на порт клиента 1027 (данные)
На шаге 1 клиент связывается с сервером через командный порт и выдает команду PASV.
Затем сервер отвечает на шаге 2 с помощью PORT 2024, сообщая клиенту, какой порт он прослушивает для подключения к данным.
На шаге 3 клиент затем инициирует соединение для передачи данных со своего порта данных на указанный порт данных сервера.
Наконец, сервер отправляет ACK на шаге 4 в порт данных клиента.
Хотя пассивный режим FTP решает многие проблемы на стороне клиента, он открывает целый ряд проблем на стороне сервера.
Самой большой проблемой является необходимость разрешить любое удаленное подключение к портам с высоким номером на сервере.
К счастью, многие FTP-демоны, включая демон Solaris in.ftpd, позволяют администратору указывать диапазон портов, которые будет использовать FTP-сервер. См. Приложение 1 для получения дополнительной информации.
Вторая проблема связана с поддержкой и устранением неполадок клиентов, которые поддерживают (или не поддерживают) пассивный режим.
Например, утилита FTP командной строки, поставляемая с демоном Solaris ftp, поддерживает пассивный режим начиная с Solaris 9 (начиная с sccs v1.20). Посмотрите справочные страницы (in.ftpd), опция -p.
С огромной популярностью Всемирной паутины, многие люди предпочитают использовать свой веб-браузер в качестве 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 для получения дополнительной информации.