La seguridad en Internet es muy importante. Debemos proteger nuestros sistemas, dispositivos, así como también preservar siempre los datos y archivos de nuestra página web de forma segura. Por ello a la hora de alojar contenido en un servidor debemos tener en cuenta ciertos aspectos para evitar así problemas. En este artículo vamos a hablar de qué es FTP sobre TLS/SSL.
Cómo evitar problemas en servidores FTP, FTPES o SFTP
Hay que tener en cuenta que en muchas ocasiones podemos sufrir problemas que afecten al funcionamiento de nuestros servidores. Es algo relativamente común cuando cometemos errores de configuración o el servicio que estamos usando tiene algún tipo de error. Por ello conviene evitar en todo momento problemas que puedan perjudicar al buen funcionamiento de nuestros servidores FTP, FTPES o SFTP. Hay errores habituales como el 530 de fallo de autenticación.
Uno de los consejos más importantes es asegurarnos de que nuestro proveedor de Internet no está bloqueando el puerto correspondiente. Esto podría dar lugar a problemas como FTP connection timed out. Esto significaría que nuestro proveedor está bloqueando el puerto 21, que es el que utiliza en este caso FTP.
También podría ocurrir que estemos usando un puerto incorrecto. Podríamos toparnos con un error como ECONNREFUSED. Esto ocurre cuando estamos intentando conectarnos a través de un puerto incorrecto. Por ello es esencial asegurarnos de que estamos usando el puerto adecuado y también que nuestro operador no lo está bloqueando.
Un fallo que también aparece mucho es el de EAI_NONAME. Ocurre cuando el servidor especificado no es el correcto y no se puede establecer la conexión. Para evitarlo debemos verificar siempre la información de nuestro sitio.
¿Está disponible el directorio al que intentamos acceder? Un problema habitual es el error 530 Sorry, but I can’t trust you. Lo podemos evitar si vemos la ruta exacta del directorio para comprobar que es la correcta o si la creamos en caso de que no esté disponible.
Por otra parte, hay que tener en cuenta la importancia de controlar posibles firewalls que estemos utilizando. A veces pueden interferir en la conexión y generar problemas que eviten el uso de servidores FTP, FTPES o SFTP.
Qué es FTP
FTP es un protocolo para transferir archivos de un equipo a otro. Por ejemplo podemos pasar archivos y carpetas de un ordenador a un servidor web. Fue creado inicialmente en la década de 1970 pero continúa siendo muy importante. Los servidores FTP están muy presentes en la red y a la hora de acceder a uno podemos ver que la URL empieza por ftp://, en lugar del típico https://.
Su nombre viene de File Transfer Protocol (protocolo de transferencia de archivos). Permite cargar y descargar archivos de una manera sencilla en un servidor a través de cualquier equipo como puede ser un ordenador o un móvil.
Básicamente el usuario va a disponer de un sistema de gestión de archivos. Va a poder usar un explorador como podemos ver en sistemas operativos como Windows. Estos archivos los podemos incluir en carpetas y organizarlos como queramos. De la misma manera que hacemos con nuestro ordenador.
Para que funcione es necesario hacer uso de TCP/IP, igual que en el caso del protocolo HTTP. Lo podemos utilizar a través de un navegador o herramientas específicas. Podemos ver en qué lugar exactamente está incluido ese archivo. Por defecto se conecta al puerto TCP 21.
El problema es que inicialmente el protocolo FTP se diseñó sin tener en cuenta la seguridad. Como hemos mencionado se trata de algo que lleva con nosotros muchas décadas. Lógicamente la tecnología ha avanzado y aporta tanto aspectos positivos como también negativos. Estos últimos están relacionados con los problemas de seguridad y los ataques que podemos sufrir.
Por qué FTP sobre SSL es importante para un servidor web
Esto que mencionamos, el hecho de que fuera un protocolo antiguo que no se adapta a las medidas de seguridad actuales, provocó que fuera necesaria la implantación de FTP sobre SSL. Generalmente nos referimos como FTP/SSL. Consiste básicamente en proteger la transferencia de archivos.
FTP sobre SSL utiliza una capa SSL/TLS debajo del protocolo estándar FTP. De esta manera logramos cifrar los canales de control y datos. Cuando se va a intercambiar información, se realiza una negociación TLS/SSL antes de que se envíe nada. De esta forma va todo cifrado.
Este protocolo autentifica las conexiones utilizando un ID de usuario o contraseña, además de poder tener también un certificado.
Variantes: FTPS implícito y explícito
Hay que mencionar que hay dos variantes de este protocolo. Por un lado tenemos FTP implícito sobre SSL y por otra parte también encontramos la variante FTP explícito sobre SSL. Vamos a explicar en qué consiste cada una.
- FTP implícito sobre SSL: esta variante significa que la conexión cifrada es implícita. No es necesario solicitarla. No obstante, esta variante está desaconsejada hoy en día.
- FTP explícito sobre SSL: la segunda variante es FTP explícito sobre SSL. También se le conoce simplemente como FTPES. Se establece una conexión estándar mediante el puerto 21 con el servidor y se solicita explícitamente la negociación SSL.
SFTP, un protocolo diferente
Hay que tener en cuenta que SFTP no es lo mismo que FTPS, aunque pueda confundir a los usuarios en ocasiones. Se trata de un protocolo diferente, aunque sí simula el funcionamiento de FTP. En este caso utiliza el protocolo de red SSH.
En este caso tanto los datos de control como de transferencia van siempre cifrados y a través de un único canal. Para ello hace uso del puerto 22, como ocurre con el protocolo SSH.
Aunque tanto FTPS como SFTP mejoran notablemente la seguridad al transferir archivos, hay que tener en cuenta que tienen diferencias. Una de las principales es que la primera utiliza múltiples puertos diferentes, mientras que SFTP utiliza un único puerto para todas las transferencias.
En definitiva, la seguridad es un factor muy importante a la hora de alojar contenido para nuestra web. Hacer uso de FTP sobre SSL es muy interesante para cifrar las conexiones y evitar problemas.
| Característica | FTP | FTPS | SFTP |
|---|---|---|---|
| Cifrado de datos | Sin cifrado. Los datos se transfieren como texto plano, sin encriptación | Cifrado SSL/TLS en ambos canales (control y datos) | Cifrado mediante protocolo SSH. Todos los datos se cifran en una única conexión |
| Puerto(s) por defecto | Puerto 21 (control) y puerto 20 (datos) | Puerto 990 (control implícito) y 998 (datos implícito), o puerto 21 con negociación TLS explícita | Puerto 22 (TCP), el mismo que SSH |
| Protocolo base | FTP estándar | FTP + SSL/TLS | SSH (Secure Shell) |
| Nivel de seguridad | Bajo. Vulnerable a ataques e interceptación de datos y credenciales | Alto. Protege las comunicaciones mediante cifrado SSL/TLS de versión 1.2 o superior | Máximo. Cifrado integral con opción adicional de autenticación por clave pública SSH |
| Complejidad de configuración del Firewall | Moderada. Requiere abrir múltiples puertos dinámicamente (21 y rango de puertos para datos) | Moderada. Necesita configuración de dos canales separados (control y datos) con puertos específicos | Baja. Solo requiere abrir un único puerto (22). Coincide con SSH, simplificando la configuración |
Alternativas a protocolos FTP
Si no queremos dar uso de estos sistemas FTP, nos podemos encontrar con algunas alternativas que también son válidas para las transferencias de archivos. Estas son:
- SCP: Está basado en el protocolo SSH. Este permite la transferencia segura de archivos entre máquinas, y es muy similar a SFTP. Por otro lado, resulta más simple de utilizar, y es mucho más directo durante sus operaciones.
- HTTP y HTTPS: A pesar de que son conocidos por servir páginas web, también se les puede dar uso para transferir archivos. Muchas aplicaciones de almacenamiento en la nube actuales y conocidas, utilizan HTTPS para poder realizar las transferencias de los archivos.
- WebDAV: Se trata de una extensión del protocolo HTTP, la cual permite a los usuarios editar y disponer de una gestión de archivos en servidores remotos. También pueden funcionar con HTTP y HTTPS.
- Rsync: Es una herramienta y protocolo que permite realizar una sincronización de archivos entre diferentes máquinas. Es muy eficiente en todo el proceso de cambio de archivos entre el origen y el destino. Es muy utilizado para copias de seguridad y crear espejos de sitios.
- SMB: Es un protocolo de comparación de archivos que está diseñado especialmente para las redes locales. Es muy utilizado en Windows, a pesar de que puede haber clientes con otros sistemas operativos. En este caso podemos englobar dentro de este apartado a CIFS.
- NFS: Se trata de un protocolo que ha sido desarrollado por Sun Microsystems, que da la posibilidad a los sistemas informáticos de acceder a los archivos mediante una red como si fueran discos locales. Es una funcionalidad muy popular en sistemas Unix y Linux.
- TFTP: Es una versión muy simplificada de FTP, y está diseñada para funcionar dentro de redes locales. Es muy utilizada para tareas de configuración remota o realizar actualizaciones de firmware. El problema es que carece de características de seguridad. Por lo cual no se recomienda para transferencias por Internet.
Como puedes ver, hay muchas alternativas. Por lo cual antes de utilizar una sin más, lo mejor es realizar un pequeño estudio que nos ayude a determinar cuál es la que mejor se adapta a nuestras necesidades.
Consejos para elegir el protocolo correcto
No podemos obviar que elegir el protocolo de transferencia de archivos depende de factores clave, como puedan ser el nivel de seguridad necesario, la compatibilidad con firewalls, el tipo de cliente o el entorno de red. Bien es cierto que aunque FTP plano ya está completamente desaconsejado por su falta de cifrado, las opciones seguras más usadas hoy son FTPS SFTP y HTTPS con WebDAV o uploads directos.
Lo cierto es que SFTP sigue siendo la opción más recomendada en la mayoría de escenarios actuales. Lo bueno es que usa un único puerto (22), lo que hace muy sencilla la configuración de firewalls y NAT, y soporta autenticación con claves SSH públicas/privadas. Esto que parece algo sin importancia, elimina la necesidad de contraseñas en scripts o tareas programadas. Y por ese motivo es muy útil para transferencias automatizadas como backups entre servidores, entre otras tareas.
Tampoco podemos pasar por alto FTPS explícito, otra una buena alternativa si nuestro proveedor de hosting o software legacy solo soporta FTP/FTPS, o si necesitamos certificados X.509 para cumplir con auditorías que exigen TLS visible. Pero en este caso, sí se necesita abrir rangos de puertos para modo pasivo, lo cual complica firewalls corporativos y puede dar fallos en entornos NAT.
También hay que mencionar HTTPS con WebDAV o formularios de upload directos, que gana terreno cuando el acceso es principalmente desde navegadores o aplicaciones móviles. En este casi usa el puerto 443, que casi nunca está bloqueado y se integra fácilmente con certificados TLS existentes y permite interfaces web amigables. En términos de uso, puede ser más adecuado para compartir archivos con clientes externos.
Migrar siempre desde FTP plano es importante, priorizando SFTP para la mayoría de usos técnicos y seguros. Es decir, recurrir a FTPS debería ser algo por compatibilidad legacy, eligiend HTTPS cuando la experiencia de usuario web sea prioritaria.
