La solucion seguramente es quitar el ftp pasivo.
Intento explicarlo:
El problema viene porque el ftp pasivo abre puertos > 1024 para ir pasando los datos. Depende el firewall que tenga el sitio ftp... (si tienes inspeccion de capa 7) cuando llega a un puerto > 1024 pero conocido (por ejemplo 1521 SQLnet) lo detecta como un ataque (para evitar ataques tipo reverse telnet y tonterias asi) por lo que el ftp va bien hasta que intenta una conexion a uno de esos puertos. Si se usa ftp normal no pasa dado que se establece la conexion por el 21 para la transmision de credenciales y comandos y el 20 en algunos casos para el canal de datos (en otros se sigue usando el 21).
Odio el ftp pasivo, se nota no?
Buenas..
De acuerdo en lo primero salvo en la capa 7 (¿qué tiene que ver la capa de aplicación para filtrados tcp?)... para hacer un reverse <loquesea> primero tienes que ejecutar en el server la app, y si el firewall está bien configurado (estamos hablando de firewalls, es decir, gente que se supone sabe de networking y seguridad) no debe permitir esa conexión hacia el exterior, salvo evidentemente, que tengas la máquina totalmente comprometida y las reglas de filtrado sean manipuladas. Es decir, en el firewall que corre delante del servidor ftp se abren los puertos de entrada para las conexiones pasivas, no de salida,(y para que realmente estén abiertos, se tiene que establecer primero la comunicación, negociar el puerto, y ponerlo en escucha en el server), esto no es inseguro salvo que la propia aplicación tenga un fallo de seguridad y te injecten paquetes, conseguir una shell remota en base a ésto es muy muy jodido. (echa un vistazo a pure-ftpd, para mi gusto, uno de los mejores y más seguros servidores de ftp existentes).
ftp normal (supongo que te refieres en modo activo), es el cliente el que decide qué puerto usar (también por encima del 1024) (y el que lo pone en escucha), no al revés, con lo que si un servidor ftp está detrás de un firewall mal configurado, la conexión en modo pasivo fallará, pero en modo activo no. Pero ésto no es por culpa de que el modo pasivo sea una mierda (todo lo contrario), sino por el firewall mal configurado. Si tienes un firewall en la máquina que lanza el cliente ftp o por delante, tampoco te funcionará el modo activo y tendrás que meter un proxy ftp, o activar la aplicación en el firewall para que éste "escuche" todo lo que hace la aplicación y pueda abrir puertos según se necesiten. Es decir, sin haberlo hecho nunca, lanza desde ms-dos un ftp contra un sitio, y cuando te diga el xp que una aplicación bla bla bla bla, le das a bloquear.. y adiós al FTP en modo activo desde el cliente msdos hasta que no lo habilites de nuevo en el güindous. ;P
Evidentemente, como cualquier entorno cliente-servidor es el server el que debe manejar las conexiones y no el cliente.
Ejemplos:
Modo Activo con firewall en cliente FTP
Last login: Tue Jan 16 21:30:53 on ttyp1
Bienvenido a Darwin!
[ZEUS:~] % ftp -a ftp.freebsd.org
Trying 204.152.184.73...
Connected to ftp.freebsd.org.
220 Welcome to freebsd.isc.org.
bla bla bla bla bla
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pass
Passive mode: off; fallback to active mode: off.
ftp> ls
500 Illegal EPRT command.
200 PORT command successful. Consider using PASV.
421 Service not available, remote server timed out. Connection closed
y ahí me echa porque en mi mac tengo habilitado el firewall que viene con el sistema (creo que era ipfw), y no tengo ningún proxy ftp que me "gestione" las conexiones. (eso con pf+ftp-proxy va de lujo)
Modo pasivo con firewall en cliente FTP:
[ZEUS:~] % ftp -a ftp.freebsd.org
Trying 204.152.184.73...
Connected to ftp.freebsd.org.
220 Welcome to freebsd.isc.org.
bla bla bla bla bla bla
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||37590|)
150 Here comes the directory listing.
drwxrwxr-x 3 0 0 512 Apr 17 2003 pub
226 Directory send OK.
ftp>
Se me ha olvidado poner la otra opción: ;PPPP
Modo Activo con firewall en cliente desactivado
[ZEUS:~] % ftp -a ftp.freebsd.org
Trying 62.243.72.50...
Connected to ftp.freebsd.org.
220 ftp.FreeBSD.org NcFTPd Server (licensed copy) ready.
331 Guest login ok, send your complete e-mail address as password.
230-You are user #598 of 1000 simultaneous users allowed.
230-
230 Logged in anonymously.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pass
Passive mode: off; fallback to active mode: off.
ftp> ls
502 Unimplemented command.
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
drwxr-xr-x 3 ftpuser ftpusers 512 Apr 19 2006 pub
drwxr-xr-x 3 ftpuser ftpusers 512 Mar 24 2006 sup
226 Listing completed.
ftp>
saludos, y perdón por el libro!!!