Cuando queremos transferir carpetas y archivos a través de la red local o Internet, el protocolo FTP es ampliamente utilizado. La mayoría de routers con puerto USB, y todos los servidores NAS, disponen de este protocolo para facilitar la transferencia de archivos, sin embargo, FTP no cifra ni la autenticación con usuario/clave ni tampoco los datos transferidos, por lo que cualquiera podría capturar la información transmitida. FTPS, FTPES y SFTP son protocolos que nos permiten transferir datos de manera segura, y hoy en RedesZone os vamos a explicar sus principales características y en qué se diferencian.
Existe una gran variedad de protocolos en lo que a transferencias de archivos se refiere, por lo que para algunos usuarios será un poco lioso conocer al detalle cuál es mejor. De ahí que no esté de más saber cuáles son las diferencias entre estas opciones: FTPS, FTPES y SFTP. Así se podrá distinguir de una manera más sencilla cuál es la mejor alternativa para las transferencias que se quieran realizar de archivos.
Protocolo FTP
El protocolo FTP (File Transfer Protocol), o también conocido como protocolo de transferencia de ficheros, es un protocolo de la capa de aplicación que utiliza el protocolo TCP en la capa de transporte. FTP utiliza una arquitectura cliente-servidor, por lo que desde uno o varios equipos cliente nos podremos conectar a un mismo servidor. El puerto por defecto que utiliza FTP es el TCP 21 para control, por este puerto se gestiona el establecimiento de la conexión, pero no se transfieren datos a través de este puerto. Dependiendo del modo de funcionamiento de FTP, utilizará unos puertos u otros con el fin de transmitir la información. FTP tiene dos modos de funcionamiento:
- Modo activo: en este modo de funcionamiento el servidor FTP crea el canal de datos en el puerto TCP 20, mientras que en el lado del cliente se elige un puerto aleatorio superior al puerto TCP 1024. En este modo de funcionamiento es obligatorio que el cliente FTP tenga abierto los puertos superiores al 1024, algo peligroso si estamos conectados a Internet, y que también presenta problemas si estamos detrás de NAT. Para solucionar este problema se desarrolló el modo pasivo (PASV), el cual es el más utilizado actualmente.
- Modo pasivo: en este modo de funcionamiento, a través del puerto 21 de control, el servidor FTP le dice al cliente FTP a qué puerto externo debe conectarse para transferir la información. De esta forma, el cliente establecerá una conexión desde el puerto que le haya indicado. De esta manera, el servidor FTP deberá tener un puerto TCP 21 para el canal de control, y un rango de puertos TCP a elegir por el propio administrador.
En ambos modos de funcionamiento, la autenticación y la transferencia de datos se realiza sin ningún tipo de cifrado. Esto significa que, si hay «alguien» escuchando el canal de comunicación, no solamente podría capturar las credenciales de acceso a nuestro servidor FTP, sino también los datos que estemos transmitiendo. Aunque tengas que usar un nombre de usuario y una contraseña, esa información podría quedar expuesta y un tercero podría tener acceso a ella.
Hay que tener en cuenta que estamos ante un protocolo antiguo, que surgió en la década de 1970, y que hoy en día es inseguro. No obstante, sigue siendo utilizado. Eso sí, han surgido actualizaciones más seguras como vamos a explicar a continuación. De esta forma los datos pueden estar protegidos y no tendremos problemas que comprometan la seguridad y privacidad.
Usos de este protocolo:
- Enviar archivos entre equipos
- Gestionar contenido de un servidor web
- Crear directorios
- Eliminar ficheros
Una vez que se tienen en cuenta los principles usos que se pueden aprovechar de este protocolo, lo cierto es que resulta clave conocer las distintas ventajas por las que se puede apostar por esta alternativa. De primeras, ofrece una conexión que es rápida y también directa con el server en cuestión. Y no solamente esto, sino que también es multiplataforma y cuenta con la capacidad de envías una buena cantidad de archivos. Además, una de las cualidades que se deben tener en cuenta es que la cola de envío de los archivos se puede reanudar si se detiene. Asimismo, las operaciones que se realizan son bidireccionales.
Protocolos FTPS y FTPES
Para solucionar el problema de la confidencialidad (cifrado de los datos) en la autenticación y en la transferencia de datos, se decidió añadir una capa de seguridad SSL/TLS al propio protocolo FTP. FTPS y FTPES también se conocen como FTP over TLS/SSL, y están basados en el propio protocolo FTP.
FTPS se conoce como FTPS Implícito, es una forma antigua de proporcionar seguridad y privacidad al protocolo FTP. En este protocolo el cliente FTP se conecta a un puerto distinto al puerto TCP 21, por defecto, se hace uso del puerto TCP 990 para realizar la conexión. En este caso, el canal de datos hace uso del protocolo TCP 989. Antes de intercambiar ninguna información con el servidor FTP, se realiza una negociación TLS/SSL para asegurar todo el canal de comunicación, por tanto, la autenticación y la transferencia de archivos está asegurada con TLS.
FTPES se conoce como FTPS Explícito, y es el protocolo que se utiliza actualmente cuando queremos activar la seguridad en FTP. En este modo de funcionamiento, el cliente FTPS debe pedir explícitamente seguridad en el servidor, y luego pasar a un método de cifrado compatible por ambos. Lo primero que hará el cliente FTPES es conectarse al puerto TCP 21 del servidor FTP, si el cliente está configurado para requerir obligatoriamente seguridad, y si el servidor FTP tiene habilitado el protocolo FTPES, entonces se establecerá una comunicación cifrada con TLS antes de autenticarnos y transferir información.
Si nos interesa proporcionar siempre la máxima seguridad a los clientes FTPES en todas las conexiones, deberemos activar en el servidor FTP que solamente queremos permitir conexiones FTP over TLS/SSL, rechazando cualquier conexión FTP normal, de esta forma, solamente se podrá utilizar el protocolo FTPES. El protocolo FTPES no requiere la apertura de ningún puerto adicional en el servidor, ni tampoco en el cliente, simplemente usará el puerto TCP 21 de control y un puerto aleatorio (entre un determinado rango de puertos) para transferir la información.
FTPES utiliza los protocolos TLS 1.0, 1.1, 1.2 e incluso TLS 1.3 si lo permite el servidor y el cliente. Debido a la utilización del protocolo TLS/SSL, deberemos configurar en el servidor un certificado RSA o similar, con su clave pública y su clave privada, para poder levantar correctamente el servicio de FTP.
En la siguiente imagen podéis ver la configuración del servidor FTP en el sistema operativo XigmaNAS. Podremos habilitar las conexiones TLS, y deberemos indicar un certificado y también la clave privada asociada. Por último, nos permite habilitar solamente las conexiones TLS, rechazando las conexiones FTP «normales» sin cifrar.
Al conectarnos con un cliente FTPES como por ejemplo FileZilla, podremos ver la negociación TLS que hemos realizado. Nosotros actualmente estamos negociando con el último protocolo TLS 1.3, tal y como podéis ver:
Dependiendo del software del servidor FTPES y de la configuración, podremos negociar con diferentes protocolos TLS, diferentes suites de cifrado simétrico, intercambio de claves e incluso diferentes algoritmos de clave pública. Esto dependerá de la configuración que hayas realizado. Lo más normal hoy en día es hacer uso del protocolo TLS 1.2 o TLS 1.3 que son las únicas versiones seguras, porque TLS 1.0 y TLS 1.1 ya se consideran «deprecated», de esta forma, tendremos la mejor seguridad posible para asegurar las comunicaciones.
Gracias a este protocolo FTPES, todas nuevas comunicaciones con el servidor FTP estarán cifradas y autenticadas, tanto a la hora de autenticarnos como en la transferencia de ficheros. También se comprobará la integridad de cada paquete que se intercambie, por tanto, tendremos al seguridad de que nadie los ha modificado al vuelo. Un detalle muy importante de los servidores con FTPES, es que tendremos que abrir tanto el puerto de control que nosotros configuremos, como también los puertos FTP PASV para no tener problemas con el NAT.
Por tanto, estos dos protocolos llegaron con el objetivo de mejorar la seguridad de FTP, que quedó obsoleto y no es seguro hoy en día. Aunque no son exactamente lo mismo, sí que van a permitir mejorar la privacidad al no exponer información sin cifrar.
Ahora bien, hay que conocer más a fondo qué ventajas puede proporcionar cada uno de estos protocolos. En el caso del FTPS se puede ver que se trata de un protocolo muy utulizado que es una variación de FTP. Por lo que hay que tener claro que los comandos que se usan son los mismos en ambos protocolos. Y, por otra parte, permite el intercambio de los archivos entre servidores sin que sea necesario el uso de un cliente. Asimismo, cuenta con SSL y TLS con los que se ofrecen algoritmos de autenticación que son más seguros. Y en el caso de FTPES lo cierto es que hay que tener claro que no es más que FTPS explícito.
Protocolo SFTP
El protocolo SFTP (SSH File Transfer Protocol) o también conocido como transferencia de ficheros SSH, es un protocolo que no tiene nada que ver con el protocolo FTP. SFTP no es la versión segura del protocolo FTP, ya que está basado en el protocolo SSH por completo. Este protocolo SFTP nos permite autenticarnos y realizar transferencia de ficheros entre equipos como si fuera un servidor FTPES, pero utilizando criptografía del protocolo SSH que tengamos instalado en el servidor de archivos. SFTP tampoco es un protocolo donde FTP utilice SSH para asegurar la conexión, es un protocolo completamente nuevo basado en SSH y no en FTP.
El protocolo SFTP hace uso del puerto TCP 22 por defecto, el mismo que el protocolo SSH. Si en nuestro servidor de archivos tenemos un servidor SSH para ejecutar comandos CLI, también tendremos la opción de habilitar el SFTP para conectarnos con clientes SFTP como FileZilla, y comenzar a transferir archivos. La autenticación de SFTP es exactamente la misma que en SSH, es decir, si en SSH utilizamos clave pública, en SFTP también deberemos hacer uso de esta criptografía de clave pública.
Si nos metemos en la sección de servidor SSH de XigmaNAS, podemos ver la siguiente configuración, donde usamos el puerto TCP 22 y la configuración con autenticación usuario/clave y no utilizando clave pública.
En el cliente FileZilla si ponemos en la barra de dirección sftp://ip podremos acceder directamente con este protocolo de transferencia de archivos basado en SSH. También podremos ver qué algoritmos de intercambio de claves estamos utilizando, cuál es la clave del servidor, así como la huella digital, y también el cifrado simétrico AES-256-GCM.
Si quieres utilizar el protocolo SFTP, debes recordar que depende del servidor SSH y no del servidor FTP, por lo que deberás configurar adecuadamente los permisos de usuarios en función del nivel de acceso vía SSH.
Por parte de este protocolo, lo cierto es que ofrece toda una variedad de beneficios. Por ejemplo, una de las primeras ventajas es que consigue cifrar bien la información, por lo que protege bien los datos durante cada una de las transferencias. Además de esto último, cuenta con una autenticación robusta que permite el uso de claves públicas y privadas para que se tenga una autenticación más segura en todo momento.
Qué diferencias hay entre FTPS y SFTP
Una vez que se tiene más conocimiento acerca de estos protocolos, lo cierto es que resulta necesario conocer de cerca cuáles son las diferencias que existen entre estas dos alternativas. Ya no solo a nivel de seguridad, sino también en cuanto al resto de características que presentan estos dos protocolos de transferencia de archivos.
Principales diferencias
Para comenzar con las diferencias, dejando de lado el punto de la seguridad que lo veremos con mayor detalle a continuación, pasaremos a hablar de primeras sobre que FTPS usa múltiples números de puerto. El primero con la finalidad de canal de comando para la autenticación y comandos de paso. Además, para cada solicitud de transferencia es necesario abrir otro puerto adicional para el canal de datos. Sin embargo, el protocolo SFTP solamente necesita de un único puerto para todas y cada una de sus comunicaciones.
Es por esto mismo que la clave diferencial entre ambas alternativas está en que SFTP usa un canal seguro para la transferencia de archivos, mientras que el otro protocolo no lo hace. Por lo que en las siguientes líneas conoceremos al detalle cuál es la opción más segura.
¿Qué protocolo es más seguro para transferir ficheros?
Actualmente el protocolo FTPS (Implícito) no se utiliza en la mayoría de los casos, a favor del protocolo FTPES (Explícito) tal y como os hemos explicado. Hoy en día la gran mayoría de las conexiones a Internet y routers hacen uso de NAT para permitir que todos los clientes WiFi y cableados accedan a Internet, y en estos casos el protocolo FTPS instalado en un servidor en la LAN podría tener problemas de comunicación. Por este motivo, se utiliza ampliamente FTPES que es la versión FTP con una capa de TLS para proteger la confidencialidad, asegurar la autenticidad de cada paquete transmitido y también se comprueba la integridad de los datos para que, si se modifican los datos al vuelo por un cibercriminal, se pueda detectar y se cancele la transferencia de los archivos.
SFTP se utiliza ampliamente para transferir datos a servidores dedicados, servidores VPS e incluso a nuestro hosting, ya que, si tenemos instalado el servidor SSH, también tendremos el protocolo SFTP disponible, sin necesidad de instalar software adicional como ProFTPd, vsFTPd u otros. El popular cliente FTP FileZilla soporta también el protocolo SFTP, además de tener otros programas específicos para la transferencia de ficheros usando este protocolo, como WinSCP entre otros.
En cuanto a la seguridad, tanto FTPES como SFTP son seguros, el primero está basado en el protocolo TLS (Transport Layer Security), normalmente utilizamos el protocolo TLS 1.2 o TLS 1.3, ambas versiones del protocolo son completamente seguras, aunque es recomendable hacer uso de TLS 1.3 si vamos a transferir muchos archivos pequeños, porque la gestión de las conexiones es más rápida y eficiente que con TLS 1.2. Respecto a SFTP, está basado en el propio protocolo SSH, por tanto, podremos autenticarnos a través de usuario/clave e incluso haciendo uso de una llave privada SSH para que la autenticación sea lo más segura posible.
En el caso de FTPES deberemos crear una Infraestructura de Clave Pública (PKI) incorporando el certificado de la CA (Autoridad de Certificación) y su correspondiente clave privada, sin embargo, en SSH esto no es necesario, y facilita enormemente la configuración. Tal y como habéis visto en las capturas del cliente, la principal diferencia entre ellos es cómo establecemos la conexión segura, pero una vez establecida la conexión, la transferencia de los datos se realiza con AES-256-GCM en ambos. Otra diferencia entre FTPES y SFTP, es que con el protocolo FTPES necesitaremos abrir los puertos FTP PASV para que al comunicación funcione correctamente, sin embargo, con SFTP solamente tendremos que abrir un puerto, el correspondiente con SSH.
Clientes FTP para servicios FTP
En Internet tenemos gran variedad de servicios para poder hacer un FTP en nuestra red. Pero siempre tendremos algunos que son más recomendados que otros. La eficacia, rendimiento y seguridad, son las principales cosas en las que nos tenemos que fijar a la hora de utilizar un servicio. Sobre todo, si se trata de una corporación. Ya que en estos sitios es mucho más importante la seguridad.
- FileZilla: Es uno de los más conocidos que nos podemos encontrar. Es muy completo y tiene un largo recorrido en este mundo, así como una gran comunidad de desarrolladores que lo mantienen totalmente actualizado. Por no hablar de toda la documentación y soporte, la cual es muy completa. Esta dispone de todas las opciones, dependiendo de los sistemas operativos que utilicemos. Entre sus opciones, están los protocolos FTP, SFTP y FTPS, con la capacidad de transferir grandes archivos sin problemas. Por último, es muy accesible e intuitivo.
- WinSCP: Es un cliente gratuito y open source, con un gran apoyo por parte de la comunidad. Esta aporta mucha seguridad a los usuarios, ya que también cuenta con gran cantidad de documentación y foros dedicados a ella. El problema que puede presentar es que está dedicada a Windows, pero lo cierto es que está totalmente integrada. Es compatible con FTP, SFTP y FTPS.
- Cyberduck: Estamos ante un sistema compatible con Windows y Mac, pero no con Linux. Lo cual es algunos casos puede hacer que sea una opción que no se va a plantear. Por otro lado, es compatible con FTP, SFTP, WbDac, Amazon S3, entre otras, y nos permite establecer una conexión con la nube y las ubicaciones que tenemos en almacenamientos externos. Cuanta con un diseño mucho más moderno que las otras dos opciones, y es de código abierto. Por lo cual podremos hacer todas las pruebas que sean necesarias. Según el soporte de la misma, nos aseguran una buena encriptación, lo cual es bueno para la seguridad. Y como opción curiosa, nos da la posibilidad de transferir archivos con un generador de URLs.
Cómo mejoran las transferencias
Los servidores FTP (File Transfer Protocol) pueden mejorar significativamente el rendimiento de las transferencias de archivos al proporcionar una serie de ventajas clave. En primer lugar, los servidores FTP están diseñados específicamente para facilitar la transferencia de archivos de manera eficiente. Utilizan algoritmos de compresión y técnicas de optimización para acelerar el proceso de transferencia. Esto significa que los archivos se pueden enviar y recibir más rápidamente en comparación con otros métodos de transferencia de archivos, como el envío por correo electrónico o la descarga directa desde un sitio web.
Además, los servidores FTP suelen ofrecer capacidades de transferencia de archivos en paralelo. Esto significa que se pueden establecer múltiples conexiones simultáneas entre el cliente y el servidor, lo que permite la transferencia de varios archivos o partes de un archivo al mismo tiempo. Esta función es especialmente útil cuando se trata de archivos grandes, ya que acelera el proceso al dividirlo en partes más pequeñas y transferir cada parte de manera independiente.
Otra ventaja de los servidores FTP es su capacidad para reanudar las transferencias interrumpidas. Si la conexión se interrumpe durante una transferencia de archivos, el servidor FTP puede guardar la posición actual de la transferencia. Cuando se restablece la conexión, la transferencia se reanuda desde el punto en el que se detuvo, en lugar de comenzar desde cero. Esto ahorra tiempo y ancho de banda, especialmente cuando se trata de archivos grandes o conexiones inestables.
Los servidores FTP también pueden ofrecer opciones de compresión de archivos. Durante la transferencia, los archivos se pueden comprimir para reducir su tamaño, lo que a su vez reduce el tiempo necesario para enviarlos. Esta función es especialmente útil cuando se trata de transferir una gran cantidad de archivos o archivos con formatos que son altamente comprimibles, como archivos de texto o documentos.
¿Y el Protocolo HTTP?
Aunque este protocolo no está diseñado para la transferencia de archivos como los que hemos mencionado, también es un protocolo que se utiliza para la transmisión de datos en Internet y su mención es importante.
Su función principal es facilitar la transferencia de documentos hipertexto, como páginas web, imágenes y otros recursos. Trabajando sobre el protocolo de transporte TCP en el puerto 80, HTTP transmite datos de manera no cifrada por defecto, lo que supone que la información puede ser vulnerable a ataques de terceros.
Por otro lado, HTTPS es la versión segura de HTTP. Emplea TLS o su predecesor SSL para cifrar la comunicación entre el cliente y el servidor. Este cifrado, trabajando en el puerto 443, garantiza la confidencialidad e integridad de la información transmitida, siendo muy importante en transacciones en línea, por ejemplo, o visualización de contenido sensible.
La diferencia con los protocolos FTP, FTPS Y FTPES está en el propósito y la seguridad del mismo. Mientras que FTP se centra en la transferencia de archivos sin cifrado y HTTP en la transferencia de datos, los protocolos FTPS, FTPES y HTTPS hacen lo propio pero cifrando el contenido y la información transmitida, consiguiendo una comunicación más segura entre cliente y servidor.
Conclusiones
Como has podido ver, existen diferencias entre todos estos protocolos de transferencia de archivos que hemos mostrado. Una de las principales es la seguridad, ya que en el caso de FTP estamos ante un protocolo obsoleto y a través del cual la información va a viajar sin cifrar, por lo que puede quedar expuesta. Hoy en día los más utilizados van a ser FTPES y SFTP, que son seguros. FTPES va a utilizar el protocolo TLS, mientras que SFTP se basa en SSH. Eso sí, es importante que en el caso de TLS se utilice la versión 1.3 o 1.2, ya que las anteriores son obsoletas y no son seguras.
Por tanto, si necesitas transferir archivos y te encuentras ante la duda de cuál de estos protocolos es mejor elegir, como ves es importante fijarse en la seguridad y elegir uno u otro puede suponer un cambio importante para lograr que los datos personales estén protegidos. Así evitarás que un tercero pueda tener acceso y comprometer la información que vas a enviar o recibir.