Questão do modo passivo com vsftpd no Ubuntu (EC2)

3

Eu segui todos os guias, mas não consigo fazer login via ftp.

...
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
200 Switching to Binary mode.
local: 21 remote: 21
229 Entering Extended Passive Mode (|||12028|)
550 Failed to open file.
221 Goodbye.

ainda tinha no iptables:

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:12000:12100

Eu tenho a porta min e max definida em vsftpd.conf to 12000-12100 e as mesmas portas ativadas no console da AWS.

    
por 3br4him 24.08.2016 / 09:38

3 respostas

3

No seu caso específico, vejo que você tem um erro 550, o que me faz pensar que há um problema de permissão de arquivo.

Em geral, a causa mais comum para o modo PASV falhar quando o vsftpd está sendo executado no EC2 é que o vsftpd está instruindo o cliente a se conectar ao endereço IP privado do a instância do EC2 e o cliente não podem se conectar a ela, por razões óbvias.

Uma possível solução é atribuir um endereço Elastic IP a essa instância e, em seguida, informar ao vsftpd que se comunique com esse endereço IP público (por exemplo, 1.2.3.4) adicionando a seguinte linha ao vsftpd.conf:

pasv_address=1.2.3.4

Vamos dar um passo atrás e ver como funciona o modo PASV:

  • O cliente abre um canal de comando conectando-se à porta 21 no IP público da instância do EC2, que é mapeada para o IP privado da instância pela própria AWS.
  • O cliente envia um comando PASV para a instância do EC2 no canal aberto
  • O vsftpd sabe que está escutando no endereço IP privado da instância do EC2 (o IP público da instância é gerenciado pela AWS e não é visível na instância) e envia uma resposta ao cliente que contém o endereço IP privado da instância e uma porta aleatória entre 12000 e 12100
  • O cliente tenta se conectar ao IP e à porta fornecidos pelo vsftpd e falha

Com pasv_address , você força o vsftpd a retornar o endereço IP especificado quando um comando PASV é recebido, em vez de tentar adivinhar o endereço IP.

    
por 19.04.2018 / 00:09
1

como @Luca Gibelli disse, é principalmente um problema de permissão de arquivo.

Poderia ser melhor se você postar a lista de arquivos e verificar as permissões.

Mas eu responderia a essa pergunta para fornecer um pequeno detalhe sobre o uso de pasv_address no EC2

Se você estiver usando o Elastic IP

pasv_address={your public IP address}

caso contrário, talvez seja melhor usar

pasv_addr_resolve={your public domain or DNS}

dê uma olhada aqui: link

    
por 20.04.2018 / 07:46
0

Alguns roteadores bloqueiam o ftp regular pela porta padrão. Mudar para uma porta não padrão resolveu isso para mim.

    
por 17.04.2018 / 15:30