Contents:

  • Introduction
  • The Basics
  • Active FTP
  • Active FTP Example
  • Passive FTP
  • Passive FTP Example
  • Other Notes
  • Summary
  • Appendix 1: Configuration of Common FTP Servers
  • Apéndice 2: Guía de configuración del cortafuegos

introducción

una de las preguntas más comunes cuando se trata de cortafuegos y otros problemas de conectividad a Internet es la diferencia entre FTP activo y pasivo y la mejor manera de soportar uno o ambos de ellos., Esperemos que el siguiente texto ayude a aclarar algo de theconfusion sobre cómo soportar FTP en un entorno cortafuegos.

esta puede no ser la explicación definitiva, como afirma el título, sin embargo, he escuchado suficientes comentarios y he visto este documento enlazado en suficientes lugares para saber que muchas personas lo han encontrado útil. Sin embargo, siempre Estoy buscando maneras de mejorar las cosas, y si encuentra algo que no está muy claro o necesita más explicación, ¡hágamelo saber!, Las adiciones recientes a este documento incluyen ejemplos de sesiones FTP de línea de comandos activas y pasivas. Estos ejemplos de sesiones deberían ayudar a aclarar un poco las cosas. También proporcionan una buena imagen de lo que sucede detrás de las escenas durante una sesión FTP. Ahora, a la información…

lo básico

FTP es un servicio basado exclusivamente en TCP. No hay ningún componente UDP toFTP. FTP es un servicio inusual en que utiliza dos puertos, un puerto de ‘datos’ y un puerto de ‘comando’ (también conocido como el puerto de control)., Tradicionalmente, estos son el puerto 21 para el puerto de comando y el puerto 20 para el puerto de datos. La confusión comienza sin embargo, cuando encontramos que dependiendo del modo, el puerto de datos no siempre está en el puerto 20.

Active FTP

en modo activo FTP el cliente se conecta desde un puerto aleatorio sin privilegios (n > 1023) al puerto de comandos del servidor FTP, el puerto 21. Luego, el cliente comienza a escuchar el puerto N + 1 y envía el comando FTP PORTN+1 al servidor FTP., El servidor se conectará de nuevo al puerto de datos especificado por el cliente desde su puerto de datos local, que es el puerto 20.,21 a puertos > 1023 (el servidor responde al puerto de control del cliente)

  • puerto 20 del servidor FTP a puertos > 1023 (el servidor inicia la conexión de datos al puerto de datos del cliente)
  • puerto 20 del servidor FTP desde puertos > 1023 (el cliente envía el puerto de datos de Acks toserver)
  • cuando se dibuja, la conexión aparece de la siguiente manera:

    en el paso 1, el puerto de comandos del cliente el comando portand envía el comando

    PORT 1027., El servidor luego envía anACK de vuelta al puerto de comandos del cliente en el paso 2. En el paso 3, el servidor inicia una conexión en su puerto de datos local con el puerto de datos especificado anteriormente por el cliente. Finalmente, el cliente envía un ACK de vuelta como se muestra en el paso 4.

    el principal problema con el modo activo FTP en realidad cae en el lado del cliente. El cliente FTP no hace la conexión real al puerto de datos del servidor simply simplemente le dice al servidor en qué puerto está escuchando y el servidor se conecta de nuevo al puerto especificado en el cliente., Desde el firewall del lado cliente, esto parece ser un sistema externo que inicia una conexión con un cliente interno, algo que generalmente está bloqueado.

    ejemplo de FTP activo

    a continuación se muestra un ejemplo real de una sesión FTP activa. Las únicas cosas que se han cambiado son los nombres de servidor, las direcciones IP y los nombres de usuario. En este ejemplo se inicia una sesión FTP desde testbox1.slacksite.com (192.168.150.80), una caja linux que ejecuta el cliente de línea de comandos FTP estándar, para testbox2.slacksite.com (192.168.150.90), una caja linux que ejecuta ProFTPd 1.2.2rc2., La bandera de depuración (-d) se usa con el cliente FTP para mostrar lo que está sucediendo detrás de escena. Todo en rojo es la salida de depuración que muestra los comandos FTP reales que se envían al servidor y las respuestas generadas a partir de esos comandos. La salida normal del servidor se muestra en negro y la entrada del usuario en negrita.

    hay algunas cosas interesantes a considerar sobre este diálogo. Observe que cuando se emite el comando PORT, especifica un puerto en el sistema cliente (192.168.150.80), en lugar del servidor., Veremos el comportamiento opuesto cuando usemos FTP pasivo. Mientras estamos en el tema, una nota rápida sobre el formato del comando PORT. Como puede ver en el siguiente ejemplo, está formateado como una serie de seis números separados por comas. Los primeros cuatro octetos son la dirección IP, mientras que los últimos dos octetos comprenden el puerto que se utilizará para la conexión de datos. Para encontrar el Puerto Real, multiplique el quinto octeto por 256 y luego agregue el sexto octeto al total. Por lo tanto, en el ejemplo a continuación, el número de puerto es ( (14*256) + 178), o 3762., Una comprobación rápida con netstat debería confirmar esta información.

    FTP pasivo

    para resolver el problema de que el servidor inicie la conexión con el cliente, se desarrolló un método diferente para las conexiones FTP. Esto se conoce como modo pasivo, o PASV, después del comando utilizado por el cliente para decirle al servidor que está en modo pasivo.

    en modo pasivo FTP el cliente inicia ambas conexiones al servidor, resolviendo el problema de los firewalls filtrando los datos entrantes portconnection al cliente desde el servidor., Al abrir una conexión FTP, el cliente abre dos puertos aleatorios sin privilegios localmente (N > 1023 andN + 1). El primer puerto se pone en contacto con el servidor en el puerto 21, pero en lugar de emitir un comando PORT y permitir que el servidor se conecte a su puerto de datos, el cliente emitirá el comando PASV. El resultado de esto es que el servidor abre un puerto randomunprivileged (p > 1023) y envía P de vuelta al cliente en respuesta al comando PASV., A continuación, el cliente inicia la conexión desde el puerto+1 al puerto P del servidor para transferir datos.,puerto de control del cliente)

  • puertos del servidor FTP > 1023 desde cualquier lugar (el cliente inicia la conexión de datos al puerto aleatorio especificado por el servidor)
  • puertos del servidor FTP > 1023 a puertos remotos > 1023 (Server sendsacks (and data) to CLIENT’s data port)
  • cuando se dibuja, una conexión FTP de modo pasivo se ve así:

    en el paso 1, el cliente se pone en contacto con el servidor en el puerto de comandos y emite el comandoPASV., El servidor entonces responde en el paso 2 conPORT 2024, diciéndole al cliente qué puerto está escuchando para la conexión de datos. En el paso 3, el cliente inicia la conexión de datos desde su puerto de datos al puerto de datos del servidor especificado. Finalmente, el servidor devuelve un ACK en el paso 4 al puerto de datos del cliente.

    mientras que el modo pasivo FTP resuelve muchos de los problemas desde el lado del cliente, abre una amplia gama de problemas en el lado del servidor. El biggestissue es la necesidad de permitir cualquier conexión remota a puertos numerados altos en el servidor., Afortunadamente, muchos demonios FTP, incluyendo el popular Wu-ftpd permiten al administrador especificar un rango de puertos que el servidor FTP utilizará. Véase el Apéndice 1 para más información.

    el segundo problema implica el soporte y la solución de problemas de los clientes que admiten (o no) el modo pasivo. Por ejemplo, la utilidad FTP de línea command proporcionada con Solaris no es compatible con passivemode, lo que requiere un cliente FTP de terceros, como ncftp.
    Nota: Este ya no es el caso use utilice la opción -p con el cliente FTP Solaris para activar el modo pasivo!,

    con la enorme popularidad de la World Wide Web, muchas personas prefieren utilizar su navegador web como un cliente FTP. La mayoría de los navegadores solo admiten el modo masivo cuando acceden a URL ftp://. Esto puede ser bueno o malo dependiendo de lo que los servidores y firewalls están configurados para soportar.

    ejemplo de FTP pasivo

    a continuación se muestra un ejemplo real de una sesión FTP pasiva. Las únicas cosas que se han cambiado son los nombres de servidor, las direcciones IP y los nombres de usuario. En este ejemplo se inicia una sesión FTP desde testbox1.slacksite.com (192.168.150.,80), una caja linux que ejecuta el cliente de línea de comandos FTP estándar, para testbox2.slacksite.com (192.168.150.90), una caja linux que ejecuta ProFTPd 1.2.2rc2. La bandera de depuración (-d) se usa con el cliente FTP para mostrar lo que está sucediendo detrás de escena. Todo en rojo es la salida de depuración que muestra los comandos FTP reales que se envían al servidor y las respuestas generadas a partir de esos comandos. La salida normal del servidor se muestra en negro y la entrada del usuario en negrita.,

    observe la diferencia en el comando PORT en este ejemplo en comparación con el ejemplo de FTP activo. Aquí, vemos un puerto abierto en el sistema servidor (192.168.150.90), en lugar del cliente. Consulte la discusión sobre el formato del comando PORT anterior, en la sección Ejemplo de FTP activo.,

    otras notas

    Un lector, Maarten Sjouw, señaló que active FTP no funcionará cuando se use junto con un dispositivo NAT (Network Address Translation) del lado del cliente que no es lo suficientemente inteligente como para alterar la información de la dirección IP en los paquetes FTP.

    resumen

    la siguiente tabla debería ayudar a los administradores a recordar cómo funciona cada modo FTP:

     Active FTP : command : client >1023 -> server 21 data : client >1023 1023 -> server 21 data : client >1024 -> server >1023

    Un resumen rápido de los pros y los contras de FTP activo vs.pasivo también está en orden:

    Active FTP es beneficioso para el administrador del servidor FTP, pero perjudicial para el administrador del lado del cliente., El servidor FTP intenta hacer conexiones a puertos altos aleatorios en el cliente, que casi seguramente serían bloqueados por un firewall en el lado del cliente. El FTP pasivo es beneficioso para el cliente, pero perjudicial para el administrador del servidor FTP. El cliente hará ambas conexiones al servidor, pero una de ellas será a un puerto alto Aleatorio, que casi con certeza sería bloqueado por un firewall en el lado del servidor.

    afortunadamente, hay algo de compromiso., Dado que los administradores que ejecutan servidores FTP necesitarán hacer que sus servidores sean accesibles al mayor número de clientes, es casi seguro que necesitarán admitir FTP pasivo. La exposición de los puertos de alto nivel en el servidor se puede minimizar especificando un rango de puertos limitado para que el servidor FTP lo use. Por lo tanto, todo excepto este rango de puertos puede ser cortafuegos en el lado del servidor. Si bien esto no elimina todo el riesgo para el servidor, lo disminuye enormemente. Véase el Apéndice 1 para más información.,

    una excelente referencia sobre cómo funcionan varios protocolos de internet y los problemas involucrados en el cortafuegos se puede encontrar en el libro O’Reilly andasociates, Building Internet Firewalls, 2nd Ed, por BrentChapman y Elizabeth Zwicky.nota 2012: este libro es muy antiguo y la información contenida en él puede ser anticuado!

    Deja una respuesta

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