Понять FTP; Активный / пассивный с брандмауэрами и NAT

У меня есть некоторые основные вопросы о FTP с брандмауэрами и NAT, я надеюсь, что кто-то может мне помочь:)

Я разделил их по разным сценариям:

Активный FTP без NAT

Настроить:

Сервер 1.2.3.4, Порты по умолчанию; Клиент 1.2.3.5, порты: 3141 (cmd), 3142 (данные)

Клиент: 3141 подключается к Серверу:20

Сервер:20 ответов клиенту: 3141

Сервер: 21 подключается к клиенту: 3142

Как это обычно решается на практике? Я могу думать о следующих возможностях:

  • Клиентский брандмауэр помнит, что было соединение с командой FTP и поэтому открывает порт 3142
  • Клиентский брандмауэр помнит, что было соединение с командой FTP, и поэтому разрешает все соединения с 1.2.3.4:21 до 1.2.3.5:3142.
  • Клиентский брандмауэр разрешает все соединения от xxxx: 21 до 1.2.3.5:3142

Я предполагал, что во всех этих решениях клиент всегда будет использовать два последовательных порта - это правда?

Активный FTP с NAT

Настроить:

Сервер 1.2.3.4 порты по умолчанию; Клиент 192.168.0.2, порты 3141, 3142; Маршрутизатор, 1.2.3.5 и 192.168.0.1

Клиент: 3141 подключается к 1.2.3.4:20 через 192.168.0.1

Сервер:20 ответов на 1.2.3.5:ARBITRARY - доставлено на 192.168.0.2:3141, так как есть SNAT

Сервер: 21 подключается к 1.2.3.5:(ARBITRARY+1) - откуда маршрутизатор знает, кому этот пакет принадлежит?

Пассивный FTP с NAT

Сервер находится за маршрутизатором - откуда маршрутизатор узнает, что пакет, получаемый через произвольный порт, предназначен для FTP-сервера? (и, следовательно, как маршрутизатор узнает, что нельзя отбросить этот пакет)

И почему Passive FTP использует произвольный порт на сайте сервера для подключения к данным? Почему не порт 21?

Я надеюсь, что вы понимаете мои вопросы, и кто-то может мне помочь:)

Спасибо

1 ответ

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

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


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

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

Другие вопросы по тегам