Manteniendo vivo al protocolo FTP

Audiencia: Usuarios técnicos
Nivel: Avanzado

FTPEl protocolo de transferencia de archivos – FTP – es uno de los servicios basados en TCP/IP más antiguos y utilizados del mundo. A pesar de esto, su futuro está en entredicho, debido básicamente a sus serias limitaciones en cuanto a seguridad y eficiencia en la transferencia de datos. Ya existen soluciones disponibles que brindan las mismas funcionalidades pero con un nivel de protección mayor, como es el caso de SCP, SFTP Y FTPS. Estás nuevas alternativas serán adoptadas progresivamente, de manera que los administradores de sistemas tendremos todavía por varios años que mantener vivo y respirando al venerable FTP tradicional, porque con todo y sus defectos nos sigue siendo muy útil. En este artículo explicaré algunas generalidades relacionadas con la instalación del servicio FTP y advertiré algunas complicaciones que se pueden presentar cuando dicha instalación se hace en un entorno de red moderno, en el que están involucrados cortafuegos y enmascaramiento de direcciones IP.

 

MODO DE FUNCIONAMIENTO

El protocolo FTP fue diseñado para la transferencia de archivos entre máquinas remotas, pero además de permitirnos enviar y recibir archivos hace posibles ciertas operaciones en el sistema remoto (crear directorios, borrar archivos, cambiar permisos, etc.). Una sesión FTP típica empieza con un proceso de registro o login, en el que se suministra un nombre de usuario y una contraseña. Una vez que el usuario haya sido autenticado, podrá realizar diversas operaciones relacionadas con la transferencia y administración de archivos. Al ser un protocolo basado en el estándar TELNET, los comandos y respuestas que se intercambian entre el cliente y el servidor son enviados como texto ASCII legible, lo que constituye un importante riesgo de seguridad. Para conectarse a un servidor FTP se necesita un programa cliente, que bien puede ser de línea de comandos o de modo gráfico. Este programa recibe e interpreta los comandos del usuario y los convierte en comandos FTP reales. En este punto es importante entender que una cosa son los comandos aceptados por el cliente y otro los verdaderos comandos que admite el protocolo FTP. Por ejemplo si emitimos el comando PUT manual.doc, este será entendido por nuestro programa cliente como una petición para enviar el archivo local manual.doc al directorio actual del servidor. Tras bambalinas el cliente emite un comando STOR manual.doc que es el que verdaderamente recibe el servidor.

PARTICULARIDADES DEL PROTOCOLO

FTP es un protocolo sui generis en varios aspectos: En primer lugar, utiliza dos conexiones TCP para su funcionamiento. Estas conexiones se conocen como canal de control y canal de datos. El canal de control es el que se usa para que el cliente y el servidor "dialoguen", es decir, por este canal se intercambian comandos y respuestas. Una vez que los participantes se han puesto de acuerdo por el canal de control, pasan a utilizar el canal de datos para realizar a través de él la transferencia real de la información. El hecho de que se deban abrir dos sockets TCP para una operación FTP implica que las transferencias no serán muy eficientes, sobre todo para archivos pequeños. Además, como veremos más adelante, estas dos conexiones implican varios problemas relacionados con la seguridad y la configuración de los equipos de enrutamiento que se ubiquen entre el cliente y el servidor.

FTP ACTIVO Y PASIVO

Existen dos modos de funcionamiento que pueden usarse para una sesión FTP: activo y pasivo.

MODO ACTIVO

En el modo activo sucede lo siguiente:

 

Comandos FTP

MODO PASIVO

En el modo pasivo sucede lo siguiente:

 

LOS PROBLEMAS POR ENFRENTAR

Si los hosts en Internet se comunicaran directamente entre sí, el protocolo FTP funcionaría sin mayores problemas (al menos en lo que a establecer sesiones respecta). Sin embargo, debido a la naturaleza insegura de la red mundial, en la mayoría de los casos existirá al menos un cortafuegos (firewall) entre el cliente y el servidor. Adicionalmente, ante la escasez de direcciones IP públicas, una buena porción de los clientes se conectará desde direcciones IP privadas que luego son enmascaradas (IP masquerading) por el enrutador de salida de la red LAN, lo que también se conoce como NAT varios a uno (many-to-one NAT). Para hacer más complicadas las cosas, en muchos casos el servidor mismo no posee una dirección IP pública propia, sino que se encuentra dentro de una red privada y brinda sus servicios IP al exterior mediante redireccionamiento de puertos (port forwarding).

PROBLEMAS CON EL FTP ACTIVO

El modo activo es particularmente difícil de implementar por las siguientes razones:

PROBLEMAS CON EL FTP PASIVO

Para solucionar en parte los problemas asociados con FTP activo, se agregó un nuevo modo de operación llamado pasivo, en el que tanto el canal de control como el canal de datos son abiertos del lado del cliente. Esto hace posible que los usuarios remotos puedan acceder al servicio en la mayoría de los casos, así estén detrás de dispositivos firewall/NAT, pero en contraposición crea nuevos problemas del lado del servidor:

FTP Activo y Pasivo

 

FTP Y EL MODELO OSI

Si observamos con detenimiento, el protocolo de transferencia de archivos rompe con el esquema normal del modelo OSI para interconexión de sistemas abiertos. Dentro del campo de datos de los datagramas IP, los comandos y respuestas del protocolo (PORT, PASV), que corresponden a la capa de aplicación, incluyen información sobre direcciones IP y puertos, que corresponde a la capa de red del modelo de OSI. Esto obliga a que los dispositivos de enrutamiento modernos realicen SPI stateful packet inspection (inspección completa del paquete), operación que permite detectar tráfico correspondiente al protocolo FTP y realizar al vuelo las modificaciones pertinentes en los datagramas de control para que los canales de datos de dicho protocolo puedan establecerse exitosamente.

SOLUCIONES PARA LOS PROBLEMAS

Aunque las soluciones para el establecimiento de las conexiones FTP son diferentes dependiendo del escenario, en términos generales podemos decir que el modo recomendado es el PASIVO. La razón de esto es sencilla de entender: Con el modo activo dejamos los problemas en el lado del cliente, quien muchas veces no tiene ni el conocimiento técnico ni la asesoría para detectar problemas o modificar configuraciones. En el modo pasivo en cambio centralizamos los problemas en el lado del servidor, sobre el cual si tenemos control completo. Recordemos que al fin y al cabo estamos brindando un servicio, por lo que trataremos de garantizar que el mayor número posible de usuarios pueda conectarse sin tener que realizar modificaciones especiales en sus equipos o configuraciones. Hay que en cuenta también que muchos clientes FTP, incluyendo los navegadores más populares, usan el modo pasivo por defecto, por lo que es definitivamente la mejor opción.

SOLUCIONES PARA EL MODO ACTIVO

Una vez entendidas las complicaciones del modo activo, con respecto al establecimiento de sesiones FTP, podemos plantear estas posibles soluciones:

 

SOLUCIONES PARA EL MODO PASIVO

Con el modo pasivo desaparecen las complicaciones del lado cliente, pero se abren nuevos retos para el administrador del lado servidor. Estas son algunas posibles soluciones:

 

PALABRAS FINALES

Como hemos visto en este artículo, lograr que un servicio FTP funcione sin problemas puede ser complicado cuando existen routers/firewalls entre el cliente y el servidor. Con el paso del tiempo los dispositivos de enrutamiento, es decir, enrutadores, cortafuegos y balanceadores de carga, tienden a incorporar de fábrica las capacidades para manejar sin problemas las conexiones FTP. Mientras eso pasa, los administradores de red deberán estar al tanto de los problemas potenciales que se pueden presentar e implementar la mejor solución posible para cada situación en particular.

 

Autor: Ing. Javier Eraso

Joomla SEF URLs by Artio