ОБНОВИТЬ - Краткое изложение того, что решило эту проблему: после исправления неправильно набранного порта на маршрутизаторе я получил сообщение об ошибке «450 TLS-сеанс подключения к данным не возобновлен или сеанс не соответствует контрольному подключению», что привело меня к снятию флажка с сервера. установка «Требовать возобновления сеанса TLS при подключении к данным при использовании PROT P», которая устранила проблему. Не уверен, что отключение этой «функции» означает для безопасности. ------
Исходный пост - Моя цель - получить явный FTP через TLS, работающий с сервером Firezilla. Я установил Firezilla и брандмауэр Windows, чтобы разрешить один и тот же диапазон портов.
Firewall Ports: 21, 50000-51000
Firezilla Server: Passive Ports: 50000-51000
В моем маршрутизаторе также есть этот диапазон портов, перенаправленных по TCP на правильный IP-адрес LAN.
Мой сервер находится за NAT и имеет статический IP-адрес, который также указан на вкладке пассивных настроек сервера Firezilla. Единственный способ добиться успеха - это когда клиент находится на той же стороне NAT, и только при прямом подключении к FTP и только в активном режиме.
Я тестировал ftptest.net, и это журнал
Явный FTP через TLS
Status: Resolving address of xxx.x.xxx.xxx
Status: Connecting to xxx.x.xxx.xxx
Warning: The entered address does not resolve to an IPv6 address.
Status: Connected, waiting for welcome message...
Reply: 220-FileZilla Server 0.9.60 beta
Reply: 220 Welcome
Command: CLNT https://ftptest.net on behalf of xxx.x.xxx.xxx
Reply: 200 Don't care
Command: AUTH TLS
Reply: 234 Using authentication type TLS
Status: Performing TLS handshake...
Status: TLS handshake successful, verifying certificate...
Status: Received 1 certificates from server.
Status: cert[0]: subject='CN=xxx.x.xxx.xxx,C=US,ST=My state,L=My city' issuer='CN=xxx.x.xxx.xxx,C=US,ST=My state,L=My city'
Command: USER username
Reply: 331 Password required for username
Command: PASS *************
Reply: 230 Logged on
Command: SYST
Reply: 215 UNIX emulated by FileZilla
Command: FEAT
Reply: 211-Features:
Reply: MDTM
Reply: REST STREAM
Reply: SIZE
Reply: MLST type*;size*;modify*;
Reply: MLSD
Reply: AUTH SSL
Reply: AUTH TLS
Reply: PROT
Reply: PBSZ
Reply: UTF8
Reply: CLNT
Reply: MFMT
Reply: EPSV
Reply: EPRT
Reply: 211 End
Command: PBSZ 0
Reply: 200 PBSZ=0
Command: PROT P
Reply: 200 Protection level set to P
Command: PWD
Reply: 257 "/" is current directory.
Status: Current path is /
Command: TYPE I
Reply: 200 Type set to I
Command: PASV
Reply: 227 Entering Passive Mode (xxx,x,xxx,xxx,196,44)
Command: MLSD
Reply: 425 Can't open data connection for transfer of "/"
Error: Listing failed
Разрешить откат на простой FTP
Warning: Allowing fallback to plaintext FTP is insecure. You should use explicit FTP over TLS.
Status: Resolving address of xxx.x.xxx.xxx
Status: Connecting to xxx.x.xxx.xxx
Warning: The entered address does not resolve to an IPv6 address.
Status: Connected, waiting for welcome message...
Reply: 220-FileZilla Server 0.9.60 beta
Reply: 220 Welcome
Command: CLNT https://ftptest.net on behalf of xxx.x.xxx.xxx
Reply: 200 Don't care
Command: AUTH TLS
Reply: 234 Using authentication type TLS
Status: Performing TLS handshake...
Status: TLS handshake successful, verifying certificate...
Status: Received 1 certificates from server.
Status: cert[0]: subject='CN=xxx.x.xxx.xxx,C=US,ST=My state,L=My city' issuer='CN=xxx.x.xxx.xxx,C=US,ST=My state,L=My city'
Command: USER username
Reply: 331 Password required for username
Command: PASS *************
Reply: 230 Logged on
Command: SYST
Reply: 215 UNIX emulated by FileZilla
Command: FEAT
Reply: 211-Features:
Reply: MDTM
Reply: REST STREAM
Reply: SIZE
Reply: MLST type*;size*;modify*;
Reply: MLSD
Reply: AUTH SSL
Reply: AUTH TLS
Reply: PROT
Reply: PBSZ
Reply: UTF8
Reply: CLNT
Reply: MFMT
Reply: EPSV
Reply: EPRT
Reply: 211 End
Command: PBSZ 0
Reply: 200 PBSZ=0
Command: PROT P
Reply: 200 Protection level set to P
Command: PWD
Reply: 257 "/" is current directory.
Status: Current path is /
Command: TYPE I
Reply: 200 Type set to I
Command: PASV
Reply: 227 Entering Passive Mode (xxx,x,xxx,xxx,196,107)
Command: MLSD
Reply: 425 Can't open data connection for transfer of "/"
Error: Listing failed
Буду признателен за любую помощь в преодолении этого. Заранее спасибо.
Проблема с FTP через TLS как с брандмауэрами, так и с устройствами NAT двойная.
FTP - дрянной протокол, требующий двух соединений:
PASV
управляющее слово FTP-сервер выбирает "случайный доступный эфемерный" порт, отличный от порта по умолчанию, и объявляет этот порт с помощью PORT
ответ.PORT h1,h2,h3,h4,p1,p2
где h1.h2.h3.h4
IPv4 IP-адрес сервера и номер порта TCP (p1*256) + p2
т.е. xxx,x,xxx,xxx,196,107
представляет порт (196 * 256) + 107 = 50283В FTP через TLS соединение между клиентом и FTP-сервером зашифровано. Это приводит к проблемам с серверами, которые защищены межсетевыми экранами и находятся за устройствами NAT.
Проблемы с брандмауэром
Обычно в интеллектуальном брандмауэре, когда вы разрешаете FTP, вам нужно открыть порт для управляющего соединения, TCP 21, а затем, в открытом текстовом протоколе FTP, брандмауэр может сканировать и обнаруживать ответ PORT. Затем вспомогательный модуль FTP автоматически откроет номер порта, назначенный FTP-сервером этому конкретному клиенту, что позволяет осуществлять довольно детальный контроль доступа.
Когда соединение зашифровано с помощью TLS, брандмауэр больше не может обнаруживать ответ PORT и, следовательно, не открывает автоматически назначенный порт.
Решением для этого является:
Проблемы с NAT
Когда FTP-сервер находится за устройством, которое выполняет преобразование сетевых адресов и переадресацию портов, трафик управляющего соединения на порту 21 будет перенаправляться с (внешнего) IP-адреса устройства NAT на порт 21 FTP-сервера.
Кроме того, он будет запускать аналогичный вспомогательный модуль NAT FTP, который в открытом текстовом протоколе FTP может сканировать и обнаруживать ответ PORT.
Увидев PORT
ответ обычно вносит два изменения:
PORT h1,h2,h3,h4,p1,p2
IP-адрес h1,h2,h3,h4
FTP-сервера будет заменен на e1,e2,e3,e4
представляющий (внешний) IP-адрес e1.e2.e3.e4
сервера NAT, к которому подключен клиент. p1,p2
с устройства NAT на FTP-сервер.Когда FTP-соединение зашифровано с помощью TLS, устройство NAT не может обнаружить ответ PORT, и поэтому устройство NAT больше не может ни переписывать IP-адрес, ни автоматически создавать необходимые правила переадресации портов.
Типичное решение таких проблем с NAT состоит в следующем:
h1.h2.h3.h4
он будет использовать внешний IP-адрес e1.e2.e3.e4
устройства NAT в PORT
ответы. 50000 --> 50000
, 50001 --> 50001
, 50002 --> 50002
и т.д. . Не забывайте, что в дополнение к брандмауэру на основе хоста на FTP-сервере могут быть задействованы дополнительные брандмауэры или группы безопасности. Например, в дополнение к правилам переадресации портов вам также может потребоваться создать правила брандмауэра на устройстве NAT.