Instalei o Pure-FTPd em uma máquina Debian 10 que roda iptables
com a política padrão DROP
para a INPUT
cadeia. A OUTPUT
cadeia é definida como ACCEPT
.
Problema: se tento conectar um cliente FTP, só funciona às vezes . Parece ser capaz de listar pastas aleatoriamente ou falhar. Normalmente, tentar novamente uma nova conexão funcionará.
Meu Pure-FTPd está configurado com estas portas :
$ cat /etc/pure-ftpd/conf/Bind
85.xxx.xxx.xxx,57419
$ cat /etc/pure-ftpd/pure-ftpd.conf | grep Port
# Port range for passive connections - keep it as broad as possible.
PassivePortRange 30000 50000
Para abrir as portas no firewall eu usei:
iptables -A INPUT -p tcp --dport 57419 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:50000 -j ACCEPT
Logs no servidor:
pure-ftpd]: ([email protected]) [INFO] New connection from 176.x.x.x
pure-ftpd]: ([email protected]) [INFO] TLS: Enabled TLSv1.2 with ECDHE-RSA-AES256-GCM-SHA384, 256 secret bits cipher
pure-ftpd]: ([email protected]) [INFO] testuser is now logged in
// no more output until the client retries a new connection
Agora o cliente FTP dirá que está listando por um tempo e depois:
Agora, se eu definir a cadeia iptables para tudo funcionar bemINPUT
ACCEPT
, então parece que ainda há alguma porta bloqueada que o Pure-FTPd tenta usar aleatoriamente, como posso depurar isso / corrigi-lo?
Obrigada.
Eu consegui rastrear isso para um problema de configuração.
Aparentemente, definir as portas em
/etc/pure-ftpd/pure-ftpd.conf
não é suficiente. Com uma análise mais aprofundadass -nap | grep pure
descobri que o pure estava tentando usar portas fora dos intervalos permitidos no firewall.Para corrigir isso, basta criar um arquivo em
/etc/pure-ftpd/conf/PassivePortRange
e também definir o intervalo de portas lá.