VSFTPD TLS e modo explícito

VSFTPD TLS e modo explícito

Atualmente estou tentando configurar o VSFTPD em um servidor Ubuntu 16.04 e quero usar FTPS (idealmente eu usaria SFTP, mas infelizmente estou limitado por um sistema legado)

Consegui configurá-lo usando a configuração padrão e sem TLS e posso conectar-me bem via filezilla. Embora nos últimos 2 dias eu tenha tentado ativar o TLS e nenhuma quantidade de perguntas no SE ou em outro lugar pareça levar a um resultado positivo.

Os detalhes do meu certificado no arquivo vsftpd.conf são os seguintes:

rsa_cert_file=/path/to/fullchain.pem
rsa_private_key_file=/path/to/privkey.pem
allow_anon_ssl=NO
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES

No entanto, não consigo mais me conectar com o seguinte mostrado no console do filezilla:

Status:         Verifying certificate...
Status:         TLS connection established.
Status:         Server does not support non-ASCII characters.
Status:         Logged in
Status:         Retrieving directory listing...
Status:         Server sent passive reply with unroutable address. Using server address instead.
Command:    LIST
Error:      Connection timed out after 20 seconds of inactivity
Error:      Failed to retrieve directory listing

Esta é a primeira vez que configuro o VSFTPD, por isso tenho seguido alguns tutoriais online. Eles também envolveram o UFW e eu abri as portas conforme mostrado.

Também tentei adicionar as seguintes linhas ao meu arquivo vsftpd.conf

  ssl_tlsv1=YES
  ssl_sslv2=NO
  ssl_sslv3=NO

  require_ssl_reuse=NO
  ssl_ciphers=HIGH

Já vi outros posts mencionando a opção pasv_address

então tentei adicionar isso à minha configuração com o IP externo do meu servidor - observe que ele está hospedado no Google Compute Engine e também atualizei minhas regras de firewall no Compute para permitir as mesmas portas, etc., que foram especificadas no tutorial . Isso também não funciona.

Só posso presumir que tem algo a ver com portas/firewalls ou outras opções de TLS, mas estou completamente perplexo. Acho que não ajuda o fato de eu ter o firewall da rede Google Cloud e depois o ufw (embora desabilitar o ufw não tenha efeito)

Minhas regras do ufw são as seguintes:

20/tcp                     ALLOW       Anywhere                  
21/tcp                     ALLOW       Anywhere                                   
990/tcp                    ALLOW       Anywhere                  
40000:50000/tcp            ALLOW       Anywhere 

e se alguém quiser saber mais o tutorial que segui estava aqui:configurando-acesso-ftp

Não parece haver nenhum registro em vsftpd.log que indique um problema, mas ativar o registro detalhado no filezilla revela o seguinte:

Vinculando o IP da fonte de conexão de dados ao IP da fonte de conexão de controle 192.168.1.100

o que presumo que possa ser um problema, pois parece um IP local. Embora eu não saiba como consertar isso, especialmente porque também tenho o seguinte em meu arquivo vsftpd.conf:

pasv_address=(IP EXTERNO DO GOOGLE COMPUTE)

Minhas regras de firewall do Google Cloud são:

IP ranges: 0.0.0.0/0
tcp:20-21   
Allow
1000
default

pass-ports
sftp    
IP ranges: 0.0.0.0/0
tcp:40000-50000

(eles serão bloqueados por IP eventualmente, mas mesmo testando com tudo, não consigo fazer isso funcionar)

E também no meu arquivo vsftpd.conf acredito que adicionei essas portas como aquelas a serem usadas por meio de:

port_enable=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=41000

Atualizar

Agora posso me conectar a isso na própria caixa usando lftp e os seguintes argumentos

definir ftp:ssl-force verdadeiro

Eu me conecto através do nome de domínio em vez de IP, pois o certificado é mapeado para o domínio, portanto não funcionará com o IP.

Posso então criar novos diretórios, etc., através da linha de comando. No entanto, se eu tentar, lsconsigo ls at 0 [Making data connection...]e ele simplesmente fica parado. Também recebo um erro por meio de um cliente FTP externo, como o filezilla. Isso apenas expira no LISTcomando

Command:    LIST
Error:          The data connection could not be established: ETIMEDOUT - Connection attempt timed out
Response:   425 Failed to establish connection.
Error:          Failed to retrieve directory listing
Error:          GnuTLS error -15: An unexpected TLS packet was received.
Status:         Disconnected from server: ECONNABORTED - Connection aborted

A única outra informação que considero relevante é que o domínio é encaminhado por porta pelo NGINX para um aplicativo de nó. Mas presumo que isso só deveria acontecer nas portas 80 e 443, portanto não deveria afetar a porta 21.

Alguém tem alguma idéia?

informação relacionada