No modo Passivo, quando o cliente deseja obter um arquivo do servidor ou enviar um arquivo para o servidor, o servidor FTP selecionará uma porta aleatória e a enviará para o cliente FTP.
Quando você não estiver usando criptografia, um firewall configurado adequadamente (usando o módulo do kernel ip_conntrack_ftp
helper, que pode ser o que está faltando para conexões não-TLS) "escutará" a conexão e marcará esses dados. conexões como RELATED
. Com a criptografia, o firewall não pode ouvir.
A solução rápida e suja para isso é configurar o servidor FTP para escolher um pequeno intervalo de portas para conexões passivas e, em seguida, permitir o acesso a todas essas portas. Por exemplo, em vsftpd
:
pasv_min_port=12000
pasv_max_port=12049
Em seguida, no iptables:
iptables -A INPUT -p tcp -m tcp -i eth0 --dport 12000:12049 -j ACCEPT
Permitir que qualquer pessoa acesse essas portas abre uma possível exploração: se alguém as examinasse várias vezes, elas poderiam ter sorte e conseguir "bater" o usuário real na porta de dados e pegar o arquivo. Idealmente, seu servidor de FTP verificaria se a conexão está vindo do mesmo lugar da conexão original, mas graças a coisas como "FXP" (transferência de arquivos de um servidor para outro, convencendo-se a estabelecer uma conexão ativa com o outro). porta de dados passiva) alguns servidores não verificam a conexão por padrão. Você deve verificar seu arquivo de configuração e ver se há uma opção para desabilitar o FXP e usá-lo. (vsftpd chama isso de "promíscuo" e está desativado por padrão).