Como configurar o vsftpd para trabalhar com o modo passivo

46

Sempre que eu instalo o vsftpd no centos, eu apenas configuro o ambiente de jail para os usuários e o resto é a configuração padrão do vsftpd. Eu crio usuário e tento conectar com o cliente ftp filezila mas não consegui conectar com o modo passivo. Eu sempre mudo as "configurações de transferência" para o modo ativo para se conectar com sucesso ao servidor ftp caso contrário eu recebo

 Error: Failed to retrieve directory listing

Então existe uma maneira de alterar qualquer diretiva no arquivo vsftp.conf e podemos nos conectar com o modo passivo ao servidor?

Atualização: Obrigado a todos que estão trabalhando bem com as respostas dadas.

    
por Toqeer 25.08.2012 / 18:22

4 respostas

82

Para configurar o modo passivo para o vsftpd, você precisa definir alguns parâmetros no vsftpd.conf.

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

Isso habilita o modo passivo e o restringe a usar as onze portas para conexões de dados. Isso é útil porque você precisa abrir essas portas no seu firewall.

iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT

Se depois de testar tudo isso, salve o estado do seu firewall com

service iptables save

que atualizará o arquivo /etc/sysconfig/iptables .

Para fazer isso é o CentOS 7 você tem que usar o novo firewalld, não o iptables:

Encontre sua zona:

# firewall-cmd --get-active-zones
public
  interfaces: eth0

Minha zona é "pública", por isso, defino minha zona como pública, adiciono o intervalo de portas e, depois disso, recarregamos:

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload

O que acontece quando você faz uma conexão

  • Seu cliente faz uma conexão com o servidor vsftpd na porta 21.

  • O servidor responde ao cliente informando a qual porta conectar-se a partir do intervalo especificado acima.

  • O cliente faz uma conexão de dados na porta especificada e a sessão continua.

Há uma ótima explicação sobre os diferentes modos de ftp aqui

    
por 25.08.2012 / 18:48
23

Para ativar o modo passivo, defina as seguintes opções de configuração no seu vsftp.conf:

pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx

É claro que você pode alterar as portas inicial e final e substituir as xxxs pelo IP público do seu servidor.

Além disso, você deve abrir o intervalo de portas do modo passivo no seu firewall. No centos, você pode carregar o módulo ip_conntrack_ftp para lidar com conexões FTP no seu firewall. Edite /etc/sysconfig/iptables-config e adicione ip_conntrack_ftp à opção IPTABLES_MODULES. Depois reinicie o iptables:

/sbin/service iptables restart
    
por 25.08.2012 / 18:47
4

Além do pasv_enable=YES , especifique um intervalo de portas no qual o VSFTP executará o modo PASV:

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

Não esqueça de configurar o iptables para permitir a transmissão de pacotes nestas portas:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
    
por 25.08.2012 / 18:47
2

Normalmente, não é o ftp server, vsftpd, mas o firewall como o iptable, que impede que o modo passivo seja usado (bloqueando a conexão tcp necessária para a transferência de dados).

    
por 25.08.2012 / 18:40