Pure-Ftpd-Mysql: Não é possível conectar-se com FTP passivo

1

Parece que tenho um problema de configuração e preciso de ajuda.

Eu tenho um servidor web, sob o Debian Jessie, com o pure-ftpd-mysql instalado (e atualizado).

Eu posso conectar ao servidor via FTP quando está no modo ativo, mas quando eu peço para passar no modo passivo, eu tenho um tempo limite de operação:

ftp ftp.***.com
Connected to ftp.***.com.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 12:31. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (ftp.***.com:tilotiti): 
331 User tilotiti OK. Password required
Password: 
230 OK. Current restricted directory is /
ftp> ls
200 PORT command successful
150 Connecting to port 50405
drwxr-xr-x    2 2001       ftp              4096 Dec 21 11:12 test1
drwxrwxrwx    2 2001       ftp              4096 Apr 28  2017 test2
226-Options: -l 
226 2 matches total
ftp> passive
Passive mode on.
ftp> ls
227 Entering Passive Mode (10,3,98,75,127,233)
ftp: connect: Operation timed out
ftp> 

Estou hospedado no escaleway e verifiquei que não havia nenhuma regra configurada como firewall de rede.

Eu tentei configurar algumas portas de intervalo passivas, criando o arquivo / etc / pure-ftpd / conf / PassivePortRange:

30000 50000

Verifiquei se o firewall do meu servidor não estava bloqueando a conexão:

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

E reiniciei o servidor para ter certeza de que a nova configuração foi feita.

Mas isso não funciona, estou totalmente perdido agora. Eu preciso dessa conexão passiva.

Alguém pode me ajudar por favor?

Muito obrigado.

    
por Thibault Henry 11.01.2018 / 12:59

1 resposta

1

227 Entering Passive Mode (10,3,98,75,127,233)

Significa que o servidor está aguardando uma conexão de entrada para a porta 32745 de 10.3.98.75. É claro que isso ocorre porque o servidor é NAT e (o servidor ftp) não sabe disso.

Você ainda precisa fazer duas (de três) coisas:

  • define o servidor FTP para "publicar" o IP público conhecido em vez de seu IP privado. É assim que é feito a partir da documentação do pure-ftpd :

    - '-P <ip address or host name>': Force the specified IP address in reply to a PASV/EPSV/SPSV command. If the server is behind a masquerading (NAT) box that doesn't properly handle stateful FTP masquerading, put the ip address of that box here. If you have a dynamic IP addBindress, you can put the public host name of your gateway, that will be resolved every time a new client will connect.

A configuração do wrapper Debian (?) para ela parece ser ForcePassiveIP <ip address or host name>

  • configure para usar apenas um intervalo específico de portas (já feito, você escolheu 30000: 50000). Um intervalo que não se sobreponha ao intervalo de portas dinâmicas, como visto em /proc/sys/net/ipv4/ip_local_port_range , deve ser escolhido para maior segurança.
  • Altere as configurações de firewall / nat do Scaleway para permitir o encaminhamento de portas para o intervalo de portas TCP na etapa anterior (é aí que a segurança que mencionei acima poderia importar). Desculpe eu não sei onde encontrar a documentação específica sobre isso. Eu nem entendi que tipo de configurações de rede estão disponíveis no Scaleway. Se o host tiver realmente dois IPs, um deles 10.3.98.75, o outro público, então, em vez de usar ForcePassiveIP , a opção Bind (= > -S ) seria suficiente.
por 13.01.2018 / 21:25