ftp.jpg

Como ya había comentado en la entrada Diferencias entre FTP, FTPS y SFTP.

La diferencia entre un servicio FTP down o no, radicara en entender bien los conceptos de modo activo y pasivo (motivo para una entrada exclusiva para ello)

Pues para que no cunda el pánico y se terminen jalando los pocos pelos o muchos, según sea el caso. Recordemos que el servicio FTP usa TCP para comunicarse, usa los puertos (desde ahora llamados P, para los objetivos de esta entrada ) 20 y 21 de manera default, ya depende de cada admin en variar esto y claro más si esta detrás de un firewall.

Comencemos…

FTP activo

Es el modo por defecto cuando usamos ftp, aquí se establecen dos conexiones distintas, en  primer lugar se establece una conexión para la transmisión de comandos desde cualquier
P de nuestro equipo, P > 1024 hacia el P 21 del servidor. Mediante un comando port vía  esta misma conexión, se indica al servidor cual será el puerto de nuestro equipo usara para ponerse a la escucha de datos.

La comunicación sería similar al siguiente ejemplo:

  • El P 1028  (puerto de control del cliente) se conecta al P 21 (puerto de control del servidor) y envía el número del puerto de datos, P 1030.
  • El servidor responde con un ACK (acuse de recibo ó acknowledgment) al P 1028.
  • El servidor inicia una conexión entre su P 20 (puerto de datos) y P 1030.
  • El cliente responde con un ACK al servidor.

En otras palabras, si nos disponemos a descargar un archivo, es el servidor quien inicia la transferencia de los datos, desde su P 20 al P 1030 para nuestro ejemplo o al que se le ha indicado. Es por esta razón que se le conoce como modo activo.

El inconveniente del modo activo, es que si estas detrás de un firewall, el servidor, no podrá establecer la conexión con el cliente, dado su puerto de datos aleatorio. Para  solucionar esto, existe el modo pasivo.

FTP pasivo

En este modo es siempre el cliente el quien inicia la conexión con el servidor. Al abrir una conexión ftp, se abre primeramente una conexión de control desde un P > 1024 de la máquina local al P 21 del servidor. Pasando el cliente a modo pasivo, enviando el comando pasv y pidiendo un puerto abierto al servidor. Tras recibir la respuesta, será el cliente quien establezca la conexión de datos con el servidor a través del puerto que le ha sido enviado.

  • El P 1028 se conecta al servidor al P 21 además de enviar el comando pasv.
  • El servidor responde al cliente con el P 2016, puerto aleatorio de datos, abierto para conexiones de datos.
  • El cliente inicia una conexión desde P 1029, su puerto de datos, al P 2016 del servidor.
  • El servidor envía de vuelta un ACK al P 1029  del cliente.

Resumen

En el modo activo, las conexiones son abiertas por aquel que envía los datos, puede ser el servidor, si se trata de descargar archivos a la máquina local; tanto como el cliente, si se trata de subir archivos al servidor. Mientras que en el modo pasivo las conexiones son siempre abiertas por el cliente.

En caso de que se tuviera un firewall delante, y ya que en modo activo se abre una conexión para datos desde el servidor hacia el cliente, es decir, una conexión desde fuera hacia dentro, lo que podría provocaría del lado cliente, es que éste filtrara o bloqueara la conexión entrante, al considerarlo un proceso desconocido. Mientras que en el modo pasivo, ya que el cliente es quien inicia ambas conexiones (control y datos),  el firewall no tendría  ninguna conexión entrante que filtrar o bloquear, por ser conocidas.

Espero que haya quedado claro los conceptos que he querido transmitir, y sea de ayuda como articulo de apoyo. Visiten el link de referencia citado debajo del todo, para ampliar aún más.

Hasta otros post y buena vibras lectores.

Referencias: rfc959

 

Fuente: h4ckseed

¿Quién está en línea?

Hay 24973 invitados y ningún miembro en línea