Sempre que instalo vsftpd
no centos
, configuro apenas 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 filezila
cliente ftp, mas não consegui conectar com modo passivo. Eu sempre mudo o transfer settings
modo ativo para conectar com sucesso ao ftp server
caso contrário, recebo
Error: Failed to retrieve directory listing
Então, existe uma maneira de alterar qualquer diretiva no vsftp.conf
arquivo e podemos nos conectar com o modo passivo ao servidor?
Para configurar o modo passivo para o vsftpd você precisa definir alguns parâmetros no vsftpd.conf.
Isso habilita o modo passivo e o restringe ao uso das onze portas para conexões de dados. Isso é útil porque você precisa abrir essas portas em seu firewall.
Se depois de testar tudo isso funcionar, salve o estado do seu firewall com
que irá atualizar o
/etc/sysconfig/iptables
arquivo.Para fazer isso no CentOS 7 você tem que usar o novo firewalld, não o iptables:
Encontre sua zona:
Minha zona é 'pública', então defino minha zona como pública, adiciono o intervalo de portas e depois recarregamos:
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.
Para habilitar o modo passivo, defina as seguintes opções de configuração em seu vsftp.conf:
É 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 em seu firewall. No centos, você pode carregar o
ip_conntrack_ftp
módulo para lidar com conexões ftp em seu firewall. Edite/etc/sysconfig/iptables-config
e adicione ip_conntrack_ftp à opção IPTABLES_MODULES. Depois reinicie o iptables:Ao lado do
pasv_enable=YES
, especifique um intervalo de portas no qual o VSFTP executará o modo PASV:Não esqueça de configurar o iptables permite a transmissão de pacotes nestas portas:
Normalmente, não é o servidor ftp, vsftpd, mas o firewall como o iptable que impede que o modo passivo seja usado (bloqueando a conexão tcp necessária para transferência de dados).
Eu tive que fazer as seguintes etapas para que o modo passivo vsftp funcionasse no CentOS 8:
Habilite o modo passivo na configuração do vsftpd
/etc/vsftpd/vsftpd.config
:Habilite o serviço ftp no firewalld:
Como mencionado em outro post você tem que carregar o módulo do kernel "nf_conntrack_ftp" (que já era o caso no CentOS 8) e habilitar "nf_conntrack_helper" nas configurações do kernel :
Adicione esta linha a
/etc/sysctl.conf
(ou/etc/sysctl.d/10-nf_conntrack_helper.conf
quando/etc/sysctl.d/
estiver presente) para uma configuração persistente de reinicialização:Com a trilha de conexão habilitada não há necessidade de configurar adicionalmente as portas passivas no firewall local.