Entiendo que FTP sobre SSL (ftps) es que no funciona bien con firewalls y NAT. En una sesión FTP ordinaria, el cortafuegos lee la información sobre las conexiones de datos y el NAT modifica el NAT para que el cortafuegos abra dinámicamente los puertos necesarios. Si esa información está protegida por SSL, el firewall no puede leerla ni cambiarla.
El uso de SFTP, o scp, facilita mucho el trabajo del administrador de la red: todo sucede en el puerto 22 del servidor y la transacción sigue el modelo normal de cliente / servidor.
Una cosa que no se menciona es si su firewall está realizando NAT o no y si es NAT estático o NAT dinámico. Si su máquina cliente tiene una dirección estática o está estáticamente conectada a NAT, es posible que no necesite realizar ningún cambio en el firewall, suponiendo que permita todo el tráfico saliente y que el servidor funcione solo en modo Pasivo (PASV).
Para saber exactamente qué puertos necesitará abrir, deberá:
a) hable con el proveedor para obtener detalles sobre cómo se ha configurado su sistema.
b) Use un analizador de protocolos, como tcpdump o wireshark, para observar el tráfico, tanto desde fuera de su firewall como dentro de su firewall
Debe averiguar qué puerto es la conexión de control. Usted enumera 3, lo que me parece extraño. Suponiendo que el servidor solo funciona en modo PASV (pasivo), debe averiguar cómo está configurado el servidor para los puertos DATA asignados. ¿Han bloqueado el canal DATA en un solo puerto entrante? ¿Han bloqueado el canal de DATOS a un rango o puertos pequeños?
Con estas respuestas, puede comenzar a configurar su firewall.
Creo que los puertos alrededor del 990 eran para SSL implícito, que era una forma antigua y no estándar de hacer FTP / SSL. La forma "correcta" en estos días es SSL explícito, lo que significa que aún se conecta en el puerto 21 y luego negocia SSL antes de enviar sus regalos. Para admitir conexiones a través de un firewall, debe usar el modo PASV y configurar los puertos de datos que se utilizarán.
Creo que necesita al menos un puerto por conexión de datos que desee admitir. Si solo eres tú, probablemente estés bien solo abriendo algunos puertos adicionales. Específicamente para mí, uso 21000-21010.
En vsftpd.conf, tengo estas dos líneas (junto con todas las otras cosas para admitir SSL):
En mi firewall, tengo una IP estática pública con NAT uno a uno / estática a la IP interna y solo los puertos tcp 21, 21000-21010 abiertos.
fuente
Sé que este es un hilo extremadamente antiguo, sin embargo ...
Tenga en cuenta que SFTP es completamente diferente de FTPS. (SSH vs SSL)
FTPS trabaja de 2 maneras. Explícito e implícito. Explícito es menos seguro porque después del protocolo de enlace inicial omite el cifrado durante las transferencias de datos [si se mantiene el cifrado de datos es configurable en el lado del servidor con PROT P], mientras que el Implicto mantiene el cifrado de los datos después del protocolo de enlace también. El puerto FTPS explícito predeterminado es 21. El puerto implícito predeterminado es 990 (después del protocolo de enlace, cambiará automáticamente a 989 para la transmisión de datos, si no se configura de manera diferente). Si bien el puerto 21 generalmente se acepta como FTPS EXPLÍCITO y el 990 como FTPS IMPLÍCITO, en realidad cualquier puerto que configure, excepto el 990/989, conducirá a FTPS EXPLÍCITO, mientras que SOLO 990/989 se aceptará como FTPS IMPLÍCITO.
Entonces, para responder a su pregunta: - dependiendo de la configuración del servidor FTPS, deberá abrir el puerto 21 o 990/989. Sin embargo, solo para estar seguro, debe comunicarse con el administrador del servidor FTPS y solicitar instrucciones. Además, tenga en cuenta que para el modo pasivo, como con cualquier otro software FTP, tendrá que abrir puertos adicionales (TCP / UDP), generalmente algo del rango 64000-65000.
fuente
Básicamente, ftps es casi inútil, ya que debe realizar solicitudes embarazosas a los administradores de firewall. El consejo para restringir los puertos a 10 es bueno. Mucho más, se vuelve patético.
sftp es mucho mejor en teoría. Pero necesita un servidor sftp viable, por ejemplo, uno que restrinja a los clientes a su propio directorio personal.
Dependiendo de la aplicación, considere HTTPS. La carga de un archivo es realmente simple, y una descarga obviamente también lo es. Si de todos modos está creando una secuencia de comandos de FTP, probablemente será más fácil crear una secuencia de comandos para cargar un archivo HTTPS.
El FTP automatizado es un signo de un problema de diseño. Me di cuenta de esto cuando traté con un total de aproximadamente una docena de vendedores que 'requirieron' un lugar donde trabajé para hacer FTP automatizado (para cosas MUY importantes), y al hacer que docenas de clientes lo hicieran con esa misma tienda (una falla de diseño por aproximadamente 20 usos distintos que presencié). Fue fácil convencer a la mayoría de los usuarios de aplicaciones para que usen HTTPS (por lo general, con la mención, dijeron "espera, ¿no hay ninguna razón por la que no solo hagamos que lo obtengan con HTTPS desde el servidor web en el que ya les estamos sirviendo datos?" ), excepto algunos que dieron respuestas como "bueno, ya tenemos estos scripts que parecen funcionar, y nadie en nuestro equipo es realmente bueno con los scripts, por lo que no podemos hacer ningún cambio" (un equipo de 5-10 programadores,
fuente
El proveedor puede configurar un rango de puertos estrecho para los puertos de conexión DATA, si aún no lo han hecho. Luego puede abrir el mismo rango en su extremo, para los hosts que necesitan dicho acceso. Se debe usar el modo PASV.
fuente
El puerto 22 es estándar ya que el demonio SSH en UNIX tiene un módulo SFTP que puede habilitar básicamente para hacer un servidor SFTP explícito. Si desea ejecutar un servidor FTP implícito con Filezilla, puede ejecutarlo en cualquier puerto que desee, pero hay un problema: si usa el cliente FileZilla, debe especificar la URL del sitio ftp como ftps: //mysite.com: 8086 en lugar de poner el puerto en el campo de puerto separado que proporciona el cliente FileZilla.
Para la opción explícita, solo necesita UN puerto: 22. Para la opción implícita, solo necesita tener el firewall abierto para el puerto de control: 8086 (que reenvía internamente al puerto 21 en su servidor filezilla).
fuente
si ftps es lo mismo que sftp , entonces solo necesita poder acceder al puerto 22 en el sitio del proveedor.
Por su parte, debe configurar su firewall para permitir el tráfico saliente del puerto 22 y entrante relacionado . Esto permitirá la comunicación en cualquier puerto entrante que esté relacionado con la conexión saliente inicial en el puerto 22.
fuente