it-swarm-ru.tech

Какие порты брандмауэра мне нужно открыть при использовании FTPS?

Мне нужно получить доступ к серверу FTPS (vsftpd) на сайте поставщика. Поставщик имеет брандмауэр перед сервером ftps. У меня есть брандмауэр перед моим клиентом FTPS.

Я понимаю, что порты 990, 991 и, возможно, 989 должны быть открыты для контроля трафика.

У меня есть несколько вопросов:

  1. Если посмотреть на это с точки зрения брандмауэра поставщика, должны ли эти порты быть открыты как для входящего, так и для исходящего трафика?
  2. А как насчет портов для канала DATA?
  3. Нужно ли открывать все порты выше 1000?
  4. Должен ли я сделать это для входящего и исходящего трафика?
33
user3293

Я понимаю, что FTP через SSL (ftps) не очень хорошо работает с брандмауэрами и NAT. В обычном сеансе FTP информация о подключениях к данным читается, и для NAT изменено брандмауэром, чтобы брандмауэр динамически открывал необходимые порты. Если эта информация защищена с помощью SSL брандмауэр не может прочитать или изменить его.

Использование SFTP или scp значительно облегчает работу администратора сети - все происходит на порте 22 сервера, и транзакция соответствует обычной модели клиент/сервер.

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

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

а) поговорите с продавцом, чтобы получить подробные сведения о том, как была настроена его система.

б) Используйте анализатор протокола, такой как tcpdump или wireshark, чтобы посмотреть на трафик, как снаружи брандмауэра, так и внутри брандмауэра.

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

С этими ответами вы можете начать настройку брандмауэра.

19
pcapademic

Я полагаю, что порты вокруг 990 были для неявного SSL, который был старым нестандартным способом работы FTP/SSL. "Правильный" способ в наши дни - явный SSL, что означает, что вы все еще подключаетесь к порту 21 и затем договариваетесь о SSL перед отправкой своих вкусностей. Чтобы поддерживать соединения через брандмауэр, вам нужно использовать режим PASV и жестко настроить порты данных, которые будут использоваться.

Я считаю, что вам нужно по крайней мере один порт для каждого подключения к данным, которое вы хотите поддерживать. Если это только вы, вы, вероятно, в порядке, только открыв несколько дополнительных портов. Специально для меня я использую 21000-21010.

В vsftpd.conf у меня есть эти две строки (вместе со всеми другими вещами для поддержки SSL):

pasv_min_port=21000

pasv_max_port=21010

На моем брандмауэре у меня есть общедоступный статический IP-адрес с однозначным/статическим NAT к внутреннему IP-адресу и открыты только порты tcp 21, 21000-21010.

29
David

Я знаю, что это очень старая тема, однако ..

Обратите внимание, что 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.

11
Marin

В основном, ftps практически бесполезен, потому что вы должны делать неловкие запросы администраторам брандмауэра. Совет ограничить порты до 10 - это хорошо. Гораздо больше, это становится жалким.

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

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

Автоматический FTP - признак проблемы дизайна. Я заметил это, когда имел дело с примерно дюжиной поставщиков, которым "требовалось" место, где я работал, чтобы делать автоматизированный FTP (для ОЧЕНЬ важных вещей), и когда заставляли десятки клиентов делать это с тем же магазином (ошибка проектирования примерно для 20 различных использований я был свидетелем). Было легко убедить большинство пользователей приложения использовать HTTPS (обычно при упоминании они говорили: "Подожди, нет никаких причин, по которым мы не просто заставляем их получать это с HTTPS с веб-сервера, на котором мы уже предоставляем им данные?"). ), за исключением нескольких, которые дали ответы типа "ну, у нас уже есть эти сценарии, которые, кажется, работают, и никто в нашей команде не очень хорош со сценариями, поэтому мы не можем действительно вносить какие-либо изменения" (команда из 5-10 программистов, делая вид, что не понимают, что они могут написать это на языке по своему выбору, потому что они не знают, как написать тривиальную программу с нуля.).

2
carlito

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

1
Chris W. Rea

Порт 22 является стандартным, так как демон SSH в UNIX имеет модуль SFTP, который можно включить для создания явного сервера SFTP. Если вы хотите запустить неявный FTP-сервер с Filezilla, вы можете запустить его на любом порте, который вам нужен, но есть ловушка: если вы используете клиент FileZilla, вам нужно указать URL-адрес ftp-сайта как ftps: //mysite.com: 8086 вместо того, чтобы помещать порт в отдельное поле порта, которое предоставляет клиент FileZilla.

Для явной опции вам нужен только ОДИН порт: 22. Для неявной опции вам нужно только открыть брандмауэр для контрольного порта: 8086 (который внутренне перенаправляет на порт 21 на вашем сервере filezilla).

0
djangofan