El protocolo FTP o de transferencia de archivos es uno de los métodos de transferencia de datos más populares disponibles para varios casos de uso.
FTP tiene diferentes variantes seguras conocidas como FTP y SFTP, que incluyen algunas diferencias sutiles y algunas no tan sutiles en cómo funcionan. Estas diferencias tienen que ver con cómo se intercambian datos, el nivel y el tipo de seguridad en el intercambio de datos y las consideraciones de firewall.
Saber cómo funcionan estos protocolos y las diferencias entre estos mecanismos de transferencia populares pueden ayudarlo a elegir cuál es el más adecuado para sus necesidades.
Ftp
FTP es un protocolo de transferencia de archivos con una larga historia, originalmente propuesta en RFC 114. Más tarde evolucionó a RFC 959, que es el estándar utilizado hoy en día.
FTP opera en dos canales para el intercambio de información: uno para comandos y otro para datos. FTP requiere dos puertos, un canal de comando y un canal de datos.
El canal de comando funciona en el puerto 21, que acepta conexiones de los clientes y maneja las transmisiones de comandos. El canal de comando permanece abierto para la duración de la sesión FTP hasta que el cliente envíe un comando Quit o el servidor se apaga por la fuerza debido a la inactividad o cualquier otra razón posible.
El canal de datos utiliza un puerto temporal bajo demanda que se escucha en el servidor (modo pasivo) o en el cliente (modo activo). Este canal es responsable de intercambiar datos reales entre el servidor y el cliente en forma de listados de directorio y transferencias de archivos.
A diferencia del canal de comando, el canal de datos permanece abierto solo para la duración de la transferencia de archivos, y tan pronto como finaliza, el canal de datos está cerrado. Se requieren múltiples puertos del canal de datos para transferir múltiples archivos o listados de directorio al mismo tiempo.
FTP es inherentemente inseguro porque los canales de comando y datos transmiten información sin cifrar, que puede ser interceptado fácilmente por alguien que usa ataques de hombre en el medio.
Como se discutió anteriormente, FTP requiere una conexión entrante a través del puerto 21/tcp en el lado del servidor para el canal de comando. El rango de puertos pasivos se define para transferencias de listas de archivos y directorios y permite conexiones entrantes. Este proceso de definición puede variar según el servidor FTP que esté utilizando. Consulte su documentación para obtener más información. En el lado del cliente, las conexiones salientes deben permitirse 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 envía a través del canal de comando durante el establecimiento de la conexión inicial. El FTP puede usar un nombre de usuario y una contraseña para la autenticación o puede ser anónimo para que cualquiera pueda iniciar sesión y acceder 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 de cliente FTP aleatorio al puerto FTP 21/tcp en el servidor y envía el comando PORT, especificando el puerto de cliente al que debe conectarse 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 previamente especificado por el cliente mediante el comando PORT. Este canal de datos se utiliza luego para transferir archivos entre el servidor y el cliente.
En modo pasivo, el cliente se conecta desde un puerto de cliente FTP aleatorio al puerto 21/tcp en el servidor y envía el comando PASV. Luego, el servidor responde con un puerto aleatorio para usar para el canal de datos. Luego, el cliente usa otro puerto aleatorio para conectarse al puerto al que respondió el servidor en el paso anterior. Esta conexión de canal de datos se utiliza luego para transferir archivos entre el servidor y el cliente.
Así, en el modo activo, el cliente inicia la solicitud de conexión inicial y 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 con FTP, con transferencias de datos no cifradas y ataques básicos en el medio, los requisitos de la industria lo obligan a usar una alternativa más segura como FTP y SFTP, que son relativamente mucho más seguras.
En 1990, a medida que cambió el panorama de seguridad, Netscape creó el protocolo SSL o de enchufes SSL (SSL, ahora conocido como TLS) para proteger las comunicaciones a través de la red. SSL se aplicó a FTP, que se convirtió en FTP o un protocolo seguro de transferencia de archivos. FTPS o FTP/S generalmente se ejecuta en el puerto 990/TCP, pero también se puede ver en el puerto 21/TCP. Del mismo modo, para el canal de datos, el puerto 989/TCP es un puerto común utilizado para FTP. Si el puerto de comando es 21/TCP, se espera que su puerto de datos sea 20/TCP.
Al igual que FTP, FTPS usa dos canales para la comunicación: el canal de comando y el canal de datos. O el canal de datos se puede encriptar con FTP, o los canales de comando y datos se pueden encriptar para una 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 utiliza para la transferencia de información de conexión y autenticación inicial. Más tarde, se necesitarán diferentes puertos para configurar los canales de datos para cada solicitud de transferencia de archivos o listado de directorio del cliente. Por lo tanto, como FTP, necesita una gama de puertos permitidos en su firewall.
Autenticación en FTPS
La autenticación para FTPS funciona utilizando un nombre de usuario y contraseña, y un certificado de servidor para el cifrado. Cuando un cliente FTPS se conecta a un servidor, se verifica para ver si se confía en el certificado del servidor para continuar conectando. Este certificado se puede solicitar desde el cliente y el 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 se ejecuta en el puerto 22/TCP de forma predeterminada, al igual que SSH, aunque se puede configurar para usar un puerto gratuito personalizado en el servidor.
SFTP es un protocolo FTP seguro que usa SSH para enviar y recibir archivos. Debido a que SSH está completamente encriptado, SFTP es un método seguro para transferir archivos a través de una red.
SFTP, a diferencia de FTP y FTPS, utiliza un solo canal de comunicación para transmitir comandos y tráfico de datos, todo lo cual se transmite encriptado junto con la autenticación inicial.
Autenticación SFTP
La autenticación en SFTP se puede lograr con un nombre de usuario y contraseña simples, pero a diferencia de FTP, toda la información, incluidos los detalles de la autenticación, se transmite a través de la red en forma cifrada.
SFTP también admite la autenticación de pares de clave SSH, una combinación de claves secretas y públicas, donde el cliente proporciona una clave privada para un usuario especificado y el servidor debe tener la clave pública correspondiente para una autenticación exitosa. Esto es más seguro que usar una combinación de nombre de usuario y contraseña. Es posible autenticar al mismo usuario usando la contraseña y las claves SSH si ambos métodos están configurados en el servidor SFTP.
Resumen
Este artículo resume las características principales de varios protocolos populares de transferencia de archivos, a saber, FTP, FTP y SFTP, y destaca las diferencias sutiles y significativas entre estos protocolos. Discute los puertos que deben permitirse en el firewall para configurar un servidor FTP/FTPS/SFTP en funcionamiento, y enfatiza la necesidad de cambiar a protocolos más seguros como FTPS y SFTP.
Cuando digo FTP aquí, me refiero a cualquiera de los protocolos discutidos en este artículo. La razón es que el protocolo FTP tiene décadas de edad, e incluso las versiones seguras más nuevas para el uso diario a veces se denominan FTP en lugar de su uso previsto.
También puede estar interesado en aprender sobre el mejor software FTP Server y los clientes FTP/SFTP.