La transferencia de ficheros es un proceso fundamental en las redes informáticas, ya que permite el intercambio de datos entre diferentes dispositivos conectados. En un entorno de red, los usuarios y sistemas necesitan mover archivos de un lugar a otro, ya sea para compartir información, realizar copias de seguridad o mantener sistemas sincronizados.
Para facilitar este intercambio, existen varios protocolos de comunicación que permiten transferir archivos de manera eficiente y segura. Uno de los protocolos más utilizados para la transferencia de ficheros en redes TCP/IP es el File Transfer Protocol (FTP).
FTP es un protocolo de red estándar utilizado para la transferencia de archivos entre un cliente y un servidor a través de una red, generalmente Internet. FTP se basa en el modelo cliente-servidor, donde el cliente FTP envía comandos para interactuar con el servidor FTP, permitiendo así la descarga y subida de archivos de forma bidireccional.
FTP se diseñó inicialmente en 1971 y ha sido uno de los métodos más confiables para la transferencia de ficheros en Internet, aunque en sus primeras versiones no se implementaba ninguna encriptación de los datos, lo que plantea problemas de seguridad.
El funcionamiento de FTP se basa en una conexión de dos canales entre el cliente y el servidor:
Además de la transferencia de archivos, FTP permite realizar operaciones sobre el sistema de archivos del servidor, como listar directorios, crear nuevos directorios o borrar archivos. A pesar de ser muy utilizado, FTP transmite los datos, incluidas las credenciales de acceso (usuario y contraseña), en texto plano, lo que representa un riesgo de seguridad. Para contrarrestar esto, existen variantes más seguras como FTPS y SFTP, que utilizan encriptación
El protocolo FTP utiliza dos tipos de conexiones principales: el modo activo y el modo pasivo. Ambos se diferencian en cómo se establece la conexión para la transferencia de datos, mientras que la conexión de control (por el puerto 21 del servidor) se mantiene igual.
En el modo activo, el cliente inicia la comunicación abriendo una conexión al puerto 21 del servidor. A través de esta conexión, el cliente envía comandos y recibe respuestas del servidor. Cuando el cliente necesita transferir datos, ya sea para descargar un archivo, subirlo o listar un directorio, le indica al servidor que abra una conexión de datos.
El cliente informa al servidor qué puerto local tiene abierto para recibir la conexión de datos. El servidor entonces establece una conexión activa desde su puerto 20 hacia el puerto especificado en el cliente.
Este modo requiere que el cliente esté disponible para aceptar conexiones entrantes, lo cual puede ser un problema si está detrás de un firewall o un router con NAT, ya que estas configuraciones suelen bloquear conexiones externas.
En el modo pasivo, el cliente inicia la comunicación abriendo una conexión al puerto 21 del servidor. Este canal se utiliza para enviar comandos y recibir respuestas. Cuando el cliente necesita transferir datos, solicita al servidor que entre en modo pasivo mediante el comando PASV.
En respuesta, el servidor abre un puerto aleatorio para la transferencia de datos y le informa al cliente qué puerto está escuchando. El cliente, entonces, inicia una conexión a ese puerto para transferir los datos.
Este modo es útil cuando el cliente está detrás de un firewall o un router con NAT, ya que evita la necesidad de aceptar conexiones entrantes.
FTP cuenta con varias variantes diseñadas para cubrir diferentes necesidades, especialmente en cuanto a seguridad:
FTP estándar
El protocolo original no incluye mecanismos de encriptación. Todas las comunicaciones, incluidas las credenciales, se transmiten en texto plano, lo que lo hace vulnerable a ataques como el sniffing. Aunque su uso ha disminuido por razones de seguridad, sigue siendo útil en redes cerradas o entornos controlados.
FTPS (FTP Secure)
Añade cifrado mediante SSL/TLS para proteger las credenciales y los datos durante la transferencia. Se basa en los mismos comandos que el FTP estándar, pero con encriptación.
SFTP (SSH File Transfer Protocol)
Basado en el protocolo SSH, utiliza un único canal cifrado para comandos y datos, proporcionando seguridad y autenticación robusta. Aunque comparte funciones similares con FTP, es un protocolo diferente que no requiere múltiples conexiones y resulta más eficiente y seguro en la mayoría de los casos.
Para interactuar con servidores FTP, se utilizan clientes que permiten realizar conexiones, enviar comandos y transferir archivos. Estos clientes pueden clasificarse en dos tipos principales:
Clientes de terminal
La mayoría de los sistemas operativos incluyen un cliente FTP básico que permite conectarse a servidores y realizar operaciones mediante comandos:
Si el cliente no está disponible en el sistema, puede instalarse desde los repositorios o configurarse con herramientas adicionales. Estas herramientas resultan especialmente útiles en entornos minimalistas o de administración remota.
Clientes con interfaz gráfica
Para quienes prefieren una experiencia visual, aplicaciones como Filezilla ofrecen una interfaz intuitiva. Estas aplicaciones simplifican las transferencias de archivos mediante características como:
El uso de clientes gráficos es ideal para usuarios no técnicos o cuando se trabaja con una gran cantidad de archivos y directorios.
Para probar la conexión a un servidor FTP, utilizaremos el servicio gratuito proporcionado por dlptest.com, que permite realizar pruebas de transferencia. Las credenciales necesarias para la conexión están disponibles en la propia página web.
Terminal
Abre una terminal y escribe el siguiente comando:
ftp ftp.dlptest.com
Cuando se conecte, deberías ver un mensaje de bienvenida del servidor y la opción de ingresar el usuario y la contraseña:
Conectado a ftp.dlptest.com. 220 Welcome to the DLP Test FTP Server 200 Always in UTF8 mode. Usuario (ftp.dlptest.com:(none)): dlpuser 331 Please specify the password. Contraseña:
Una vez autenticado, la terminal cambiará a modo interactivo FTP (ftp>).
FileZilla
Abre Filezilla y configura una nueva conexión:
Haz clic en Conexión rápida. Una vez conectado, podrás explorar los directorios y transferir archivos mediante la interfaz gráfica.
Una vez estamos conectados al servidor FTP podemos ejecutar una serie de comandos. Para saber el listado disponible podemos ejecutar el comando help:
ftp> help Los comandos se pueden abreviar. Comandos: ! delete literal prompt send ? debug ls put status append dir mdelete pwd trace ascii disconnect mdir quit type bell get mget quote user binary glob mkdir recv verbose bye hash mls remotehelp cd help mput rename close lcd open rmdir ftp>
Algunos de los más utilizados son:
Comando | Descripción |
---|---|
open | Conecta al servidor FTP especificado. |
close | Cierra la conexión con el servidor FTP. |
!expresión | Ejecuta un comando del sistema local (en la terminal). |
quit | Cierra la sesión FTP y sale del cliente. |
ls | Lista los archivos y directorios en el directorio actual. |
cd | Cambia al directorio especificado. |
mkdir | Crea un nuevo directorio en el servidor FTP. |
delete | Elimina un archivo del servidor FTP. |
rename | Renombra un archivo en el servidor FTP. |
get | Descarga un archivo del servidor al cliente. |
put | Sube un archivo desde el cliente al servidor FTP. |
pwd | Muestra el directorio actual en el servidor FTP. |
Ejercicio 1
Ejercicio 2
Haz el ejercicio anterior usando FileZilla pero no elimines el archivo ni el directorio
Ejercicio 3
Intenta subir un archivo desde un cliente FTP en terminal (como ftp o lftp) al directorio creado en el ejercicio 2 ¿Por qué no te deja?
Ejercicio 4
Ejercicio 5