Hace algunas semanas hablábamos sobre Puertos FTP, además del protocolo en si que nos ha acompañado desde hace décadas y que aun hoy está muy vigente aún a costa de numerosos defectos o desventajas frente a otras alternativas más modernas.
El protocolo File Transfer Protocol o simplemente FTP por sus iniciales en inglés es un protocolo que como dijimos ya tiene varias décadas con nosotros, cuya función principal es la de transferir archivos entre el cliente y un servidor. A lo largo de los años ha recibido numerosas modificaciones fundamentalmente para modernizarlo aunque sea un poco.
Veamos ahora un pequeño repaso sobre el uso del protocolo, así como una introducción a las mejores alternativas al FTP que podemos encontrar en el mercado.
Contenido
Reseña sobre el uso del protocolo
El protocolo FTP por defecto no soporta cifrado alguno dado que fue pensado, desarrollado e implementado hace muchos años, incluso mucho antes que la Web y en un contexto completamente diferente al actual, donde aunque parezca mentira las amenazas a la seguridad no suponía un riesgo, por eso la comunicación se hace en texto plano, tanto el contenido como las credenciales para acceder.
Esto fue solucionado en parte al implementar comunicaciones cifradas sin embargo a pesar de los esfuerzos a lo largo de los años su principales defectos se conservan, como puede ser el tema de la velocidad.
Si bien una vez iniciada la transferencia de un archivo la velocidad aumenta y se vuelve estable, para que eso suceda antes de enviar o recibir un archivo el cliente y el servidor intercambian numerosos mensajes lo que hace que la transferencia demore en iniciar y eso se repite por cada archivo a transferir, esto hace que trabajar con archivos pequeños puede ser un proceso muy lento en comparación con archivos más grandes.
Esto en un principio no surgió como un problema ya que el protocolo no fue pensado para transferir gran cantidad de archivos, de hecho en un principio el usuario debe teclear en su terminal todos los comandos para establecer la comunicación, navegar por los directorios y transferir los archivos individualmente hacia o desde el servidor.
Fue recién con la aparición de los Clientes FTP tal que los conocemos hoy que se pudo automatizar la transferencia, ya no hacia falta teclear los comandos o transferir archivo por archivo, ya se podía generar una cola de transferencia que podía contener decenas, cientos o incluso miles de archivos.
Eso fue lo que puso en evidencia lo lento que es transferir archivos FTP y para subsanar este problema la mayoría de los Clientes FTP actuales soportan transferencias simultáneas lo que permite reducir considerablemente el tiempo que demora en transferir un lista de archivos sin embargo muchos servidores FTP limitan la cantidad de conexiones simultáneas provenientes desde una misma IP.
Esta limitación viene por dada fundamentalmente por dos razones, la primera es para evitar que el servidor se va desbordado por múltiples transferencias simultáneas y consuma todo el ancho de banda que el servidor disponga, no solo de un usuario sino eventualmente de múltiples usuarios que puedan intentar usar el servicio al mismo tiempo.
La segunda razón por la que existe esta limitación es por la cantidad de puertos disponibles, un servidor tiene solo 65536 puertos disponibles no solo para FTP sino para todos los servicios por lo que al ser un recurso finito se deben administrar de alguna forma.
El método que se implementó por ejemplo limitando la cantidad de conexiones simultáneas sin embargo no lo hacer por usuario sino que lo limita por IP, es decir la cantidad de conexiones que provengan desde una misma IP sin importar si es el mismo usuario o uno diferente.
Esto trae aparejado sobre todo problemas en equipos de trabajo que se conectan desde una misma red y por eso comparten la misma IP por lo que es muy probable que dos o más usuarios tengan problemas en conectarse al servicio FTP porque el servidor contabilice la conexiones de todos.
No todo con el FTP es malo, a decir verdad es un protocolo bastante efectivo, fácil de implementar y gestionar. Sin embargo su edad y relativamente poca evolución a lo largo de los años acentúan sus defectos y limitaciones consecuencia de ser desarrollado hace décadas, incluso antes de Internet mismo hacen que el día de hoy se necesitan mejores alternativas al FTP.
5 mejores Alternativas al FTP
A continuación vamos a repasar diversas opciones para sustituir o al menos para complementar al servicio FTP tradicional.
FTPS
La primera alternativa es el FTPS un mejora sustancial desde le punto de vista de la seguridad y que surge en los años noventa a raíz de un desarrollo innovador para la época de la empresa Netscape desarrolladora del famoso Netscape Navigator competido directo de Internet Explore en la guerra de los navegadores.
Es Netscape creo un sistema de cifrado para la web llamado Secure Sockets Layer o más conocido por sus siglas SSL, una capa de cifrado originalmente pensado para las comunicaciones HTTP y que posteriormente se integró a FTP dando origen a FTPS que dotó al viejo protocolo de su primera capa de cifrado y solucionando uno de sus grandes defectos.
La comunicación entre el cliente y el servidor comienza en texto plano como cualquier comunicación FTP normal sin embargo esto es solo mientras el cliente y el servidor negocian entre si como establecer la comunicación y que parámetros y algoritmos admiten, una vez establecido esto y antes de enviar cualquier dato sensible la comunicación pasa a ser cifrada con TLS y así establecer una comunicación segura entre el cliente y el servidor.
Para establecer la comunicación se debe utilizar un certificado SSL, puede ser uno certificado auto-firmado, es decir generado por el propio administrador del servidor o utilizar un certificado emitido por una entidad, como son los Certificados SSL que ofrecemos en Infranetworking.
La ventaja de utilizar un SSL como los Positive SSL o los Wildcard es que permite al programa cliente verificar la autenticidad del certificado de forma transparente asegurando al usuario que el servidor al que se intenta conectar es el servidor real y no una posible suplantación, en caso de utilizar un certificado auto-firmado esta validación fallará y queda en el usuario si confía o no en el servidor y en la conexión.
Si bien FTPS soluciona una de las grandes desventajas de FTP igualmente conserva otras como la lentitud en la transferencia de archivos, sobre todo cuando son archivos pequeños y se debe estar negociando nuevas transferencias constantemente al igual que la necesidad de tener un rango de puertos expuesto en el firewall y su consiguiente riesgo de seguridad.
SFTP
Otra de las grandes alternativas es SFTP, muchas personas lo confunden con FTP con cifrado sin embargo el protocolo SFTP internamente es completamente diferente y está basado en SSH y si bien los mismos clientes FTP soportan SFTP y de cara al usuario puede parecer igual internamente funciona diferente.
En el caso de SFTP y a diferencia de FTP el primero no implemente un servicio propio sino que hace uso del servicio SSH del servidor, esto hace que sea más sencillo de utilizar ya que solo con crear el usuario en el sistema operativo ya se tiene acceso SSH/SFTP.
La principal ventaja de SFTP es la seguridad, utiliza encriptación RSA, permite configurar desde el mismo servicio SSH diferentes parámetros de seguridad para cada usuario en particular si se necesita así como filtrar que usuarios se pueden conectar y cuáles no y desde que IP sin necesidad de depender del Firewall para esta tarea.
Otra ventaja que incorpora SFTP es la posibilidad de autenticación por llaves en lugar de solo contraseñas, esto tiene una ventaja sobre todo porque permite que la fortaleza de la llave sea mucho más larga que una contraseña por lo tanto más difícil de romper.
La desventaja de SFTP que al ser un usuario SSH tiene un acceso mayor al sistema operativo, si bien SSH es extremadamente seguro el eslabón más débil siempre es el usuario y en caso el usuario pierda o le roben las credenciales un intruso puede ejecutar una escalada de privilegios y comprometer el servidor, en el caso de habilitar el acceso a SFTP el servidor SSH debe estar adecuadamente configurado desde el punto de vista de la seguridad para minimizar el margen de acción de un eventual intruso.
A su vez permite que los archivos viajen con atributos como permisos y fechas, esto es un detalle no menor, en el protocolo FTP tradicional los archivos se almacenan con usuarios y permisos por defecto, los atributos de tiempo de creación, modificación o último acceso se pierden.
En cambio en SFTP estos atributos se conservan lo que hace sumamente sencillo comparar archivos, establecer fechas de modificación y eventualmente transferir solo los archivos modificados que hagan falta y no el resto, esto tiene enormes ventajas a la hora de sincronizar archivos porque permite reducir el consumo de ancho de banda y de tiempo de transferencia al no tener que transferir archivos no modificados.
Rsync
Una gran alternativa cuando se trata de copiar, sincronizar o respaldar archivos es el comando Rsync, una heramienta en extremo flexible para realizar copias de archivos ya sea dentro del mismo servidor o mediante la combinación con SSH realizar la copia entre dos servidores lo que lo hace ideal para realizar respaldos.
Funciona similar al comando copy asignando un origen y un destino de la copia, sin embargo a rsync es posible configurar numerosos parámetros según el tipo de copia que necesitemos hacer, por ejemplo sirve para copias completas, copias espejo o copias incrementales.
En cuanto a rendimiento es notoriamente más rápido de FTP y más seguro al utilizar SSH como túnel de comunicación, permite tanto autentificación por contraseña como por llave lo que con esta última lo convierte en una excelente alternativa para automatizar respaldos.
A nivel de cifrado es tan fuerte como SFTP aunque existen los mismos riesgos en cuanto a seguridad si el usuario pierde o le roban las contraseñas o las llaves, igualmente es una herramienta más útil para administradores que para usuarios comunes debido a ser potencialmente peligroso si se utiliza mal.
Git
El software GIT es un Sistema de Control de Versiones que fue creado por Linux Trovalds originalmente para versionar el código fuente de Linux que el mundo de desarrollo ha adoptado casi de facto en la actualidad sustituyendo a los problemáticos, ineficientes y muchas veces poco confiables Subversión y Mercurial. Es una de las mejores alternativas al FTP hoy por hoy.
Para ser justos no se trata de una herramienta para transferencia de archivos sino para versionados de archivos, permite que a equipos de trabajo distribuidos poder administrar de manera eficiente y segura los repositorios de proyectos de software, manteniendo el historial de cambios de un proyecto y permitiendo de forma segura la integración de cambios.
Si bien no es una herramienta de transferencia de archivos el motivo que integre esta lista es porque permite hacer el despliegue de software directamente en el servidor lo cual lo transforma en una alternativa más a FTP, en lugar de transferirse desde el PC del usuario los archivos son alojado en repositorios de proveedores como pueden ser GitHub o GitLab o repositorios privados y es el propio servidor (de destino) el que se conecta a los repositorios para descargar y sincronizar los archivos.
A diferencia de las opciones anteriores GIT no necesita un puerto abierto de entrada lo que reduce la exposición, algo importante desde el punto de vista de la seguridad, en cuanto a velocidad es considerablemente más rápido de FTP e incluso más sencillo de implementar.
NFS y Samba
Los servicios Samba y NFS son similares, ambos permiten compartir un almacenamiento de archivos en una red de forma muy sencilla, en ambos casos se mantiene una comunicación permanente entre el cliente y el servidor, a diferencia de FTP que está pensando para establecer una comunicación, transferir datos y cerrar la comunicación.
Este canal de comunicación siempre abierto es la que hace que ambos servicios sean más rápido que FTP ya ofrecen a una velocidad de acceso a los datos mucho mayor al no tener que autentificar y perdiendo valioso tiempo en negociar la transferencia cada vez que se quiere enviar o recibir un archivo.
Tal vez no es la mejor opción para transferencia de archivos a través de internet aunque es ideal para redes internas, nubes privadas, redes empresariales, etc ya que permite un acceso rápido y eficiente a los archivos e incluso que puedan ser accedido desde diferentes puntos, siendo de los dos NFS el más, rápido, eficiente y menor consumo de recursos.
Ambos permiten varios tipos de autentificación siendo NFS el más sencillo y rápido de instalar en un principio es NFS como podemos ver Servidor NAS: ¿Qué es y cómo puedo instalar uno?, sin embargo a la hora de querer personalizar la configuración SAMBA suele ser más sencillo, sin embargo en cuanto a rendimiento no es tan eficiente como NFS.
Entonces: ¿Qué alternativas al FTP debo elegir?
Si nos preguntas a nosotros, la mejor alternativa al FTP hoy en día es Git, por seguridad, estabilidad y su carácter de herramienta colaborativa, es el aliado perfecto de casi cualquier desarrollador que necesita subir, modificar y eliminar código de servidores locales o remotos.
En el artículo de hoy sobre las alternativas al FTP repasamos las los principales defectos de FTP y brindamos algunos de sus mejores reemplazos que logran superar las limitaciones del veterano FTP sin embargo definitivamente no hay que dar por muerto a FTP ya que hace décadas que está con nosotros. Y aun a pesar de todo es muy utilizado hoy en día y seguramente aún sea utilizado por un largo tiempo, aun con todos sus defectos es una solución simple y efectiva para transferir archivos.