Назад | Перейти на главную страницу

FTPS - явный FTP через TLS - невозможно получить список каталогов

ОБНОВИТЬ - Краткое изложение того, что решило эту проблему: после исправления неправильно набранного порта на маршрутизаторе я получил сообщение об ошибке «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 двойная.

  1. FTP - дрянной протокол, требующий двух соединений:

    1. в пассивном FTP, который изначально представляет собой одно управляющее соединение с портом по умолчанию, TCP 21
    2. для фактической передачи данных (а получение списка каталогов - это передача данных) клиенту необходимо установить второе TCP-соединение, соединение для передачи данных.
      После того, как FTP-клиент запрашивает пассивное ftp-соединение с PASV управляющее слово FTP-сервер выбирает "случайный доступный эфемерный" порт, отличный от порта по умолчанию, и объявляет этот порт с помощью PORT ответ.
      Ответ PORT обычно содержит 6 октетов, например 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
  2. В FTP через TLS соединение между клиентом и FTP-сервером зашифровано. Это приводит к проблемам с серверами, которые защищены межсетевыми экранами и находятся за устройствами NAT.

Проблемы с брандмауэром
Обычно в интеллектуальном брандмауэре, когда вы разрешаете FTP, вам нужно открыть порт для управляющего соединения, TCP 21, а затем, в открытом текстовом протоколе FTP, брандмауэр может сканировать и обнаруживать ответ PORT. Затем вспомогательный модуль FTP автоматически откроет номер порта, назначенный FTP-сервером этому конкретному клиенту, что позволяет осуществлять довольно детальный контроль доступа.

Когда соединение зашифровано с помощью TLS, брандмауэр больше не может обнаруживать ответ PORT и, следовательно, не открывает автоматически назначенный порт.
Решением для этого является:

  • исправить диапазон портов, которые FTP-сервер будет использовать для пассивных подключений к небольшому диапазону
  • в вашем брандмауэре откройте как порт 21, так и этот фиксированный диапазон портов для подключений к данным

Проблемы с 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 состоит в следующем:

  • перенастроить FTP-сервер так, чтобы вместо его собственного IP-адреса h1.h2.h3.h4 он будет использовать внешний IP-адрес e1.e2.e3.e4 устройства NAT в PORT ответы.
  • исправить диапазон портов, которые FTP-сервер будет использовать для пассивных подключений к небольшому диапазону
  • В дополнение к TCP-порту 21 также создайте правила явной переадресации портов (NAT) для каждого порта в диапазоне пассивных портов, который вы настроили на FTP-сервере, на соответствующий порт на FTP-сервере, т.е. 50000 --> 50000 , 50001 --> 50001 , 50002 --> 50002 и т.д. .

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