Tentando se conectar ao vsftpd, Falha ao recuperar a listagem de diretórios

4

Algo não está funcionando aqui. Eu tenho o seguinte erro ao usar o FileZilla para se conectar a uma máquina remota executando vsftpd :

Command:    LIST
Error:  Connection timed out
Error:  Failed to retrieve directory listing

Estou tentando configurar serviços FTP em 3 máquinas atrás de um firewall residencial de ISP. Todos são Ubuntu 12.04 Server LTS, e estou impedido de usar a porta 21 externamente no site remoto.

Bem ... Ok, confesso, sou eu quem está impondo a restrição. Eu só queria parecer que estava trabalhando para uma empresa real. De qualquer forma, apenas 1 dos 3 sistemas poderia ter sido atribuído a 21, então ainda seria um problema.

Eu tentei as soluções para adicionar linhas "pasv _...", mas ainda não consigo passar do estágio LIST da conexão.

Então, tendo falhado, qual seria o problema?

Eu li no este site que preciso encaminhar as portas 20 e 21. Neste momento, os sites remotos têm portas como 10000, 11000, 12000 encaminhadas para a porta interna 21 em cada um dos sistemas. Devo encaminhar algumas portas adicionais para 20? não faz sentido porque essa porta não está nem aberta, o vsftpd está apenas ouvindo 21.

Tudo que eu quero é ter uma conexão ftp bem-sucedida por meio dessas portas encaminhadas, estou frustrado porque fui encaminhado com sucesso para serviços como SSH, apache2 etc. e não entendo o que está quebrado aqui.

thx Joren por corrigir minha formatação!

EDIT: Eu tenho brincado com o meu teste VPS que está diretamente exposto à internet, eu instalei o vsftpd só para ver o que acontece, e a saída do 'netstat -tuna' mostra que uma conexão bem-sucedida do meu cliente filezilla assim:

tcp        0      0 vps.vps.vps.vps:21       fi.le.zil.la:54288      ESTABLISHED
tcp        0      0 vps.vps.vps.vps:46403    fi.le.zil.la:54289      TIME_WAIT

Nota: o servidor FTP no meu VPS também não funcionou no início, devido a um problema completamente não relacionado envolvendo ambientes virtualizados ("500 OOPS: priv_sock_get_cmd"). Leia: Eu estou começando a ver que o vsftpd do Ubuntu não funciona 'out-of-the-box' como o apache2 e o sshd, para qualquer administrador novato frustrado por aí, não acho que você ' re estúpido se não está funcionando a primeira coisa ...

Meu teste VPS não tem um firewall, portanto todas as portas estão diretamente disponíveis para acesso pelo daemon FTP. Depois de executar esse teste, vejo que é possível que essa conexão secundária esteja sendo bloqueada no site remoto onde estou tendo problemas (portas aleatórias, como 46403).

Pelo menos agora eu confirmei que não há problemas de NAT com o meu Filezilla, porque claramente o filezilla está abrindo portas aleatórias e falando com o meu VPS ok.

A única coisa que não faz sentido, é a configuração 'connect_from_port_20 = YES' está definida na minha configuração de FTP do VPS, mas não consigo ver nenhuma conexão usando a porta 20 !!! É por isso que nem sei se essa porta precisa ser encaminhada por um firewall.

Uma das minhas deficiências de conhecimento é que eu nem sei o que é a porta 20, e não consigo aprender com a experiência porque nunca vi qualquer indicação de que a porta é usada durante a conexão, download ou upload.

OK, eu encontrei alguns problemas (há claramente mais de uma coisa errada) - Isso tem a ver com o encaminhamento de porta.

Suspeite de um problema original (antes de personalizar o vsftpd.conf)

  1. O Filezilla inicialmente se conecta à porta remota 10000, == & gt; vai para 21 no servidor FTP interno (ok)
  2. O servidor FTP abre uma porta aleatória (NÃO 20) como 45678, mas o roteador obviamente não tem uma regra para essa porta atribuída aleatoriamente. Ele envia uma mensagem dizendo ao FileZilla para também se conectar ao 45678.
  3. O cliente do Filezilla abre sua própria porta do meu lado atrás do NAT (ok)
  4. O Filezilla envia solicitação de conexão para 45678, mas o roteador remoto não aceita a conexão, pois não há regra de encaminhamento para essa porta.

Agora, o (s) problema (s) que criei:

pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10000
  1. O Filezilla se conecta à porta remota 10000, == & gt; vai para 21 no servidor FTP interno (ok)
  2. O servidor FTP abre a única porta possível, 10000, [momento estúpido] porque tenho essa porta na minha cabeça associada a esse sistema. Mas 10000 é na verdade a contraparte do lado da WAN para 21 neste sistema.O servidor envia uma mensagem para o FileZilla se conectar a 10000 e escuta internamente em 10000
  3. O cliente do Filezilla abre sua própria porta aleatória no meu lado (ok)
  4. O Filezilla tenta a conexão secundária na porta 10000, o roteador remoto a desvia para a porta 21 novamente onde deve ser ignorado ou perdido, enquanto o servidor FTP aguarda por uma conexão à porta interna 10000 que nunca chega. (falha)

Segundo problema que criei: Eu tentei ligar a porta 21 dessa vez, mas acho que isso bagunçou o filezilla.

pasv_enable=YES
pasv_min_port=21
pasv_max_port=21
  1. O Filezilla se conecta à porta remota 10000, == & gt; vai para 21 no servidor FTP interno (ok)
  2. O servidor FTP abre a porta 21 (ou talvez falhe porque 21 já está sendo usado) se for bem-sucedido, enviou uma mensagem para o filezilla se conectar à porta 21.
  3. O cliente do Filezilla abre sua própria porta aleatória no meu lado (ok)
  4. O Filezilla envia uma solicitação para LISTA para 21, que o roteador não aceitará ... (falha)

Conclusão: enquanto a porta estiver sendo alterada por um roteador, o servidor FTP nunca poderá informar ao cliente para se conectar à porta correta. Se você tentar usar a porta interna, o cliente será executado contra o roteador. Se você tentar especificar a porta externa, o roteador irá desviar a conexão de entrada para um número diferente - o que o servidor não esperava.

Vou testar uma solução e relatar aqui com os resultados.

Eu acho que, porque o protocolo do servidor FTP aparece para informar ao cliente a qual porta se conectar, essa conexão secundária DEVE ter o mesmo número de porta externa que o interno.

Eu chamarei isso de 'conexão secundária' e acho que tem algo a ver com a porta 20 que não entendo.

Portanto, entrarei em contato com o site remoto e terei uma porta adicional encaminhada diretamente , para que o servidor FTP possa abrir uma conexão internamente e o cliente possa enviar uma solicitação de conexão para esse exato número da porta.

Novo plano:

(nota: o '%' serve para mostrar a porta sendo alterada pelo roteador remoto).

 

server #1
    primary connection: 21 <--%--> 10000 
    secondary connection 10001 <-----> 10001
    vsftp.conf:
        pasv_min_port=10001
        pasv_max_port=10001

server #2
    primary connection 21 <--%--> 11000
    secondary connection 11001 <-----> 11001
    vsftp.conf:
        pasv_min_port=11001
        pasv_max_port=11001

server #3
    primary connection 21 <--%--> 12000
    secondary connection 12001 <-----> 12001
    vsftp.conf:
        pasv_min_port=12001
        pasv_max_port=12001
    
por ajhcasual 25.09.2013 / 13:11

5 respostas

2

Meu roteador (fritz.box, alemanha) tinha que ser configurado para desbloquear as portas mais altas no mesmo wa que o ingoing! (acima: este "pasv_min .. e ... max" aqui inserido / prescrito pelo debian-vsftpd):

Adicionando um intervalo de portas desbloqueadas no Fritz! Box-Router com o botão correspondente:
  "Outras aplicações" - & gt;     "Portokoll": TCP, porta: 13450, bis Porta: 13500 (ou portas altas dentro de um intervalo ~ 50),     "um computador": RasPi, "um IP_Adresse": (sem graxa, o endereço interno da LAN-IP para o meu      "RasPi" dado pelo fritz.box-router) - & gt; e aqui vem:      "uma porta" (= o mesmo intervalo!): 13450, "bis Port": 13450, e isso está funcionando bem com      vsftpd e FTPS (AUTH TLS / SSL-Tranfer com OpenSSL + criptografia strong DES-CBC3-SHA) ...

Isso encaminhará as portas corretas e conectará as solicitações de e para o meu pequeno RasPi- "Servidor" (atrás do FB-NAT) para a solicitação externa IP de saída / saída NA MESMA GAMA DE ALTA (ER) -PORTS, como "cabos" conectados à direita para as mesmas portas na parte interna ...

Um possível arquivo vsftp-config "/etc/vsftpd.conf":

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
force_dot_files=YES

ssl_enable=YES
force_local_data_ssl=NO
force_local_logins_ssl=NO
allow_anon_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# rsa_cert_file=/etc/ssl/private/vsftpd.pem   # not working alright, so single-lined:
rsa_cert_file=/etc/ssl/private/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key

pasv_enable=YES
# pasv_promiscuous=YES
# port_promiscuous=YES
pasv_addr_resolve=YES
pasv_address=[yourDNSadress.no-ip.com] # for Dynamic-DNS the routers daily changing IP.
# port_enable=YES
pasv_min_port=13450
pasv_max_port=13500
file_open_mode=0755
    
por Norbert 05.12.2013 / 18:36
1

Em /etc/vsftpd.conf, você deve fornecer um intervalo de portas, pelo menos 2 ou 3, com as configurações pasv_min_port e pasv_max_port.

Quando você se conecta ao vsftpd no modo passivo com o cliente FileZilla, o vsftpd responde com a conexão de dados em outra porta selecionada aleatoriamente dentro do intervalo fornecido por pasv_min_port e pasv_max_port. Se você está tentando fazer tudo em uma porta, isso provavelmente causará problemas.

Se você está trabalhando com a porta 12001, tente:
pasv_min_port = 12001
pasv_max_port = 12005

    
por Brian Grogan Jr. 05.12.2013 / 19:58
0

Para mim, o problema não era o arquivo de configuração "vsftpd.conf" no servidor Raspberry-Pi FTP- (mini-) (com seu software: vsftpd) mas ON MY House-ROUTER com seu firewall não deixando passar através dos "sinais", dizendo-me no meu Windows FTPS-Program (não estou usando Filezilla mas CoreFTP) - & gt; "192,168,178,21,71,27 - & gt; 500 comando PORT ilegal." Portanto, liberando manualmente NO MEU ROUTER não apenas "Port 21", mas um intervalo de desbloqueio de porta muito mais alto (aqui apenas f.você como exemplo, os números podem ser também um alcance muito maior, como 35000, 40000 ou até mais. .) deixar passar os sinais de entrada / saída através de uma destas portas escolhidas aleatoriamente do software através do firewall interno do roteador , (o meu RasPi está "atrás" deles na minha LAN!), como seguinte (no roteador):

Active  Description  Protocol  Port          an Computer(RasPi)  an Port
(OK)    FTPS-Server  TCP       13450-13500   192.168.178.120     13450-13500

Assim, tanto as portas de entrada como de saída no ROTEADOR agora são do tipo THE THE SAME (high range), como cabos conectando o ROUTER internamente com "conectores de mesmo número" (= portas).

    
por norbert 28.12.2013 / 23:52
0

Passo 1 - Desligue o Firewall do Windows (Restart Must)

Setp 2 - Abra o Filezilla Clent e altere o tipo de criptografia Arquivo - & gt; Gerenciador de sites - & gt; Criptografia - & gt; somente usar FTP simples

    
por Chandu 29.08.2016 / 11:27
0

No meu caso, nosso firewall bloqueou todas as portas FTP passivas, quando tentamos usar FTP usando o modo ativo funcionou. Tínhamos apenas aberto a porta 21 no nosso firewall.

Verifique se esse é o seu caso, altere a configuração do cliente FTP de transfer mode para active e tente conectar-se.

Quando nosso cliente de FTP estava no modo automatic ou passive , ele mudava para passive mode após enviar uma solicitação LIST e isso fazia com que a conexão fosse interrompida.

    
por cjohansson 16.05.2018 / 13:33

Tags