FTP, FTPS y SFTP: diferencias, ventajas e inconvenientes

La curiosidad y la predisposición a probar cosas nuevas suelen ser cualidades bastante habituales entre las personas relacionadas con la tecnología, pero existen ciertas situaciones en las que estamos tan acostumbrados a realizar algunas tareas de una determinada forma que no nos cuestionamos el por qué o si es posible hacerlo mejor con algunos cambios.

FTP, SFTP y FTPS

El uso del FTP suponía para mi una de esas situaciones, lo utilizo con relativa frecuencia pero nunca me había cuestionado cual era la diferencia entre FTPS y SFTP. Si bien sabía que ambos añadían una capa de encriptación con respecto al protocolo FTP,  desconocía por completo que era lo que les distinguía. Así que cuando configuraba una nueva conexión, seleccionaba la opciones que me permitía conectar sin darle mayor importancia.

Filezilla, protocolos ftp, ftps y sftp

El caso es que hace unas semanas instalé un servidor FTP en mi Raspberry. No es el primero que instalo, pero cuando lo he hecho siempre han estado destinados a ámbitos muy concretos, protegidos por una red local y su uso ha sido prácticamente unipersonal,  por lo que nunca me preocupé demasiado por los detalles más allá de que me permitieran conectar y hacer mi trabajo.

La diferencia fue que en esta ocasión quise profundizar un poco más, conocer exactamente la diferencia entre los distintos protocolos y aplicar configuraciones más complejas y eso es lo que os cuento en esta y otras entradas que vendrán.

FTP

FTP son siglas de File Transfer Protocol, es un protocolo que lleva con nosotros desde la década de los 70 y fue diseñado para la transferencia de archivos a través de la red con  una configuración de cliente-servidor.

Su principal defecto es que carece de capa alguna de seguridad, los datos viajan por la red en texto plano, sin encriptación, de modo que es muy sencillo interceptar no solo los archivos que se transmiten sino también los datos de autentificación. Por otro lado, esta ausencia de encriptación es la responsable de que sea el protocolo de transmisión más rápido de los que veremos en esta entrada, pues no existe consumo de recursos relacionados con la encriptación y el tamaño de los paquetes transmitidos es menor.

Por defecto hace uso del puerto 21 y es el precursor de los otros dos protocolos que vamos a ver en esta entrada.

FTPS

Las siglas FTPS provienen de FTP over SSL y no es más que el protocolo estándar FTP transmitido sobre una conexión segura. Inicialmente la conexión segura hacía referencia únicamente  SSL (Secure Sockets Layer), pero con el  paso del tiempo y la aparición del protocolo TLS (Transport Layer Security), también soporta este último. Este protocolo hace uso de dos canales diferentes: uno de control y otro de transferencia, y tiene dos variantes bien diferenciadas:

  • FTP implicito sobre SSL. Recibe este nombre porque la conexión cifrada es implicita, es decir, ocurre desde un primer instante, sin necesidad de solicitarla, motivo por el cual además está desaconsejada (deprecated). Por defecto utiliza el puerto 990 para el canal de control y el 998 para el de datos, de forma que el puerto 21 permanece libre para poder ofrecer un servicio FTP estandar. En cualquier caso los dos canales viajan encriptados.
  • FTP explicito sobre SSL o también conocido como FTPES. El cliente establece una conexión FTP estándar mediante el puerto 21 con el servidor y una vez conectado se solicita explícitamente la negociación SSL, de ahí el nombre. En función de la configuración del servidor, si el cliente no solicita la encriptación es posible que ocurran dos cosas: que se rechace la conexión o que se establezca una conexión FTP estándar (insegura). Esta variante permite decidir si queremos encriptar los canales de control y transferencia o si por el contrario solo queremos encriptar uno de ellos.

Un aspecto que puede resultar negativo de este protocolo es que por el hecho de utilizar más de un canal puede resultar problemático con algunas configuraciones en los firewalls, así que es posible que si tenemos un firewall en funcionamiento e implementamos un servidor FTPS nos veremos obligados a revisar su configuración.

STFP

SFTP o SSH File Transfer Protocol es un protocolo que «simula» el comportamiento del protocolo FTP pero que realmente poco o nada tiene que ver con él, no es una extensión o una mejora como puede ser FTPS, si no que fue desarrollado desde cero.

Tanto los datos de control como de transferencia se transmiten siempre encriptados y por un único canal, utilizando para ello el puerto 22 al igual que el protocolo SSH (Secure SHell) sobre el que está construido. Posiblemente por este motivo muchos servidores FTP implementan los protocolos FTP Y FTPS pero no SFTP. En su lugar podemos ver implementaciones  de servidores SFTP de la mano de los propios servidores de SSH, algunos ejemplos son OpenSSH o LSH.

SFTP ha sido el último protocolo en llegar y cabe destacar que su especificación nunca ha pasado de ser un borrador, es decir, no existe un documento RFC.

Conclusión

Es interesante conocer qué hay detrás de los distintos protocolos de transmisión de ficheros para poder decidir cual es el que mejor se adapta a las necesidades que tengamos en cada momento.

Mi recomendación dependerá del uso que le vayamos a dar, pero siempre que sea posible utilizaría un protocolo que implemente una capa de encriptación y no esté desaconsejado (deprecated), es decir: SFTP o FTPES.

¿Y tú qué opinas al respecto? ¿Qué protocolo prefieres y por qué? ¿Has tenido alguna mala experiencia por utilizar un FTP sin encriptación? Déjanos un comentario contándonos tu experiencia.

Créditos, referencias y artículos relacionados

4 respuestas a «FTP, FTPS y SFTP: diferencias, ventajas e inconvenientes»

  1. Muy buenas las aclaraciones sobre estos protocolos. Me ha parecido una entrada muy interesante.

    Conocía de la existencia de ftps desde que empecé a estudiar administración de sistemas. Pero jamás lo he visto implementado por defecto en ninguna máquina.

    Yo creo que la ventaja de sftp es que se puede utilizar con cualquier máquina que ejecute un servidor SSH ya sea OpenSSH o cualquier otro.

    Lo que mola de sftp es que atualmente la mayoría de «cacharros informáticos» que hay por ahí ejecutan de fondo sistemas Linux más o menos abiertos y muchos tienen implementada por defecto la función de servidor SSH para configurarlos de forma remota.
    Incluso para máquinas Windows existen servidores SSH que se pueden instalar y configurar fácilmente.

    Es el caso que he tenido por ejemplo, en más de una ocasión en el que me he visto en la necesidad de copiar un archivo desde un sistema Linux (por ejemplo desde una Raspberry Pi) Y simplemente conectándome desde el móvil con termux con un cliente SSH he resuelto el problema en un santiamén.

    A parte de que te ahorras el tener que instalar y configurar otro protocolo con sus correspondientes puertos.

    Por cierto, desconocía que sftp no tuviera ni siquiera un RFC como tal. Siempre pensé que era una «reimplementacion» sin más de FTP con ssh.

  2. Ojalá me hubiera topado con esta explicación bastantes años atrás, cuando siendo junior en un equipo de más juniors nos encasquetaron un evolutivo en el que viajaba información sensible por FTP.
    Al apremiarnos el cliente a que se corrigiera lo único que encontré por parte de seniors que debían que echarnos un cable fueron respuestas vagas, como si no quisiera mojarse demasiado y varios copia-y-pega a enlaces con fragmentos de código ya listo para resolver el problema por la vía rápida.
    Pero lo importante, una explicación del qué, el porqué y el para qué nos hubiera venido mucho mejor.

    Espero que este artículo ayuda de verdad a bastante gente en la misma situación.

Responder a Andres Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *