{"id":1286,"date":"2012-07-27T17:03:33","date_gmt":"2012-07-27T17:03:33","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=1286"},"modified":"2012-07-27T17:23:01","modified_gmt":"2012-07-27T17:23:01","slug":"singularidades-del-ftp-de-lo-esencial-a-lo-concreto-conexiones-activas-y-pasivas","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/singularidades-del-ftp-de-lo-esencial-a-lo-concreto-conexiones-activas-y-pasivas\/","title":{"rendered":"Singularidades del FTP, de lo esencial a lo concreto. Conexiones activas y pasivas."},"content":{"rendered":"<p style=\"text-align: justify;\">En este Post analizar\u00e9 el uso del FTP (Protocolo de transferencia de Ficheros), as\u00ed como \u00a0sus particularidades y aspectos relacionados con su funcionamiento.<\/p>\n<p style=\"text-align: justify;\">Para ello usaremos un programa libre (cliente FTP) \u00a0llamado <a href=\"http:\/\/filezilla-project.org\/\" target=\"_blank\">Filezilla<\/a>. Existen m\u00e1s, pero este es el mas destacado, con disponibilidad de versiones para Windows, Mac y Linux. Me gustar\u00eda aclarar que FTP es distinto concepto que Filezilla. Uno es el protocolo, y lo otro, es la aplicaci\u00f3n que lo emplea. Existiendo muchas mas.<\/p>\n<p style=\"text-align: justify;\">Hacer FTP es cada vez m\u00e1s empleado y conocido por los usuarios e internautas. Sin necesidad de ser un experto, gracias al programa que usa este protocolo, podemos transmitir archivos hacia Internet, generalmente desde un ordenador. El programa m\u00e1s empleado y de\u00a0car\u00e1cter\u00a0gratuito es <strong>Filezilla<\/strong>. En este <a href=\"http:\/\/filezilla-project.org\/download.php?type=client\" target=\"_blank\">enlace<\/a> podemos descargarlo.<\/p>\n<p style=\"text-align: justify;\">A continuaci\u00f3n pasar\u00e9 a analizar de lo sencillo a lo &#8220;complejo&#8221; las particularidades del FTP &#8230;<\/p>\n<p style=\"text-align: justify;\"><!--more--><\/p>\n<p style=\"text-align: justify;\">Cuando conectamos por FTP, para dejar un archivo habitualmente \u00a0en un servidor, necesitamos especificar el usuario, y la contrase\u00f1a. Adem\u00e1s es preciso saber la direcci\u00f3n de la m\u00e1quina y el puerto donde nos conectamos. En l\u00edneas generales necesitamos 4 par\u00e1metros.<\/p>\n<p>Direcci\u00f3n \u00f3 IP (n\u00famero), puerto, usuario y contrase\u00f1a.<\/p>\n<p>Ejemplo ftp.ladireccion.es, puerto numero 21, usuario: oscar, mipassword.<\/p>\n<p>Esto resume el mecanismo de acceso de forma esencial.<\/p>\n<p style=\"text-align: justify;\">Una vez ejecutado el programa, y agregado estos parametros en un sitio, podremos navegar por la estructura de directorios remota. Descargar ficheros (downloads) o subir archivos (uploads).<\/p>\n<p style=\"text-align: justify;\">La carpeta donde se encuentran las p\u00e1ginas web, si es que posee, suele ser generalmente el directorio HTML, aunque puede variar de nombre (httpdoc, web, etc). No necesariamente podemos subir paginas web, sino tambi\u00e9n ficheros que pueden no ser visibles mediante URL o usando el navegador. En muchos proveedores este otro directorio es DATA, private, etc &#8230;<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1291 aligncenter\" title=\"filezilla-ftp\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/filezilla-ftp1.jpg\" alt=\"\" width=\"540\" height=\"448\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/filezilla-ftp1.jpg 540w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/filezilla-ftp1-300x248.jpg 300w\" sizes=\"auto, (max-width: 540px) 100vw, 540px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Hasta aqu\u00ed un resumen, \u00a0m\u00e1s o menos sencillo del FTP. Veamos algo m\u00e1s de este protocolo.<\/p>\n<p style=\"text-align: justify;\"><strong>FTP<\/strong>\u00a0\u00a0es un\u00a0protocolo de red\u00a0para la\u00a0transferencia de archivos\u00a0entre sistemas conectados a una red\u00a0<strong>TCP\u00a0<\/strong>(Transmission Control Protocol), basado en la arquitectura\u00a0<a title=\"Cliente-servidor\" href=\"http:\/\/es.wikipedia.org\/wiki\/Cliente-servidor\">cliente-servidor<\/a>. Digo TCP puesto que no usa UDP. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde \u00e9l o para enviarle archivos, <strong>independientemente del sistema operativo utilizado<\/strong> en cada equipo. Este \u00faltimo aspecto otorga gran potencia a este sistema. Las trasferencias pueden ser ASCII o binarias, dependiendo del tipo de archivo con el que se va a trabajar. Aunque Filezilla detecta esta caracter\u00edstica\u00a0autom\u00e1ticamente.<\/p>\n<p style=\"text-align: justify;\">El servicio FTP es ofrecido por la capa de aplicaci\u00f3n del modelo de capas de red\u00a0<a title=\"TCP\/IP\" href=\"http:\/\/es.wikipedia.org\/wiki\/TCP\/IP\">TCP\/IP<\/a>\u00a0OSI de ISO al usuario, utilizando <strong>normalmente<\/strong> el\u00a0<a title=\"Puerto de red\" href=\"http:\/\/es.wikipedia.org\/wiki\/Puerto_de_red\">puerto de red<\/a>\u00a020 y el 21. Un problema b\u00e1sico de FTP es que est\u00e1 pensado para ofrecer la <strong>m\u00e1xima velocidad en la conexi\u00f3n, pero no la m\u00e1xima seguridad<\/strong>, ya que todo el intercambio de informaci\u00f3n, desde el login y password del usuario en el servidor hasta la transferencia de cualquier archivo, se realiza en\u00a0texto plano\u00a0<strong>sin ning\u00fan tipo de cifrado<\/strong>, con lo que un posible atacante puede capturar este tr\u00e1fico, acceder al servidor y\/o apropiarse de los archivos transferidos. No quiero asustar con esto, pero t\u00e9cnicamente es posible &#8230;<\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #800000;\">En ocasiones cuando conectamos con Filezilla a un determinado servidor, el programa no funciona adecuadamente, no es capaz de mostrar el listado de archivos. \u00a0Esto puede ser debido al tipo de conexi\u00f3n establecida, <strong>activa o pasiva<\/strong>. Veremos m\u00e1s adelante este concepto.<\/span><\/p>\n<p style=\"text-align: justify;\">Como he mencionado antes, FTP es un servicio basado exclusivamente en TCP. \u00a0No existen paquetes UDP.\u00a0Realmente FTP emplea 2 puertos, un \u00a0puerto de datos y uno de comandos, conocido este \u00faltimo como puerto de control. De forma tradicional, el puerto 21 es el de comandos, y el puerto 20 el de datos. Esto puede provocar errores, y aqui es donde entran los modos de transferencia.<\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"color: #003300;\">El modo activo o\u00a0conexi\u00f3n\u00a0activa<\/span> <\/strong>el cliente conecta desde un n\u00famero aleatorio de puerto suyo, generalmente mayor de 1023 al puerto de comandos del servidor, puerto 21. Entonces el cliente comienza a escuchar en el puerto (N+1) los datos y notifica este estado al servidor. El servidor remoto se conecta al nuevo puerto del cliente desde su puerto 20.<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/Conexione-activa.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1301 aligncenter\" title=\"Conexione-activa\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/Conexione-activa.gif\" alt=\"\" width=\"318\" height=\"294\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/Conexione-activa.gif 318w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/Conexione-activa-300x277.gif 300w\" sizes=\"auto, (max-width: 318px) 100vw, 318px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">En la conexi\u00f3n activa vemos que el servidor emplea 2 puertos, 20 y 21, y el cliente 2, creados aleatoriamente a partir del 1023 (el 1026) y uno de datos (N+1). El puerto cliente 1027 (N+1) de datos se abre cuando el servidor a trav\u00e9s del 20 de datos lo solicita. Para finalmente transmitir del 1027 al 20 los datos. No se si esta explicaci\u00f3n es compleja pero es lo que se ocurre en una conexion activa y se puede apreciar en la imagen.<\/p>\n<p style=\"text-align: justify;\">Analizando esto, el principal problema de la\u00a0conexi\u00f3n\u00a0FTP activa, surge del lado del cliente. Estas conexiones aleatorias de puertos del cliente se bloquean desde cortafuegos locales, por lo que no funcionan adecuadamente. El error generado es\u00a0error 425 Can&#8217;t open data connection.<\/p>\n<p style=\"text-align: justify;\">Resumiendo.<\/p>\n<p style=\"text-align: justify;\">Cuando el cliente FTP funciona en modo activo (tambien considerado modo normal) se establecen dos conexiones distintas. En primer lugar el cliente establece una conexi\u00f3n para la transmisi\u00f3n de comandos (desde un puerto aleatorio hacia el puerto 21 del servidor) y, por esa misma conexion, el cliente le indica al servidor otro puerto del cliente que ha abierto para poder recibir los datos.<\/p>\n<p style=\"text-align: justify;\">Entonces, si bajamos algun archivo, es el servidor el que inicia la transmisi\u00f3n de datos, desde su puerto 20 al puerto que le hemos indicado. <strong>Se llama modo activo porque la transmisi\u00f3n de datos es iniciada desde el servidor hacia el puerto que le hemos indicado en el cliente.<\/strong><\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\"><strong>El modo pasivo.<\/strong><\/span><\/p>\n<p>\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1303 aligncenter\" title=\"modo-pasivo\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/modo-pasivo.gif\" alt=\"\" width=\"358\" height=\"286\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/modo-pasivo.gif 358w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2012\/07\/modo-pasivo-300x239.gif 300w\" sizes=\"auto, (max-width: 358px) 100vw, 358px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Para resolver estas particularidades \u00a0se ha desarrollado un m\u00e9todo diferente para iniciar la conexi\u00f3n. El modo PASV.<\/p>\n<p style=\"text-align: justify;\">En modo pasivo <strong>es siempre el programa cliente el que inicia la\u00a0<\/strong><strong>conexi\u00f3n<\/strong>\u00a0con el servidor. Al abrir una conexi\u00f3n FTP se abre primero una conexi\u00f3n de control (desde un puerto aleatorio de la maquina local al puerto 21 del servidor). Al pasar el cliente a modo pasivo, el cliente pide un puerto abierto al servidor (ser\u00e1 otro puerto superior al 1024 del servidor) y recibida la contestacion, ser\u00e1 el cliente el que establezca la conexi\u00f3n de datos al servidor a traves de ese puerto.<\/p>\n<p style=\"text-align: justify;\">A modo de resumen podemos decir que en modo pasivo <strong>las conexiones son siempre abiertas por el pc cliente, mientras que en modo activo se abren por el que envia los datos<\/strong> (el servidor si se trata de bajar archivos al pc local, el cliente si se trata de subir archivos al server).<\/p>\n<p style=\"text-align: justify;\">Ventajas del modo pasivo y resumen del problema.<\/p>\n<p style=\"text-align: justify;\">Como hemos visto, en el modo activo se abre una conexi\u00f3n para datos desde el servidor a la maquina cliente, esto es, una conexi\u00f3n de fuera a dentro.<\/p>\n<p style=\"text-align: justify;\">Entonces, si la maquina cliente est\u00e1 detr\u00e1s de un router que haga NAT o que tenga un firewall, este <strong>filtra o bloquea la conexi\u00f3n entrante<\/strong>, al no serle una respuesta a ninguna petici\u00f3n conocida. As\u00ed las cosas, las transferencias por FTP fallan.<\/p>\n<p style=\"text-align: justify;\"><strong>Sin embargo, en modo pasivo es el cliente el que inicia ambas conexiones, de control y de datos, con lo cual el router no tiene ninguna conexi\u00f3n entrante que filtrar y las transferencias funcionan.<\/strong><\/p>\n<p><strong>La esencia<\/strong><\/p>\n<p style=\"text-align: justify;\">Para efectuar una conexi\u00f3n FTP es necesario establecer 2 canales de comunicaci\u00f3n: el de control y el de datos.<\/p>\n<p style=\"text-align: justify;\">Tanto la Activa como la Pasiva el canal de control se efect\u00faa de la misma forma.<\/p>\n<p style=\"text-align: justify;\">En caso de ser activa ser\u00e1 el servidor FTP quien se conecte al cliente FTP para establecer el canal de datos.<\/p>\n<p style=\"text-align: justify;\">El Modo pasivo es el cliente quien conecta con el servidor FTP para establecer el canal de datos.<\/p>\n<p style=\"text-align: justify;\">Eso es todo &#8230;<\/p>\n<p><a href=\"http:\/\/slacksite.com\/other\/ftp.html\" target=\"_blank\">http:\/\/slacksite.com\/other\/ftp.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este Post analizar\u00e9 el uso del FTP (Protocolo de transferencia de Ficheros), as\u00ed como \u00a0sus particularidades y aspectos relacionados con su funcionamiento. Para ello usaremos un programa libre (cliente FTP) \u00a0llamado Filezilla. Existen m\u00e1s, pero este es el mas destacado, con disponibilidad de versiones para Windows, Mac y Linux. Me gustar\u00eda aclarar que FTP es distinto concepto que Filezilla. Uno es el protocolo, y lo otro, es la aplicaci\u00f3n que lo emplea. Existiendo muchas mas. Hacer FTP es cada vez m\u00e1s empleado y conocido por los usuarios e internautas. Sin necesidad de ser un experto, gracias al programa que usa este protocolo, podemos transmitir archivos hacia Internet, generalmente desde un ordenador. El programa m\u00e1s empleado y de\u00a0car\u00e1cter\u00a0gratuito es Filezilla. En este enlace podemos descargarlo. A continuaci\u00f3n pasar\u00e9 a analizar de lo sencillo a lo &#8220;complejo&#8221; las particularidades del FTP &#8230;<\/p>\n","protected":false},"author":1,"featured_media":1294,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,14,24],"tags":[143,675,144],"class_list":["post-1286","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-redes","category-varios","category-web","tag-filezilla","tag-ftp","tag-internet"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/1286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=1286"}],"version-history":[{"count":22,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/1286\/revisions"}],"predecessor-version":[{"id":1309,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/1286\/revisions\/1309"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/1294"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=1286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=1286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=1286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}