Я понимаю, что FTP через SSL (ftps) не очень хорошо работает с брандмауэрами и NAT. В обычном сеансе FTP информация о подключениях к данным считывается и для NAT изменяется брандмауэром, чтобы брандмауэр динамически открывал необходимые порты. Если эта информация защищена с помощью SSL, брандмауэр не сможет прочитать или изменить ее.
Использование SFTP или scp значительно облегчает работу администратора сети - все происходит на порте 22 сервера, и транзакция соответствует обычной модели клиент / сервер.
Одна вещь, не упомянутая, состоит в том, выполняет ли Ваш межсетевой экран NAT и является ли это статическим NAT или динамическим NAT. Если ваш клиентский компьютер имеет статический адрес или статически NAT, вам может не потребоваться вносить какие-либо изменения в брандмауэр, если вы разрешаете весь исходящий трафик и сервер работает только в пассивном режиме (PASV).
Чтобы точно знать, какие порты вам нужно открыть, вам необходимо:
а) поговорите с продавцом, чтобы получить подробные сведения о том, как была настроена его система.
б) Используйте анализатор протокола, такой как tcpdump или wireshark, чтобы посмотреть на трафик, как за пределами вашего брандмауэра, так и внутри вашего брандмауэра
Вам необходимо выяснить, какой порт является управляющим соединением. Вы перечислите 3, что мне кажется странным. Предполагая, что сервер работает только в режиме PASV (пассивный), вам необходимо выяснить, как сервер настроен на выделенные порты DATA. Они заблокировали канал данных для одного входящего порта? Они заблокировали канал DATA для небольшого диапазона или портов?
С этими ответами вы можете начать настройку брандмауэра.
Я полагаю, что порты вокруг 990 были для неявного SSL, который был старым нестандартным способом работы FTP / SSL. «Правильный» способ в наши дни - явный SSL, что означает, что вы все еще подключаетесь к порту 21 и затем договариваетесь о SSL перед отправкой своих вкусностей. Для поддержки соединений через брандмауэр вам необходимо использовать режим PASV и жестко настроить порты данных, которые будут использоваться.
Я считаю, что вам нужно по крайней мере один порт для каждого подключения к данным, которое вы хотите поддерживать. Если это только вы, вы, вероятно, в порядке, только открыв несколько дополнительных портов. Специально для меня я использую 21000-21010.
В vsftpd.conf у меня есть эти две строки (вместе со всеми другими вещами для поддержки SSL):
На моем брандмауэре у меня есть общедоступный статический IP-адрес с однозначным / статическим NAT для внутреннего IP-адреса и открыты только порты TCP 21, 21000-21010.
источник
Я знаю, что это очень старая тема, однако ..
Обратите внимание, что SFTP полностью отличается от FTPS. (SSH против SSL)
FTPS работает в 2-х направлениях. Явное и неявное. Explicit менее безопасен, потому что после первоначального рукопожатия пропускается шифрование во время передачи данных [если поддерживается шифрование данных, можно настроить на стороне сервера с помощью PROT P], в то время как Implicit также поддерживает шифрование данных после рукопожатия. Порт Explicit FTPS по умолчанию - 21. Порт Implicit по умолчанию - 990 (после рукопожатия он автоматически переключится на 989 для передачи данных, если не настроен иначе). В то время как порт 21 обычно принимается в качестве EXPLICIT FTPS, а 990 - в качестве IMPLICIT FTPS, в действительности любой порт, который вы будете настраивать, кроме 990/989, приведет к EXPLICIT FTPS, тогда как только 990/989 будет приниматься в качестве IMPLICIT FTPS.
Итак, чтобы ответить на ваш вопрос: - в зависимости от конфигурации сервера FTPS, вам нужно открыть порт 21 или 990/989. Однако, чтобы быть уверенным, вам следует связаться с администратором FTPS-сервера и попросить указания. Также имейте в виду, что для пассивного режима, как и для любого другого программного обеспечения FTP, вам придется открывать дополнительные порты (TCP / UDP), как правило, в диапазоне 64000-65000.
источник
В основном, ftps практически бесполезен, потому что вы должны делать неловкие запросы администраторам брандмауэра. Совет ограничить порты до 10 - это хорошо. Гораздо больше, это становится жалким.
sftp намного лучше в теории. Но вам нужен жизнеспособный сервер sftp, например тот, который ограничивает клиентов их собственным домашним каталогом.
В зависимости от приложения рассмотрите HTTPS. Загрузка файла действительно проста, и загрузка, очевидно, также. В любом случае, если вы пишете сценарий FTP, возможно, будет проще создать сценарий загрузки файла HTTPS.
Автоматический FTP - признак проблемы дизайна. Я заметил это, когда имел дело с примерно дюжиной поставщиков, которым «требовалось» место, где я работал, чтобы делать автоматизированный FTP (для ОЧЕНЬ важных вещей), и когда заставляли десятки клиентов делать это с тем же магазином (ошибка проектирования примерно для 20 различных использований я был свидетелем). Было легко убедить большинство пользователей приложения использовать HTTPS (обычно при упоминании они говорили: «Подожди, нет никаких причин, по которым мы не просто заставляем их получать HTTPS с веб-сервера, на котором мы уже предоставляем им данные?»). ), за исключением нескольких, которые дали ответы типа «ну, у нас уже есть эти сценарии, которые, кажется, работают, и никто в нашей команде не очень хорош со сценариями, поэтому мы не можем действительно вносить какие-либо изменения» (команда из 5-10 программистов,
источник
Поставщик может настроить узкий диапазон портов для портов подключения DATA, если они этого еще не сделали. Затем вы можете открыть тот же диапазон на своем конце для хостов, которым нужен такой доступ. Режим PASV должен быть использован.
источник
Порт 22 является стандартным, так как демон SSH в UNIX имеет модуль SFTP, который можно включить для создания явного сервера SFTP. Если вы хотите запустить неявный FTP-сервер с Filezilla, вы можете запустить его на любом порте, который вам нужен, но есть ловушка: если вы используете клиент FileZilla, вам нужно указать URL-адрес ftp-сайта как ftps: //mysite.com: 8086 вместо того, чтобы помещать порт в отдельное поле порта, которое предоставляет клиент FileZilla.
Для явной опции вам нужен только ОДИН порт: 22. Для неявной опции вам нужно только открыть брандмауэр для контрольного порта: 8086 (который внутренне перенаправляет на порт 21 на вашем сервере filezilla).
источник
если ftps совпадает с sftp , то вам нужно иметь доступ только к порту 22 на сайте поставщика.
Со своей стороны вы должны настроить брандмауэр так, чтобы разрешить исходящий порт 22 и связанный входящий трафик . Это позволит осуществлять связь через любой входящий порт, который связан с исходным исходящим соединением через порт 22.
источник