Conceptos básicos sobre el Servicio FTP

 
 

Índice General

  1. El Servicio FTP
  2. El Protocolo FTP
  3. Tipos de acceso
  4. Conexiones y modos
  5. Cortafuegos y encaminadores/NATP
  6. Tipos de transferencia de archivos
  7. Seguridad
  8. Protocolo FXP
  9. El Servicio TFTP

Referencias externas
 

  1. El Servicio FTP (Volver al índice General)
    FTP es un protocolo de la capa de aplicación en los modelos OSI y TCP/IP, diseñado para ofrecer un servicio estándar de transferencia de ficheros entre sistemas conectados a redes TCP/IP.
    Diagrama de los modelos TCP/IP y OSI
    Diagrama de los modelos TCP/IP y OSI
    • Características (Volver al índice General)
      A pesar de que FTP en el año 2017 cumplió 46 años, aún se sigue utilizando en Internet y en redes internas. Por medio de FTP podemos:

      1. Listar directorios y archivos en sistemas remotos.
      2. Transferir archivos desde y hacia el sistema remoto, es decir, subir o bajar archivos.
      3. Realizar otras acciones en el sistema remoto como renombrar, borrar, crear archivos y directorios, cambiar permisos, descromprimir, etc.

       
      Su funcionamiento se basa en la arquitectura cliente/servidor:

      • Cliente FTP: Establecen conexiones con los servidores FTP y nos permiten subir o descargar archivos hacia o desde el servidor FTP. Existen múltiples clientes FTP. Según el interfaz de usuario pueden ser:
        • Clientes en línea de comandos: Este tipo de cliente se integra en casi todos sistemas operativos y se invoca desde la interfaz de línea de comandos (CLI: Command-Line Interface), con la orden ftp servidor donde servidor se corresponde con el nombre de máquina o IP del servidor FTP.
        • Clientes gráficos: Ofrecen al usuario una interfaz gráfica que facilita el establecimiento de conexiones con los servidores y la transferencia o envío de archivos. Algunos de los más utilizados son: Filezilla client, gFTP, CuteFTP, WinSCP, etc.
        • Los Navegadores/Exploradores: Los navegadores como Firefox, Internet Explorer, Safari, Google Chrome, etc, y los exploradores de archivos como Nautilus, Dolphin, Explorer, etc, pueden actuar como clientes FTP. Para utilizarlos hay que indicar en la dirección que se va a utilizar el protocolo FTP.
          El formato para la dirección sería el siguiente: ftp://[usuario][:password]@servidor
          Algunos ejemplos: ftp://ftp.zeppelinux.es, ftp://usuario@192.168.1.10.
          Son clientes FTP limitados pero sencillos de usar.
      •  

      • Servidor FTP: Controlan las conexiones de los clientes FTP y en función de los privilegios definidos, permiten la descarga o subida de archivos. Ofrecen múltiples opciones de configuración para establecer privilegios de los usuarios, limites de subida y descarga, tiempos de conexión y espera, etc.
        Probablemente los servidores mas utilizados y conocidos sean los siguientes:

     

  2. El Protocolo FTP (Volver al índice General)
    El protocolo FTP es el conjunto de normas y reglas mediante las cuales los clientes y servidores FTP dialogan. La comunicación entre ellos se basa en el envío de mensajes de texto que contienen comandos y respuestas. El protocolo FTP utiliza TCP como protocolo de transporte.
  3.  

  4. Tipos de acceso (Volver al índice General)
    Los servidores FTP, dependiendo de su configuración, permiten dos tipos de acceso desde los clientes FTP:

    1. Acceso anónimo: el cliente FTP se conecta con un usuario especial cuyo nombre estándar es anonymous o ftp. Por norma general, el usuario anónimo, salvo que el administrador del servidor FTP decida otra cosa, solo puede descargar archivos y su acceso está limitado a un directorio especial del servidor. Está enjaulado (chroot) o confinado en ese directorio especial.
       
      Puedes visitar el enlace al artículo Instalación y configuración del Servidor FTP vsftpd en Linux Debian, publicado con anterioridad en ZeppelinuX para e ver la configuración de usuarios anónimos.
    2.  

    3. Acceso autorizado: el cliente FTP se conecta con un usuario existente en el servidor. Este usuario puede ser:
      • Un usuario del sistema operativo (Usuarios locales) donde está instalado el servidor FTP.
      • Un usuario virtual, creado para el acceso por FTP. Sus credenciales pueden estar almacenadas en una base de datos, en un servicio de directorio (LDAP), en un fichero de texto, etc.

       
      El usuario una vez autenticado accede a un directorio del servidor en el que puede estar o no enjaulado (chroot). Además, el administrador del servidor FTP asignará los privilegios que tendrá cada usuario, como pueden ser: descargar, subir, eliminar, limitar el espacio, acceso a determinados directorios, limitar la velocidad, etc.

    4.  
      Puedes visitar el enlace al artículo Instalación y configuración del Servidor FTP vsftpd en Linux Debian, publicado con anterioridad en ZeppelinuX para e ver la configuración de usuarios locales.

  5.  

  6. Conexiones y modos (Volver al índice General)
    FTP se basa en TCP y utiliza varias conexiones y puertos.

    • Conexión de control y conexiones de datos (Volver al índice General)
      Los servidores FTP y los clientes FTP establecen conexiones TCP, unas para control y otras para la transferencia de datos.

      1. Conexión de control: El cliente FTP establece una conexión con el servidor FTP para dialogar con él. Envía comandos de listar (ls), descarga (get), subida (put), etc, y recibe respuestas de los servidores informando como atienden las peticiones. La conexión de control está activa hasta que el usuario cierra la sesión o hasta que el servidor la finaliza porque caduca el tiempo de espera por inactividad. Los servidores pueden atender múltiples conexiones de control simultáneamente, tantas como permita la configuración del servidor. Por la conexión de control nunca se envían datos.
      2. Conexión de datos: Cuando el cliente FTP solicita una transferencia de información se crea una conexión de datos, que se cerrará al finalizar la transferencia. Asociada a una conexión de control pueden existir múltiples conexiones de datos simultaneas, tantas como transferencias simultáneas y hasta un máximo establecido en la configuración del servidor. Por las conexiones de datos nunca se envían comandos de control.

       
      En principio, los servidores FTP utilizan el puerto 21/TCP para atender las conexiones de control y el puerto 20/TCP para las conexiones de datos, pero debido a que los servidores pueden trabajar en los modos activo o pasivo, no siempre usan el puerto 20/TCP para las conexiones de datos.
      Los clientes FTP, para iniciar o atender conexiones, no utilizan puertos bien conocidos, siempre utilizan puertos superiores al 1023.

    • Modos (Volver al índice General)
      Los clientes FTP pueden conectarse a los servidores FTP de dos formas distintas, en modo activo y en modo pasivo.

      • Modo activo (Volver al índice General)
        Es el modo nativo del servicio FTP.
        Diagrama modo activo FTP
        Diagrama modo activo FTP
        1. El cliente establece una conexión de control con el servidor:
        1. Abre el puerto local 4000 (puerto superior al 1023).
        2. Establece una conexión con el puerto 21/TCP del servidor FTP.
      • El cliente solicita, por ejemplo, una transferencia de archivo:
        1. El cliente envía el comando PORT al servidor indicándole su dirección IP y un número de puerto que abrirá para usar en la conexión de datos, en este ejemplo, el puerto 4001 (puerto superior al 1023).
        2. El servidor FTP inicia una conexión TCP desde su puerto 20 hacia el puerto 4001.
        3. Se utiliza la conexión de datos para realizar la transferencia de información.

 
En este modo, es el servidor FTP el que inicia las conexiones de datos y obliga al cliente a abrir puertos para atender dichas conexiones. Por lo tanto, el equipo en el que se ejecuta el cliente FTP, tiene que aceptar conexiones a puertos superiores al 1023 que pueden comprometer la seguridad del equipo. Además, hay que tener las siguiente consideraciones con los cortafuegos y encaminadores/NATP:

  • Los cortafuegos instalados tanto en el equipo donde se encuentra instalado el cliente FTP como en la red a la que pertenece, denegarán estas conexiones aleatorias para prevenir ataques.
  • Si el equipo donde está instalado el cliente FTP está detrás de un encaminador/NATP, este denegará las conexiones iniciadas desde el exterior por el servidor FTP a los puertos que abre el cliente. Es habitual que los equipos que pertenecen a una red privada que se conecta a Internet, lo hagan a través de un encaminador/NATP.
  • Actualmente, cortafuegos y NATP implementan FTP ALG (Application Level Gateway). Es una técnica que:
    • Analiza las conexiones FTP y se fija en los comandos PORT para registrar la IP privada y el puerto que abre el cliente FTP para aceptar conexiones de datos.
    • Modifica el comando PORT para que llegue al servidor FTP con la IP externa y el puerto del equipo que hace NATP.
    • Cuando el servidor FTP inicia la conexión de datos a la IP externa y al puerto del equipo que hace de NATP, este redirige la conexión a la IP privada y puerto del cliente FTP.

    Por lo tango, si un NATP implementa ALG, los clientes de la red interna podrán iniciar conexiones FTP utilizando el modo activo.

Para solventar el problema de que sea el servidor FTP el que inicia las conexiones de datos, se desarrolló el modo pasivo.

  • Modo pasivo (Volver al índice General)
    En el modo pasivo es siempre el cliente FTP el que inicia las conexiones con el servidor FTP, tanto las de control como las de datos. El puerto 20/TCP del servidor no se utiliza.
    Diagrama modo pasivo FTP
    Diagrama modo pasivo FTP
    1. El cliente establece una conexión de control con el servidor:
    1. Abre el puerto local 4000 (puerto superior al 1023).
    2. Establece una conexión con el puerto 21/TCP del servidor FTP.
  • Cuando, por ejemplo, se solicita una transferencia de archivos:
    1. El cliente envía el comando PASV para activar el modo pasivo. Como respuesta a este comando, el servidor FTP envía un número de puerto que tenga disponible, por ejemplo el 5000.
    2. El cliente FTP inicia una conexión TCP, abre un puerto local superior al 1023, por ejemplo el 4001, hacia el puerto que le envió el servidor FTP (en nuestro ejemplo es el 5000).
    3. Se utiliza la conexión de datos para realizar la transferencia de información.

     
    El modo pasivo evita el problema de seguridad de que el cliente FTP tenga que aceptar conexiones en puertos mayores a 1023 pero traslada este problema de seguridad al servidor FTP. La máquina donde se ejecuta el servidor FTP tiene que aceptar conexiones en múltiples puertos y esto es una amenaza para la seguridad del equipo. Además, hay que tener las siguiente consideraciones con los cortafuegos y encaminadores/NATP:

    • Los cortafuegos actuales permiten realizar un seguimiento de las conexiones pasivas de datos, comprobando que el cliente que solicita la conexión al puerto especificado por el servidor se corresponde con el cliente al que se le indicó ese puerto y que por tanto la conexión se establece para el envío o recepción de datos.
    • Si el servidor FTP está detrás de un NATP hay que:
    • Configurar en el servidor FTP la IP externa que usa el NATP y un rango de puertos para aceptar conexiones de datos.
    • Redirigir el rango de puertos del encaminador que hace NATP al equipo donde está el servidor FTP.

     
    Puedes visitar el enlace al artículo Instalación y configuración del Servidor FTP vsftpd en Linux Debian, publicado con anterioridad en ZeppelinuX para e ver la configuración de conexiones y modos.

     
     

  • Cortafuegos y encaminadores/NATP (Volver al índice General)
    En función de lo visto hasta ahora en lo relativo a, cortafuegos, encaminadores/NATP y los modos activo y pasivo podemos hacer la siguiente clasificación:

    • Cliente FTP:
    • Conexión modo activo:
    • El cortafuegos instalado en el equipo cliente tiene que permitir conexiones TCP salientes hacia el puerto 21 y conexiones TCP entrantes a puertos mayores que 1023 desde el puerto 20.
    • Si el cliente está detrás de un cortafuegos de red y/o un encaminador/NATP:
    • Si el NATP no implementa FTP ALG: Filtrará las conexiones TCP iniciadas desde el exterior por los servidores FTP a puertos mayores que 1023 del cliente FTP.
    • Si el NATP implementa FTP ALG: Los clientes FTP podrán usar el modo activo porque se permitirán conexiones entrantes a puertos mayores que 1023.
  • Conexión modo pasivo: Los cortafuegos existentes tienen que permitir conexiones TCP salientes hacia el puerto 21 y hacia puertos mayores que 1023.
  •  

  • Servidor FTP:
    • Acepta conexiones modo activo:
    • Los cortafuegos existentes tienen que permitir conexiones TCP entrantes al puerto 21 del Servidor.
    • Los cortafuegos existentes tienen que permitir conexiones TCP salientes desde el puerto 20 del servidor hacia puertos mayores que 1023.
  • Acepta conexiones modo pasivo:
    • El cortafuegos instalado en el servidor FTP tiene que permitir conexiones TCP entrantes hacia el puerto 21 y conexiones TCP entrantes a puertos mayores que 1023. Es recomendable que el cortafuegos haga un seguimiento de las conexiones pasivas de datos, comprobando que el cliente que solicita la conexión al puerto especificado por el servidor se corresponde con el cliente al que se le indicó ese puerto.
    • Si el servidor está detrás de un cortafuegos de red y/o encaminador NATP:
    • Los cortafuegos de red tienen que permitir las conexiones TCP entrantes al puerto 21.
    • Hay que redirigir el puerto 21 del encaminador NATP al puerto 21 del servidor FTP.
    • Se tiene que configurar en el servidor FTP la IP externa del NATP y un rango de puertos para aceptar conexiones de datos.
    • Los cortafuegos de red deben permitir las conexiones TCP entrantes hacia los puertos definidos en el rango.
    • Hay que redirigir el rango de puertos del encaminador NATP al servidor FTP.

     
    El modo activo facilita la configuración y la administración del servidor FTP pero genera un problema de seguridad a los clientes y problemas de acceso si están detrás de un cortafuegos y/o encaminador NATP.

    El modo pasivo, por el contrario, implica una configuración más compleja en el servidor FTP y traslada el problema de seguridad al servidor FTP.
     

  • Tipos de transferencia de archivos (Volver al índice General)
    En el protocolo FTP existen dos modos de transferir archivos, ASCII y binario.

    • Modo ASCII (type ascii): Se transmite byte a byte. Óptimo para archivos de texto como .txt, .html, etc.
    • Modo binario (type bin): se transmite bit a bit. Óptimo para archivos que no son de texto como archivos multimedia, ejecutables, etc.

     
    Podemos definir en que modo transmitimos los archivos desde el cliente FTP. La mayoría de clientes ofrecen, además, el modo automático, este modo detecta el tipo de archivo y establece el tipo de transferencia adecuada.

  •  

  • Seguridad (Volver al índice General)

    • Protocolo no seguro (Volver al índice General)
      De forma nativa, el protocolo FTP no es seguro. Fue diseñado para ofrecer velocidad pero no seguridad. Implementa mecanismos de autenticación de usuarios para determinar los privilegios de acceso y transferencia en el servidor FTP, pero no garantiza:

      • La autenticidad. Que los equipos implicados en la conexión son quienes dicen ser. Es vulnerable a ataques de suplantación de identidad (spoofing).
      • La confidencialidad. El intercambio de información, tanto el usuario y la password como la transferencia de cualquier dato, se realiza en texto plano, sin cifrar. Es vulnerable a ataques de análisis de tráfico de red (sniffing).

       
      A pesar que de forma nativa, FTP no es un protocolo seguro, existen mecanismos para asegurar las conexiones entre clientes y servidores FTP como son; FTPS o enviar el protocolo FTP a través de un túnel SSH.
      A continuación hablaremos de FTPS y alternativas seguras a FTP como es SFTP (SSH File Transfer Protocol).

    • FTPS o FTP/SSL (Volver al índice General)
      FTPS se encarga de encapsular FTP sobre SSL (Secure Sockets Layer) o TLS (Transport Layer Security) para encriptar el intercambio de información. Gracias a algorítmos criptográficos y certificados digitales se puede garantizar la confidencialidad y la integridad de la información transmitida, así como la autenticidad de los equipos implicados en la conexión.
      Existen dos modos para implementar FTPS: FTPS Explícito (FTPES) y FTPS Implícito.

      • FTPS Implícito (Volver al índice General)
        • El cliente establece una conexión de control y se establece la conexión SSL/TLS.
        • Si el servidor no soporta FTPS se cierra la conexión.
        • Todas las comunicaciones, conexión de control y conexiones de datos, son cifradas.
        • El cliente y el servidor no negocian.
        • Para mantener la compatibilidad con los clientes FTP que no soporten SSL/TLS se utilizan otros puertos para atender las peticiones FTPS. Como puertos estándar se usan el 990/TCP para control y el 989/TCP para datos.
      • FTPS Explícito (FTPES) (Volver al índice General)
        • El cliente establece una conexión de control al puerto 21, solicita explicitamente que la comunicación sea segura enviando el comando AUTH SSL o AUTH TLS y si el servidor lo soporta se establece una conexión SSL o TLS basada en algorítmos criptográficos y certificados digitales.
        • Si el servidor no soporta FTPS se le ofrece al cliente la posibilidad de usar FTP no seguro.
        • El cliente y servidor pueden negociar que parte de las comunicaciones, conexión de control o conexiones de datos, serán cifradas.
        • Es el método recomendado porque permite un mayor control sobre la comunicación.
      •  
        No hay que confundir FTPS con SFTP (SSH File Transfer Protocol) que es un protocolo de transferencia de ficheros basado en SSH, ni con Secure FTP que se trata de enviar el protocolo FTP a través de un túnel SSH.

        Puedes visitar el enlace al artículo Instalación y configuración del Servidor FTP vsftpd en Linux Debian, publicado con anterioridad en ZeppelinuX para e ver la configuración de FTPS Explícito sobre TLS.

      • SFTP/SCP, alternativas seguras a FTP (Volver al índice General)
        SSH (Secure Shell) es un protocolo de la capa de aplicación diseñado para ofrecer acceso a terminales de equipos remotos. Basado en el modelo cliente/servidor. El cliente SSH establece conexiones a terminales del equipo donde está instalado el servidor SSH. Los servidores SSH usan el puerto 22/TCP como puerto estándar.
        SSH ofrece autenticación, confidencialidad e integridad.

        • Se autentican los dos extremos de la conexión: El servidor se autentica ante el cliente con una clave y el cliente se autentica ante el servidor.
        • Se cifran los datos transmitodos: Los nombres de usuario y contraseñas y toda la información transmitida viajan cifrados.

         
        SSH, además, integra mecanismos para la transferencia de ficheros, garantizando también la autenticación, confidencialidad e integridad. Estos mecanismos son SFTP (SSH File Transfer Protocol) y SCP (Secure Copy Protocol).

        • SFTP:
        • Permite la transferencia de ficheros entre sistemas remotos.
        • Permite listar archivos y directorios del servidor.
        • Permite realizar funciones adicionales en el servidor como renombrar, borrar, crear archivos y carpetas, cambiar permisos, descomprimir, etc.
      • SCP:
      • Permite copiar ficheros entre sistemas remotos
      • Algunos cliente SCP gráficos añaden funcionalidades como listar, borrar, etc. Estos no son clientes SCP puros.
  •  

  • Protocolo FXP (Volver al índice General)
    FXP (File eXchange Protocol) es un protocolo de transferencia de datos directa entre servidores FTP.
    Un cliente FTP con soporte para FXP establece la conexión entre servidores FTP. Es decir, el cliente utiliza su ancho de banda solo para establecer la conexión inicial entre los servidores FTP, no para transferir archivos, esto último se hace directamente entre los servidores. Para que sea posible, los servidores tienen que permitirlo.
    Diagrama Protocolo FXP
    Diagrama Protocolo FXP
  •  

  • El Servicio TFTP (Volver al índice General)
    TFTP (Trivial File Transfer Protocol) es un protocolo de la capa de aplicación para la transferencia de archivos de forma simple y rápida. Basado en el modelo cliente/servidor, existen clientes TFTP y servidores TFTP. Sus característica principales son:

    • TFTP utiliza UDP como protocolo de transporte. Los servidores TFTP escuchan por el puerto 69/UDP como puerto estándar. UDP no garantiza la integridad de la información transmitida pero la velocidad de transferencia es mayor que en FTP.
    • No existe mecanismo de autenticación o cifrado.

     
    Es un servicio utilizado principalmente por dispositivos de red o equipos para cargar o hacer copias de seguridad del sistema operativo, archivos de configuración, etc.
    CISCO sigue usando TFTP para las copias de seguridad de archivos de configuración y cargar nuevas versiones del sistema operativo en sus dispositivos.

  •  
    Referencias externas

    • Servicios de Red e Internet.
      Autores: Álvaro García Sánchez, Luis Enamorado Sarmiento y Javier Sanz Rodríguez.
      Editorial: Garceta.
      ISBN: 978 84 9281 285

     

    Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
      Configuración de privacidad y de cookies.
    Seguir J. Carlos:

    Técnico Informático - Desarrollo Web - Administración de Redes

    Técnico Informático. Desarrollo Web. Administración de redes.

    Últimas publicaciones de

    Deja una respuesta

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

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.