Comprensión de SFTP frente a FTPS frente a FTP
Publicado: 2022-08-18FTP o File Transfer Protocol es uno de los métodos de transferencia de datos más populares disponibles para varios casos de uso.
FTP tiene diferentes variaciones seguras disponibles, conocidas como FTPS y SFTP, que incorporan algunas diferencias sutiles y no tan sutiles en su funcionamiento. Estas diferencias se relacionan con la forma en que se intercambian los datos, el nivel y el tipo de seguridad en la comunicación y las consideraciones del firewall.
Saber cómo funcionan estos protocolos y las diferencias entre estos populares mecanismos de transferencia puede ayudarlo a elegir cuál funciona mejor para sus necesidades.
FTP
FTP es el protocolo de transferencia de archivos de décadas de antigüedad propuesto originalmente en RFC 114. Más tarde evolucionó como RFC 959, que es el estándar en uso en la actualidad.

FTP funciona en dos canales para intercambiar información: uno para comandos y otro para datos. Esto requiere dos puertos para que FTP funcione: el canal de comando y el canal de datos.
El canal de comando funciona en el puerto 21, que acepta conexiones de clientes y maneja el paso de comandos. El canal de comando permanece abierto durante toda la duración de la sesión FTP hasta que el cliente envía el comando QUIT
o el servidor se desconecta a la fuerza debido a la inactividad o cualquier otra razón posible.
El canal de datos utiliza un puerto temporal bajo demanda que escucha en el servidor (modo pasivo) o en el cliente (modo activo). Este canal es responsable de compartir datos reales entre el servidor y el cliente en forma de listas de directorios y transferencias de archivos.
A diferencia del canal de comando, el canal de datos permanece abierto solo durante la transferencia de archivos y, tan pronto como finaliza, el canal de datos se cierra. Para la transferencia simultánea de múltiples archivos o listados de directorios, se requieren múltiples puertos de canales de datos.

FTP es un protocolo intrínsecamente inseguro, ya que tanto los canales de comando como los de datos transfieren información sin cifrar, lo que es fácilmente susceptible de ser interceptado por cualquiera que use ataques de intermediario.
Como se discutió anteriormente, FTP requiere una conexión entrante en el puerto 21/tcp
en el lado del servidor para el canal de comando. Se define un rango de puertos pasivos para transferencias de archivos y listados de directorios y permite conexiones entrantes. Este proceso de definición puede variar según el servidor FTP en uso. Consulte su documentación para obtener más detalles. En el lado del cliente, se debe permitir la conexión saliente en el puerto 21/tcp
junto con el rango de puertos pasivos definido en el servidor.
Autenticación en FTP
La información de autenticación de FTP se pasa por el canal de comando durante el establecimiento de la conexión inicial. FTP puede usar un nombre de usuario y una contraseña para la autenticación, o puede ser anónimo para permitir que cualquier persona inicie sesión y acceda al servidor.
Modos FTP activo y pasivo
FTP utiliza el modo Activo o Pasivo para establecer conexiones.
En modo activo , un usuario se conecta desde un puerto aleatorio en el cliente FTP al puerto FTP 21/tcp
en el servidor y envía el comando PORT, especificando el puerto del cliente al que se debe conectar el servidor. Este puerto se utilizará para el canal de datos.
Luego, el servidor se conecta desde el puerto 20/tcp
al puerto del cliente especificado anteriormente con el comando PORT
por parte del cliente. Este canal de datos se usa luego para transferencias de archivos entre el servidor y el cliente.
En modo pasivo , el cliente se conecta desde un puerto aleatorio del cliente FTP al puerto 21/tcp en el servidor y envía el comando PASV. Luego, el servidor responde con un puerto aleatorio que debe usarse para el canal de datos. Luego, el cliente usa otro puerto aleatorio para conectarse al puerto respondido por un servidor en el paso anterior. Esta conexión de canal de datos se usa luego para la transferencia de archivos entre el servidor y el cliente.
Entonces, en el modo activo, el cliente inicia la solicitud de conexión inicial, mientras que el servidor inicia la solicitud de conexión del canal de datos.
Por otro lado, en el modo pasivo, tanto las solicitudes de conexión iniciales como las posteriores solicitudes de canales de datos son iniciadas por el cliente al servidor. Esta sutil diferencia a veces afecta la forma en que un firewall permite/bloquea las solicitudes FTP tradicionales debido a la dirección del tipo de conexión entrante/saliente.

FTPS
Incluso si está dispuesto a asumir los riesgos asociados que conlleva FTP con transmisión de datos sin cifrar y ataques main-in-the-middle, los requisitos de la industria lo obligan a utilizar una alternativa más segura como FTPS y SFTP, que son comparativamente mucho más seguras.
En 1990, con el cambiante panorama de la seguridad, Netscape creó el protocolo SSL o Secure Sockets Layer (SSL, ahora conocido como TLS) para proteger la comunicación a través de una red. SSL se aplicó a FTP que se convirtió en FTPS o File Transfer Protocol Secure . FTPS o FTP/S normalmente se ejecuta en el puerto 990/tcp
, pero también se puede ver en el puerto 21/tcp. De manera similar, para el canal de datos, el puerto 989/tcp
es el puerto común utilizado para FTPS. Si el puerto de comando es 21/tcp
, se espera que su puerto de datos sea 20/tcp
.

Al igual que FTP, FTPS utiliza dos canales para la comunicación: comando y canal de datos. El canal de datos se puede cifrar con FTPS, o tanto los canales de comando como los de datos se pueden cifrar para mayor seguridad.
FTPS, como FTP, también usa múltiples puertos para canales de comando y datos. Por lo tanto, el puerto 21/tcp
se usa para la conexión inicial y la transmisión de información de autenticación. Posteriormente, se necesitarán diferentes puertos para configurar canales de datos para cada solicitud de transferencia de archivos o listado de directorios del cliente. Por lo tanto, como FTP, necesita un rango de puertos para ser permitido en su firewall.
Autenticación en FTPS
La autenticación para FTPS funciona con un nombre de usuario y una contraseña junto con un certificado de servidor para el cifrado. Cuando el cliente FTPS se conecta a un servidor, comprueba si el certificado del servidor es de confianza para continuar con la conexión. Este certificado se puede solicitar al cliente y al servidor.
SFTP
A diferencia de FTP y FTPS, SFTP (Protocolo de transferencia de archivos SSH) es un protocolo completamente diferente basado en SSH (o Secure Shell). SFTP, de manera predeterminada, funciona en el puerto 22/tcp, al igual que SSH, aunque se puede configurar para usar un puerto libre personalizado en el servidor.

SFTP es un protocolo FTP seguro que usa SSH debajo para enviar y recibir archivos. SSH está completamente encriptado, SFTP es un método robusto y seguro para transferir archivos a través de una red.
SFTP, a diferencia de FTP y FTPS, utiliza un único canal de comunicación para transferir comandos y tráfico de datos, todo lo cual se transmite en forma cifrada junto con la autenticación inicial.
Autenticación en SFTP
La autenticación en SFTP se puede realizar a través de un simple nombre de usuario y contraseña, pero a diferencia de FTP, toda la información, incluidos los detalles de autenticación, se transmite encriptada a través de la red.
SFTP también admite la autenticación mediante un par de claves SSH, una combinación de claves públicas y privadas, donde el cliente proporciona la clave privada para el usuario especificado y el servidor debe tener la clave pública correspondiente para que la autenticación sea exitosa. Es más seguro que usar una combinación de nombre de usuario y contraseña. Es posible autenticar al mismo usuario usando contraseña y claves SSH si ambos métodos están configurados en el servidor SFTP.
Resumen
Este artículo resume las características básicas de los diferentes protocolos populares de transferencia de archivos, a saber, FTP, FTPS y SFTP, y destaca las diferencias sutiles y principales entre estos protocolos. Cubre los puertos que uno necesita permitir en un firewall para configurar un servidor FTP/FTPS/SFTP en funcionamiento, al mismo tiempo que destaca la necesidad de cambiar a protocolos más seguros como FTPS y SFTP.
Cuando digo FTP aquí, me refiero a cualquier protocolo discutido en este artículo. La razón es que FTP tiene décadas de antigüedad, e incluso las versiones seguras más nuevas a veces se denominan FTP en lugar de su nombre designado para el uso diario.
También te puede interesar conocer el mejor Software de Servidor FTP y Clientes FTP/SFTP.