Daboweb

(Servidores Web) Conexiones pasivas en Pure FTPd y cómo permitirlas por el firewall

Publicado por Dabo on marzo 16, 2009
Webmaster

En algunas ocasiones, habréis visto como vía iptables o usando un firewall tipo Shorewall, APF, o los que vienen con un CPanel, Plesk etc, el acceso a los hosts virtuales en Apache a través de vuestro cliente FTP, se ve afectado con continuas caídas o simplemente, al intentar conectar da un “timeout”.

Una de las ventajas de Pure FTPd (entre muchas otras) es que nos permite definir a través de que rango de puertos se tramitaran las conexiones pasivas (de ese modo se conectan la mayoría de los clientes FTP). Como sabéis, el servidor FTP puede estar “escuchando” un puerto y a la espera de recibir conexiones (por ej el 21) y luego, deriva las transferencias hacia otros puertos.

Este hecho, en otros servidores FTP puede provocar muchos dolores de cabeza al administrador del sistema, ya que es muy complicado saber a priori a través de que puertos se realizarán las transferencias de datos y por lo tanto, a la hora de establecer las políticas de acceso al servidor web en el firewall este hecho se revela como un problema.

Por suerte, en Pure FTPd, se pueden definir estos puertos de un modo sencillo para luego incluirlos en vuestro firewall. Dentro de /etc/pure-ftpd/conf, tenéis que crear un fichero con el nombre PassivePortRange (como está, con mayúsculas y minúsculas) caso de que no esté creado.

Abrís vuestro editor de texto favorito para crearlo, en este caso vim;

vim PassivePortRange

y una vez dentro, tendréis que incluir el rango de puerto deseado del modo siguiente;

27750 28000

En este caso he incluido ese rango de puertos pero pueden ser otros (cuidado de que no estén usándose por otro servicio), podéis dar un vistazo a los puertos más comunes y su función o servicio.

Después y una vez definido ese rango de puertos en vuestro firewall, sólo tendréis que reiniciar el PureFTPd para que los cambios se hagan efectivos del siguiente modo;

/etc/init.d/pure-ftpd restart o /etc/init.d/pure-ftpd-ldap restart si está ejecutándose bajo ldap.

Os tendrá que aparecer algo similar a esto;

Restarting ftp server: Running: /usr/sbin/pure-ftpd-ldap-virtualchroot -l ldap:/etc/pure-ftpd/db/ldap.conf (omito algunas opciones) -p 27750:28000 -B

Ese -p 27750:28000 indicará que las transferencias en modo pasivo se harán entre esos puertos (-p passiveportrange) y si esos puertos están bien indicados en el firewall os podréis conectar vía FTP sin problemas.

(Update 5/12/2012)

Buen apunte del amigo Rastreador (vía Twitter) un tip para Amazon:

Añadiría que si ip serv. <> ip publica hay q utilizar pasv_address=ip_publica . En AWS imprescindible

Por David Hernández (Dabo).

¿Quieres comentar algo sobre este post? Puedes hacerlo en nuestro foro de noticias

Tags: , , , , , , , ,

¿Quieres comentar algo sobre este post? Puedes hacerlo en nuestro foro de noticias.

Puedes seguir nuestras actualizaciones vía RSS, en Facebook y también desde Twitter.