Saltar a contenido

2. Servidores y clientes FTP

Actualmente hay muchas aplicaciones que implementan el protocolo FTP tanto por el lado del cliente como por el lado del servidor.

La decisión de utilizar una aplicación u otra que implemente el protocolo FTP viene dada por las posibilidades que ofrece y el sistema operativo en uso. En el caso del despliegue de aplicaciones web, cualquier servidor o cliente FTP se ajusta a las necesidades del despliegue web.

Servidores FTP

Algunos de los servidores FTP populares en este momento son vsFTPd, ProFTPD, Pure-FTPd, y FileZilla Server, entre otros. La elección del servidor FTP adecuado dependerá de las necesidades específicas, como la seguridad, la facilidad de configuración, la compatibilidad con tu sistema, el soporte de protocolos, y otras consideraciones.

Servidor vsFTPd

vsftpd

En esta unidad usaremos el servidor FTP llamado vsFTPd (Very Secure FTP Daemon). Es un software utilizado para implementar servidores de archivos a través del protocolo FTP en sistemas Linux.

vsFTPd se distingue principalmente porque sus valores predeterminados son muy seguros y por su sencillez en la configuración, comparado con otras alternativas como Pure-ftpd, ProFTPD y Wu-ftpd también para sistemas Linux.

Actualmente se presume que vsFTPd podría ser quizá el servidor FTP más seguro del mundo.

A continuación, se enumeran algunas de las características destacadas de vsFTPd:

  • Seguridad: vsFTPd se enfoca en la seguridad y se esfuerza por ser uno de los servidores FTP más seguros disponibles. Ofrece soporte para FTPS (FTP sobre SSL/TLS) y puede cifrar las comunicaciones entre el cliente y el servidor.
  • Modo Pasivo y Activo: Admite tanto el modo pasivo como el modo activo para las conexiones de transferencia de datos.
  • Aislamiento de Usuarios: Permite el aislamiento de usuarios para que cada usuario acceda a su propio directorio raíz de forma predeterminada, lo que mejora la seguridad.
  • Control de Acceso y Permisos: Proporciona opciones avanzadas para controlar el acceso de usuarios y administrar permisos en los archivos y directorios.
  • Logging Avanzado: Ofrece un sistema de registro (logging) completo que registra actividades y eventos del servidor para facilitar el seguimiento y la solución de problemas.
  • Rendimiento: Es conocido por su eficiencia y su bajo consumo de recursos, lo que lo hace adecuado para servidores con una alta carga.
  • Modo Anónimo: Admite el acceso de usuarios anónimos y ofrece opciones de configuración para controlar qué puede hacer un usuario anónimo en el servidor.
  • Reglas de Firewall Integradas: vsFTPd incluye funcionalidades de cortafuegos incorporadas para ayudar a los administradores a configurar reglas de firewall específicas.
  • Soporte IPv6: Es compatible con IPv6, lo que facilita la transición a protocolos de red modernos.
  • Funciones Avanzadas de PAM: Utiliza Pluggable Authentication Modules (PAM) para una mayor flexibilidad en la autenticación de usuarios.
  • Funciones de Virtual Hosting: Permite a un servidor vsFTPd alojar varios sitios web FTP en una sola instancia.
  • Tolerancia a Errores y Recuperación: Ofrece capacidades de recuperación y tolerancia a errores para garantizar un servicio FTP continuo.
  • Configuración Detallada: Proporciona numerosas opciones de configuración avanzada para personalizar el comportamiento del servidor según las necesidades del administrador.
  • Gran Comunidad de Usuarios: vsFTPd tiene una gran comunidad de usuarios y es ampliamente documentado, lo que facilita la obtención de soporte y recursos en línea.

En resumen, vsFTPd se ha ganado su reputación como un servidor FTP muy seguro debido a su enfoque en la seguridad y su conjunto de características de seguridad avanzadas. Sin embargo, es importante destacar que la seguridad de un servidor depende no solo del software del servidor en sí, sino también de la configuración y el mantenimiento adecuados del servidor y de las prácticas de seguridad en todo el entorno en el que opera.

Clientes FTP

Un cliente FTP (File Transfer Protocol) es una aplicación de software que se utiliza para conectarse a servidores FTP y realizar operaciones de transferencia de archivos entre el cliente y el servidor. Los clientes FTP permiten a los usuarios:

  • Conexión a Servidores FTP: Los clientes FTP se utilizan para establecer conexiones con servidores FTP a través de Internet o redes locales.
  • Autenticación: Los usuarios pueden iniciar sesión en el servidor FTP proporcionando su nombre de usuario y contraseña. Algunos clientes FTP también admiten autenticación anónima para acceder como usuario anónimo si el servidor lo permite.
  • Transferencia de Archivos: Descargar archivos desde el servidor al cliente: Los usuarios pueden descargar archivos o directorios completos del servidor a su propia computadora local. Cargar archivos desde el cliente al servidor: Los usuarios pueden cargar archivos desde su computadora local al servidor FTP para su almacenamiento o distribución.
  • Navegación por Directorios: Los clientes FTP permiten a los usuarios navegar por la estructura de directorios en el servidor, lo que les permite acceder a diferentes archivos y carpetas.
  • Renombrar y Eliminar Archivos: Los usuarios pueden renombrar archivos en el servidor, eliminar archivos no deseados y realizar operaciones de administración de archivos.
  • Gestión de Permisos: Algunos clientes FTP permiten cambiar los permisos de archivos y directorios en el servidor si se tiene el permiso adecuado.
  • Gestión de Sesiones: Los clientes FTP gestionan sesiones de transferencia de archivos, lo que facilita la transferencia de múltiples archivos de forma eficiente.
  • Seguridad: Los clientes FTP pueden ofrecer funciones de seguridad, como FTPS (FTP sobre SSL/TLS) o SFTP (SSH File Transfer Protocol) para cifrar las comunicaciones entre el cliente y el servidor.
  • Registro de Actividad: Algunos clientes FTP registran las actividades realizadas durante la sesión, lo que facilita la solución de problemas y la auditoría.
  • Configuración de Opciones: Los usuarios pueden configurar diversas opciones, como la gestión de contraseñas, la elección entre modos activos y pasivos, y otros ajustes específicos del cliente.

En resumen, un cliente FTP es una herramienta que facilita a los usuarios la transferencia de archivos entre la computadora y un servidor FTP. Puede ser útil en una variedad de escenarios, como la administración de sitios web, la copia de archivos de respaldo, la distribución de software y la colaboración en línea.

Por defecto la mayoría de sistemas operativos llevan un cliente FTP gráfico o terminal, para poder acceder remotamente a los servidores externos.

Herramientas gráficas

Existen numerosos clientes FTP gráficos (clientes FTP con interfaces de usuario basadas en ventanas y gráficos) disponibles para diferentes sistemas operativos que facilitan la transferencia de archivos mediante FTP, SFTP y otros protocolos relacionados. A continuación, te presento una lista de algunos de los clientes FTP gráficos populares para distintas plataformas:

Clientes FTP para Windows:

  • FileZilla: es uno de los clientes FTP más populares y ampliamente utilizados. Ofrece una interfaz fácil de usar, es de código abierto y es compatible con FTP, FTPS y SFTP. También está disponible en MacOS y Linux.
  • WinSCP: es un cliente SFTP y SCP gratuito para Windows. Además de la transferencia de archivos segura, también permite la administración de archivos en servidores remotos.
  • Core FTP: es un cliente FTP con una interfaz gráfica atractiva y muchas características útiles. Ofrece soporte para FTP, FTPS y SFTP.
  • Cyberduck: Aunque inicialmente se diseñó para macOS, Cyberduck también está disponible para Windows. Es un cliente FTP/SFTP de código abierto con una interfaz fácil de usar.

Clientes FTP para macOS:

  • Cyberduck: es una opción popular tanto para macOS como para Windows. Ofrece una interfaz intuitiva y es compatible con una variedad de protocolos, incluyendo FTP, SFTP, WebDAV y más.
  • Transmit: es un cliente FTP y SFTP exclusivo para macOS con una interfaz pulida. Ofrece características avanzadas y herramientas de administración de archivos.
  • Fetch: es un cliente FTP para macOS, conocido por su simplicidad y facilidad de uso. Ofrece soporte para FTP, SFTP y FTP con seguridad.

Clientes FTP para Linux:

  • FileZilla: Aunque se desarrolló inicialmente para Windows, también está disponible para Linux. Es uno de los clientes FTP más populares y es compatible con FTP, FTPS y SFTP.
  • gFTP: es un cliente FTP de código abierto para sistemas Linux. Ofrece una interfaz gráfica sencilla y soporta FTP, SFTP y HTTP.
  • KDE Konqueror: El navegador de archivos Konqueror en el entorno de escritorio KDE de Linux incluye funciones de cliente FTP. Puedes usarlo para acceder a servidores FTP de manera sencilla.

Comandos Básicos FTP

Los comandos FTP son instrucciones que un cliente FTP emite al servidor FTP para realizar diversas operaciones, como conectarse al servidor, listar directorios, cargar y descargar archivos, cambiar permisos y más.

Si usamos un cliente gráfico podemos no necesitar conocerlos, ya que el cliente los usará de forma transparente para nosotros. Pero si usamos una conexión por comando deberemos conocerlos en detalle.

Estos son algunos comandos FTP comunes junto con ejemplos de uso:

Conexión al Servidor FTP:

  • open o open [hostname]: Establece una conexión con un servidor FTP. Ejemplo: open ftp.example.com
  • user [nombre de usuario] [contraseña]: Inicia sesión en el servidor FTP. Ejemplo: user myuser mypassword

Operaciones de Archivos y Directorio:

Verás que son igual que los comandos de linux para funciones equivalentes.

  • cd [directorio]: Cambia el directorio en el servidor FTP. Ejemplo: cd public_html
  • pwd: Muestra el directorio de trabajo actual en el servidor. Ejemplo: pwd
  • ls o dir: Lista los archivos y directorios en el directorio actual en el servidor. Ejemplo: ls
  • ls -l [archivo]: Algunos servidores FTP pueden admitir el comando ls -l para mostrar los permisos de un archivo o directorio. Ejemplo: ls -l myfile.txt
  • chmod [permisos] [archivo]: Cambia los permisos de un archivo en el servidor FTP. Ejemplo: chmod 644 myfile.txt
  • delete [archivo]: Elimina un archivo en el servidor FTP. Ejemplo: delete unwanted.txt
  • rmdir [directorio]: Elimina un directorio vacío en el servidor. Ejemplo: rmdir old_directory
  • rmd [directorio]: Elimina un directorio y su contenido de forma recursiva en el servidor FTP. No todos los servidores FTP admiten este comando. Ejemplo: rmd old_directory
  • mkdir [directorio]: Crea un nuevo directorio en el servidor. Ejemplo: mkdir new_directory
  • rename [nombre original] [nuevo nombre]: Cambia el nombre de un archivo o directorio en el servidor FTP. Ejemplo: rename oldfile.txt newfile.txt

Transferencia de Archivos:

  • get [archivo remoto] [archivo local]: Descarga un archivo del servidor FTP al sistema local. Ejemplo: get example.txt
  • put [archivo local] [archivo remoto]: Carga un archivo desde el sistema local al servidor FTP. Ejemplo: put localfile.txt remotefile.txt

Modo Activo y Pasivo:

  • PASV:Este comando es enviado por el cliente al servidor FTP para solicitar que el servidor cambie a modo pasivo y abra un puerto para la conexión de datos.
  • PORT: cuando te conectas a un servidor FTP en modo activo, puedes utilizar el comando PORT para especificar el puerto en el cual el cliente estará escuchando para la conexión de datos.

Ayuda y Salida:

  • help o ?: Muestra la lista de comandos FTP disponibles. Ejemplo: help
  • quit: Cierra la sesión FTP y sale del cliente. Ejemplo: quit

Hay que tener en cuenta que la disponibilidad de comandos y su sintaxis puede variar según el servidor FTP y la implementación.

Además, es importante recordar que FTP no es un protocolo seguro, ya que las credenciales y los datos se transmiten sin cifrar.

Warning

Si se requiere seguridad, se recomienda utilizar FTPS (FTP con SSL/TLS) o SFTP (SSH File Transfer Protocol), que cifran las comunicaciones y proporcionan un nivel adicional de seguridad.