Como configurar o vsftpd para funcionar com o modo passivo

49

Sempre que eu instalar vsftpdem centos, eu só configurar o ambiente de prisão para os usuários e resto é configuração padrão vsftpd. Crio o usuário e tento conectar-me ao filezilacliente ftp, mas não consigo conectar-me ao modo passivo. Eu sempre mudo transfer settingspara o modo ativo para conectar-me com êxito ao ftp servercontrário.

 Error: Failed to retrieve directory listing

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

Toqeer
fonte

Respostas:

86

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 ativa o modo passivo e restringe o uso das onze portas para conexões de dados. Isso é útil, pois você precisa abrir essas portas no seu firewall.

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

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

service iptables save

que atualizará o /etc/sysconfig/iptablesarquivo.

Para fazer isso no CentOS 7, você precisa usar o novo firewalld, não o iptables:

Encontre sua zona:

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

Minha zona é 'pública', então eu defino minha zona como pública, adiciono o intervalo de portas e depois 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 se conectar 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 dos diferentes modos de FTP aqui.

user9517 suporta GoFundMonica
fonte
Querendo saber por que você coloca a maxporta após o min... mas mais importante, se você abrir as portas 10090 a 10100, isso significa 11 portas e não 10 como você diz.
Alexis Wilke #
Eu acredito que é alfabético, realmente não importa, pois são diretivas separadas.
user9517 suporta GoFundMonica
3
Isso não está funcionando para mim sem pasv_address.
Fbmd
me levou as idades para encontrar este, nenhum dos guias vsftpd listar este ... brilhante
Pete
Maravilhoso - esta configuração Vsftp resolvido todos os meus problemas de FTP-firewall :)
BurninLeo
24

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 a porta inicial e final e deve substituir os xxx 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 ip_conntrack_ftpmódulo para manipular conexões ftp no seu firewall. Edite /etc/sysconfig/iptables-confige adicione ip_conntrack_ftp à opção IPTABLES_MODULES. Depois reinicie o iptables:

/sbin/service iptables restart
brain99
fonte
3
pasv_addressé o que faz o truque quando todo o resto foi configurado e ainda não funciona.
Fbmd
1
@fbmd antes de tentar pasv_address, deve-se verificar também se pasv_max e min_port estão na ordem correta. Ocorreu-me que eu tinha o valor máximo configurado no pasv_min_port e o vsftpd simplesmente ignora isso. É uma falha / bug silencioso conhecido que, visualmente, faz você pensar que as portas pasv estão corretamente configuradas, mas não estão. Isso aconteceu comigo e resolveu meu problema.
Pedro Sousa
Se você deseja especificar um endereço DNS pasv_address, deve adicionar pasv_addr_resolve=YES(o padrão é NO)
Pierre-Damien
6

Ao lado de 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 se esqueça de configurar o iptables permite a transmissão de pacotes nestas portas:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
quanta
fonte
Em um sistema CentOS padrão há uma queda cobertor que as regras causas adicionados com iptables -A INPUT ... a ser ignorado
user9517 suporta GoFundMonica
Certifique-se de incluir pasv_addressno arquivo vsftpd.conf.
Pedro Madrid
3

Geralmente, não é o servidor ftp, vsftpd, mas o firewall como iptable que impede o uso do modo passivo (bloqueando a conexão tcp necessária para a transferência de dados).


fonte
Na verdade, o vsftpd pode ser inteligente o suficiente para abrir uma porta no firewall ... mas pelas respostas que vejo aqui, parece que ele não é capaz de tal feito.
Alexis Wilke #
3
@Alexsis. Não há sentido em um firewall se os aplicativos simplesmente ignorarem as regras e abrirem as portas de qualquer maneira.
ekerner