Este es el documento al que remito a las personas para que puedan seguir el protocolo FTP:http://slacksite.com/other/ftp.html
- Para hacer FTP en modo activo, debe permitir conexiones entrantes al puerto TCP 21 y conexiones salientes desde el puerto 20.
- Para hacer FTP en modo pasivo, debe permitir las conexiones entrantes al puerto TCP 21 y las conexiones entrantes a un puerto generado aleatoriamente en la computadora del servidor (lo que requiere el uso de un módulo conntrack en netfilter)
No tiene nada relacionado con su cadena de SALIDA en su publicación, así que también lo incluiré aquí. Si su cadena de SALIDA es predeterminada, esto es importante.
Agregue estas reglas a su configuración de iptables:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
Entonces, para admitir FTP en modo pasivo, debe cargar el módulo ip_conntrack_ftp en el arranque. Descomente y modifique la línea IPTABLES_MODULES en el archivo /etc/sysconfig/iptables-config para que diga:
IPTABLES_MODULES="ip_conntrack_ftp"
Guarde la configuración de iptables y reinicie iptables.
service iptables save
service iptables restart
Para descartar por completo que VSFTPD sea un problema, detenga VSFTPD, verifique que no esté escuchando en el puerto 21 con "netstat -a" y luego ejecute:
nc -l 21
Esto comenzará a escuchar netcat en el puerto 21 y hará eco de la entrada a su shell. Desde otro host, TELNET al puerto 21 de su servidor y verifique que obtenga una conexión TCP y que vea el resultado en el shell cuando escriba la conexión TELNET.
Finalmente, vuelva a activar VSFTPD, verifique que esté escuchando en el puerto 21 e intente conectarse nuevamente. Si la conexión a netcat funcionó, las reglas de iptables están bien. Si la conexión a VSFTPD no funciona después de que netcat lo haga, entonces algo anda mal con su configuración de VSFTPD.