
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, ls
consigo 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 LIST
comando
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?