150 opening binary mode data connection

I am trying to create a small console application that downloads files from a ftp server through Explicit FTP over TLS. I have create these applications before but i am getting an error with this one. I keep Getting this error:

The Remote Server returned an error: 150 Opening BINARY mode data connection fro «filename» .

I cant seem to figure out that to do, can anyone help me?

Я настраиваю FTP-сервер на моем сервере Windows 2008 (R2).

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

Я могу использовать удаленный рабочий стол на сервере и через команды DOS, я могу легко войти в систему.

Но если я выдаю команду типа «DIR», она зависает с: 150 Открытие соединения данных в режиме ASCII.

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

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

Если я укажу свой полный URL-адрес FTP, я получаю ошибку висячего.

, если я укажу URL-адрес «localhost», я не получаю ошибку.

Это заставляет меня поверить в проблему с брандмауэром (или даже с проблемой IIS7?), но я не уверен, какие порты мне нужно открыть?

У меня есть порты 20, 21, открытые на брандмауэре Windows. Я также открыл эти порты на моем брандмауэре AWS (Amazon).

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

Любые идеи, советы, рекомендации, помощь?

8 ответов

FTP-сервер и клиент FTP согласовывают, какие порты будут использоваться для передачи данных (включая список каталогов, когда вы выполняете «dir» или «ls»), используя «канал управления» FTP. Поэтому, если ваш «брандмауэр AWS» не выполняет проверку протокола на этом канале, он не знает, какие порты он должен динамически открывать, чтобы разрешить поток трафика (и закрыть, как только эти порты больше не используются).

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

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

Я получил то же сообщение при попытке использовать команду ls , чтобы перечислить файлы, хранящиеся на хост-сервере FTP UNIX, из моей командной строки Ubuntu. Мне удалось успешно войти в систему, используя ftp ftp.example.com и ввести мое имя пользователя и пароль, когда будет предложено. Однако я бы получил сообщение 150 Opening ASCII mode data connection и ничего не произошло. Затем я просто ввел параметр -p (изменил его на «пассивный» режим для работы с брандмауэрами) с помощью команды, и она сработала.

Введите имя пользователя и пароль при появлении запроса, затем будут работать команды, такие как ls и cd . Я считаю, что вы также можете ввести эту команду, и она будет делать то же самое, но я ее не тестировал.

Я знаю, что вопрос относится к Windows; однако, учитывая ту же ошибку, было получено, что этот отзыв заслуживает публикации.

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

Скорее всего, хотя бы

  1. ваш клиент находится за брандмауэром (немым или заблокированным SSL) и пытается использовать FTP в режиме Active-mode
  2. ваш сервер находится за брандмауэром (немым или заблокированным SSL) и пытается использовать FTP с пассивным режимом

Если вы используете SSL, единственный ответ — открыть на брандмауэре ряд портов (скажем, 10000-11000) и настроить FTP-сервер для принудительного использования пассивного режима и использования этого диапазона портов. Если ваш сервер использует NAT, вам также нужно будет настроить правильный IP-адрес для сервера для рекламы клиентам, большинство из которых подчиняется тому, что сервер предоставляет в качестве строки подключения пассивного режима, и если сервер считает, что это 10.1.1.1, вот что он собирается рассказать клиентам.

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

Если вы не можете получить более умный брандмауэр, тогда вам придется придерживаться опции «открыть кучу портов» (или переключиться на протокол, который не должен открывать кучу случайных портов, таких как ssh’s SFTP).

У меня была эта проблема, и она была решена с помощью следующего.

Я использовал FireFTP, который по умолчанию подключается через пассивный режим. При настройке FTP в IIS порт по умолчанию должен быть 21. Мне пришлось открыть порт 21 в брандмауэре, который еще больше меня создал, но он зависает при подключении к данным в режиме ASCII . . p>

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

Чтобы исправить, я загрузил IIS (с использованием версии 8.0, верю, что это то же самое в 7.5), на уровне сервера дерева (то есть верхнего узла), просто нажмите его и выберите «FTP Поддержка брандмауэра «. Каждый используемый вами FTP-сайт будет использовать эти диапазоны портов, отдельные FTP-сайты будут иметь эту опцию greyed, поскольку она унаследована из этого раздела.

В диапазоне портов канала данных укажите x количество портов, в моем случае 10000-10125 .

Теперь в вашем брандмауэре откроется этот диапазон портов TCP как «диапазон пассивного порта FTP».

Тогда я подумал, что проблема будет решена, но не совсем. Не забудьте перезапустить службу Служба FTP FTP , чтобы выбрать новый диапазон портов. Закройте FireFTP / клиент и повторите попытку, и на этот раз в любом случае вы будете.:)

В ProFTPD присутствует команда site в других серверах ее я не видел, данная команда реализована только в ProFtp?

Вопрос возник при прочтении статьи про довольно старую уязвимость в ProFTPD 1.3.5rc3 позволяющую:

  • Вопрос задан 21 мар.
  • 89 просмотров

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

Исторически, протокол FTP это расширение протокола telnet (доступа к шелу) для передачи файлов. Команда SITE дает возможность выполнить на удаленном сайте какую-то команду, которая не является частью спецификации FTP, поэтому то, что вызывается через SITE по определению является нестандартным. Раньше это обычно реализовывалось путем размещения бинарников в какой-нибудь специальной папке, типа /var/ftp/bin (т.е SITE cpfr запускал /var/ftp/bin/cpfr), и таким образом можно было дать доступ через FTP к каким-то определенным командам или скриптам, сейчас таким образом обычно реализуются нестандартные расширения.

Оцените статью
Добавить комментарий