Cómo configurar vsftpd para trabajar con modo pasivo

49

Cada vez que se instala vsftpden centos, sólo configurar el entorno de cárcel por los usuarios y resto es de configuración por defecto de vsftpd. Creo un usuario e intento conectarme con el filezilacliente ftp, pero no pude conectarme con el modo pasivo. Siempre cambio transfer settingsal modo activo para conectarme con éxito a ftp serverlo que obtengo

 Error: Failed to retrieve directory listing

Entonces, ¿hay alguna manera de cambiar alguna directiva en el vsftp.confarchivo y podemos conectarnos con el modo pasivo al servidor?

Toqeer
fuente

Respuestas:

86

Para configurar el modo pasivo para vsftpd necesita establecer algunos parámetros en vsftpd.conf.

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

Esto habilita el modo pasivo y lo restringe al uso de los once puertos para las conexiones de datos. Esto es útil ya que necesita abrir estos puertos en su firewall.

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

Si después de probar todo esto funciona, guarde el estado de su firewall con

service iptables save

que actualizará el /etc/sysconfig/iptablesarchivo.

Para hacer esto es CentOS 7, debe usar el nuevo firewalld, no iptables:

Encuentra tu zona:

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

Mi zona es 'pública', así que configuro mi zona en pública, agrego el rango de puertos y luego volvemos a cargar:

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload

¿Qué sucede cuando haces una conexión?

  • Su cliente se conecta al servidor vsftpd en el puerto 21.

  • El servidor responde al cliente diciéndole a qué puerto conectarse desde el rango especificado anteriormente.

  • El cliente realiza una conexión de datos en el puerto especificado y la sesión continúa.

Aquí hay una gran explicación de los diferentes modos ftp .

user9517 es compatible con GoFundMonica
fuente
Me pregunto por qué pones el maxpuerto después del min... pero lo más importante, si abres los puertos 10090 a 10100, son 11 puertos y no 10 como dices.
Alexis Wilke
Creo que es alfabético, realmente no importa, ya que son directivas separadas.
user9517 es compatible con GoFundMonica el
3
Esto no está funcionando para mí sin pasv_address.
fbmd
me llevó mucho tiempo encontrar esto, ninguna de las guías de vsftpd enumera esto ... brillante
Pete
Maravilloso: esta configuración vsftp resolvió todos mis problemas de firewall FTP :)
BurninLeo
24

Para habilitar el modo pasivo, configure las siguientes opciones de configuración en su vsftp.conf:

pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx

Por supuesto, puede cambiar el puerto de inicio y finalización, y debe reemplazar los xxx con la IP pública de su servidor.

Además, debe abrir el rango de puertos en modo pasivo en su firewall. En centos, puede cargar el ip_conntrack_ftpmódulo para manejar conexiones ftp en su firewall. Edite /etc/sysconfig/iptables-configy agregue ip_conntrack_ftp a la opción IPTABLES_MODULES. Luego reinicie iptables:

/sbin/service iptables restart
brain99
fuente
3
pasv_addresses lo que funciona cuando todo lo demás se ha configurado y todavía no funciona.
fbmd
1
@fbmd antes de probar pasv_address, también se debe verificar si tanto pasv_max como min_port están en el orden correcto. Me sucedió que tenía el valor máximo configurado en pasv_min_port, y vsftpd simplemente ignora esto. Es una falla / error silencioso conocido que visualmente te hace pensar que los puertos pasv están configurados correctamente, pero no lo están. Esto me sucedió y resolvió mi problema.
Pedro Sousa
Si desea especificar una dirección DNS pasv_address, debe agregar pasv_addr_resolve=YES(por defecto NO)
Pierre-Damien
6

Además de pasv_enable=YES, especifique un rango de puertos en el que VSFTP ejecutará el modo PASV:

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

No olvide configurar iptables que permite la transmisión de paquetes en estos puertos:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
quanta
fuente
En un sistema CentOS estándar, hay un DROP general que hace iptables -A INPUT ... que se ignoren las reglas agregadas
user9517 admite GoFundMonica el
Asegúrese de incluir pasv_addressen el archivo vsftpd.conf.
Pedro Madrid
3

Por lo general, no es el servidor ftp, vsftpd, sino el firewall como iptable lo que evita que se use el modo pasivo (bloqueando la conexión tcp necesaria para la transferencia de datos).


fuente
En realidad, vsftpd podría ser lo suficientemente inteligente como para abrir un puerto en el firewall ... pero por las respuestas que veo aquí, no parece que sea capaz de tal hazaña.
Alexis Wilke
3
@Alexsis. No tiene sentido un firewall si las aplicaciones simplemente ignoran las reglas y abren puertos de todos modos.
ekerner