pure-ftpd выдает неверный ip для пассивного соединения в режиме TLS
Я настраиваю наш ftp-сервер ( pure-ftpd-1.0.21-r1) для использования TLS/SSL. Это работает, когда я не использую TLS.
Началось с параметров команды:
-S 21 -c 30 -C 10 -B -k 90% -A -R -Z -p 49152:65534 -U 013 -s --tls=1
,
Response: 230 OK. Current restricted directory is /
Command: SYST
Response: 215 UNIX Type: L8
Command: FEAT
Response: 211-Extensions supported:
Response: EPRT
Response: IDLE
Response: MDTM
Response: SIZE
Response: REST STREAM
Response: MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;
Response: MLSD
Response: TVFS
Response: ESTP
Response: PASV
Response: EPSV
Response: SPSV
Response: ESTA
Response: AUTH TLS
Response: PBSZ
Response: PROT
Response: 211 End.
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is your current location
Command: TYPE I
Response: 200 TYPE is now 8-bit binary
Command: PASV
Response: 227 Entering Passive Mode (76,65,xxx,xxx,228,146) #last octets removed to protect the guilty
Command: MLSD
Response: 150 Accepted data connection
Response: 226-ASCII
Response: 226-Options: -l
Response: 226 54 matches total
Status: Directory listing successful
Status: Disconnected from server
Когда я использую TLS:
Response: 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
Response: 220-You are user number 4 of 30 allowed.
Response: 220-Local time is now 09:19. Server port: 21.
Response: 220-IPv6 connections are also welcome on this server.
Response: 220 You will be disconnected after 15 minutes of inactivity.
Command: AUTH TLS
Response: 234 AUTH TLS OK.
Status: Initializing TLS...
Status: Verifying certificate...
Command: USER john
Status: TLS/SSL connection established.
Response: 331 User john OK. Password required
Command: PASS ********
Response: 230-User john has group access to: svn anonymou proftpd powercor john
Response: 230- users usb ftp
Response: 230 OK. Current restricted directory is /
Command: SYST
#....same as above
Response: 200 TYPE is now 8-bit binary
Command: PASV
Response: 227 Entering Passive Mode (192,168,15,2,198,194)
Status: Server sent passive reply with unroutable address. Using server address instead.
Command: MLSD
Error: Connection timed out
Error: Failed to retrieve directory listing
2 ответа
Я предполагаю, что ваш FTP-сервер находится за брандмауэром NAT, и что у вас есть вспомогательный модуль ip_conntrack_ftp (или его эквивалент), работающий на устройстве брандмауэра. По сути, этот модуль сканирует поток данных в поисках экземпляров внутреннего IP-адреса и перезаписывает их на внешний IP-адрес. Однако он не может сделать это для FTP-соединений, защищенных TLS, потому что он не может расшифровать пакеты в полете, чтобы найти IP-адрес (как правило, считается хорошим).
Ваши варианты:
- Использовать
-P
опция "Принудительно указать указанный IP-адрес в ответ на команду PASV/EPSV/SPSV". - Избавиться от NAT
Вы должны указать IP-адрес маскарада в пассивной команде.
прямо сейчас ваша пассивная команда возвращает 192,168,15,2 (это частный IP и не будет работать через общедоступные интернет-соединения)
- '-P': принудительно указать указанный IP-адрес в ответ на команду PASV/EPSV/SPSV. Если сервер находится за рамкой маскирования (NAT), которая не обрабатывает надлежащим образом маскировку FTP с сохранением состояния, укажите здесь IP-адрес этого поля. Если у вас динамический IP-адрес, вы можете указать публичное имя хоста вашего шлюза, которое будет разрешаться при каждом подключении нового клиента.