Cliente FTP gratuito portable y multiplataforma (winSCP)

En las últimas entregas hemos visto cómo instalar un servidor FTP, los comandos mas útiles para trabajar con ellos cuando hay problemas y cómo conectarnos a ellos en redes hostiles haciendo uso de los comandos PORT y PASV. Hoy veremos Una herramienta de conexión gráfica que nos permite trabajar con los servidores FTP cómodamente y que hace automáticamente los comandos PORT y PASV por nosotros.

Cliente FTP gratuito (WinSCP) para Windows, Linux y Mac

Una de las mejores herramientas para trabajar con servidores FTP que soporten o no el protocolo seguro SFTP es sin duda alguna WINSCP. Es un cliente gratuito y multiplataforma, lo que segnifica que tanto si eres usuario de Windows, como de Linux o como de Mac podrás utilizarlo sin ningún problema. 
Descargamos la versión de instalación para windows aquí: http://winscp.net/download/winscp550setup.exe, en el caso de que queráis el portable o descargarlo para otra plataforma podéis elegirlo desde winscp.net. Una vez descargado comenzamos la instalación (es una instalación bastante sencilla del tipo siguiente, siguiente, siguiente….) dejamos por defecto la configuración típica de WinSCP:
cliente ftp gratuito winscp, instalación, configuración típica
En el siguiete paso vamos a escoger el modo commander (también viene seleccionado por defecto) en este modo veremos en la parte izquierda del programa nuestro ordenador y en la parte derecha el servidor FTP, lo cual nos vendrá muy bien para ver de un vistazo lo que hay en el servidor y lo que hay en nuestro PC:
Instalación WinSCP, modo commander
A mi personalmente no me gusta que los programas que tiene una utilidad me modifiquen otros programas o me instalen extensiones que no quiero utilizar a priori, así que yo os recomiendo desactivar la opción «include google chrome, along with WinSCP» y la opción de «Make google chrome my default browser»:
Instalación WinSCP, no google chrome inclusión
En el siguiente paso hacéis click en «finish» y termina la instalación. Enhorabuena, ya tienes instalada en tu máquina una de las mejores herramientas gratuitas para trabajar con servidores FTP. 

Configuración de nuestro cliente FTP winSCP

La primera vez que arrancamos nuestro cliente nos va a pedir los datos del servidor FTP al que queremos conectarnos. En nuestro caso vamos a trabajar con el servidor que hemos instalado unos días atrás, para ello tendréis que mirar vuestra IP ya que vuestro servidor funciona en local, y recordar tanto el usuario y contraseña del usuario de pruebas que creásteis:
Cliente FTP, WinSCP, creando un perfil de conexión.
Una vez puestos estos datos solo nos queda hacer click sobre el botón «Save As…» para guardar estos credenciales y no tener que ponerlos cada vez que queramos conectarnos. Justo antes de guardar la sesión os va a pedir si queréis almacenar también la contraseña. Debéis saber que al guardar la contraseña si alguien tiene acceso a vuestro PC podrá verla. Este es el motivo por el que por defecto WinSCP te recomienda no guardarla, sin embargo, nosotros la vamos a guardar, ya que en primer lugar estamos trabajando con un usuario de prueba y en segundo lugar nos va a facilitar mucho el trabajo que nuestro cliente WinSCP actúe cómo gestor de claves:
Cliente WinSCP, guardar contraseña de sesión
Una vez ya configurada la sesión en WinSCP y guardados los datos solo nos queda hacer click en «Login» para conectarnos a nuestro servidor FTP. Justo al hacer esto y si no habéis puesto ningún dato erróneo os va a aparecer una interfaz bastante sencilla e intuitiva en la cual veréis 2 partes, en la izquierda estaréis viendo los archivos y carpetas de vuestro ordenador, en la derecha veréis los archivos y carpetas a los que tenéis acceso en el servidor FTP al que os acabáis de conectar:
Cliente FTP WinSCP, interfaz commander

Analizando cómo WinSCP descarga y sube archivos a un servidor FTP

La gestión más común es la de subir archivos al servidor y bajar archivos del servidor, para esto solo debéis de arrastrar de una ventana a otra, WinSCP traducirá la orden que habéis dado al arrastrar a comandos FTP que llegarán al servidor y le darán la orden de hacer lo que habéis pedido. En nuestro ejemplo, vamos a suponer que me quiero descargar a mi escritorio el archivo del servidor FTP llamado «imagen.jpg». EL primer paso sería en la ventana de la izquierda navegar hasta mi escritorio y luego arrastrar el archivo de la parte de la derecha (servidor FTP) a la parte de la izquierda (mi PC). Vamos a ver varias opciones que tenemos a la hora de descargar el archivo:
descargar archivos FTP con WinSCP
La primera opción que os he marcado es la de «Transfer type: Binary», esto es porque WinSCP sabe que es un archivo binario, haced memoria o revisad la entrega de comandos FTP para recordar que había 2 formas de transferir fichros, en binario y en modo texto. Esta la primera tarea que WinSCP ha hecho por vostros, activar el modo correcto para este archivo. La segunda opción que os remarco es: «Transfer on background (add to transfer queue)». Nosotros no la vamos a marcar puesto que para descargar un archivo será muy rápido y nos da igual hacerlo en primer plano o en segundo plano. Tenéis que saber que si empezáis una descarga en primer plano no podréis hacer nada más hasta que no finalice la descarga. Así que si váis a descargar archivos pesados os recomiendo marcar la opcíon de «background» para poder seguir trabajando en el servidor mientras descargáis vuestro archivo.

Si nos vamos al log del servidor FTP (que es Filezilla en nuestro caso) podremos ver los comandos que se han utilizado para realizar la descarga, que son justo los que  nosotros habríamos tenido que escribir:
 

 test (192.168.255.128)> PWD
 test (192.168.255.128)> 257 «/» is current directory.
test (192.168.255.128)> TYPE I
test (192.168.255.128)> 200 Type set to I
test (192.168.255.128)> PASV
test (192.168.255.128)> 227 Entering Passive Mode (192,168,255,128,4,139)
test (192.168.255.128)> RETR imagen.jpg
test (192.168.255.128)> 150 Connection accepted
test (192.168.255.128)> 226 Transfer OK

El primero (PWD) se ha hecho para saber WinSCP en que directorio se encuentra, y el servidor ha contestado que se encuentra en la carpeta de entrada, también denominada raiz (/). Luego ha hecho uso del comando (TYPE I) que es un comando que tiene la misma función que «Binary» y lo que hace es establecer el modo binario para descargar un archivo, el servidor contesta con «200 Type set to I» que quiere decir que se ha establecido el modo binario sin ningún tipo de problemas. Acto seguido WinSCP ha activado el modo pasivo mediante el comando (PASV). Recordemos que este comando se utiliza para indicar al servidor que nos abra un puerto para nosotros establecer un canal secundario para descargar un archivo. Al hacer la petición con el comando PASV, el servidor nos responde con «227 Entering Passive Mode (192,168,255,128,4,139)» Lo cual significa que nos ha aceptado el PASV y está esperando la conexión del canal secundario en la IP 192.168.255.128, en el puerto 1163. ¿Recuerdas cómo se calculaba este puerto? (4*256=1024 + 1391163). Después WinSCP ha hecho uso del comando (RETR imagen.jpg) que es igual que el comando GET, se ha creado el canal secundario y se ha descargado el archivo.
Todo esto es lo que ha hecho por ti la herramienta WinSCP cuando tu has arrastrado el archivo.

Ahora pasamos a ver cómo actúa WinSCP cuando pedimos que suba un archivo al servidor. Para nosotros el proceso es idéntico al de descargar un archivo solo que en lugar de pasar un archivo desde la ventana de la derecha a la ventana de la izquierda, ahora pasamos el archivo de la ventana de la izquierda (nuestro PC) a la de la derecha (servidor FTP). El archivo se subirá y si miramos el log del servidor veremos una secuencia muy parecida a la anterior:

test (192.168.255.128)> TYPE I
test (192.168.255.128)> 200 Type set to I
test (192.168.255.128)> PASV
test (192.168.255.128)> 227 Entering Passive Mode (192,168,255,128,4,166)
test (192.168.255.128)> STOR imagenNueva.jpg
test (192.168.255.128)> 150 Connection accepted
test (192.168.255.128)> 226 Transfer OK

Vuelve a poner el modo binario con el comando (TYPE I), el servidor acepta el modo al dar como respuesta «200 Type set to I». Vuelve a establecer el modo pasivo con el comando «PASV» esta vez vemos que el puerto es diferente, y esto se debe a que cada vez que nosotros pedimos establecer un canal secundario el servidor elegirá uno al azar de su lista de puertos que nosotros le hayamos asigando para este tipo de canales secundarios. Un buen administrador de redes, elegirá unos cuantos puertos para soportar el modo pasivo de su servidor FTP y los «mapeará en su router» (cosa que veremos en próximas entregas de curso hacker) para redireccionarlos a su servidor FTP. De este modo se asegurará que cuando alguien pida al servidor establecer el modo pasivo el servidor FTP escoga un puerto al cual el cliente sea capaz de llegar. Finalmente WinSCP utiliza el comando «STOR imagenNueva.jpg» que es similar a «PUT imagenNueva.jpg» y con ello sube la imagen al servidor haciendo uso del canal secundario de forma totalmente transparente para el usuario.

Problemas usuales subiendo o descargando archivos

Otros clientes FTP menos avanzados que WinSCP no son capaces de trabajar de forma correcta en el modo pasivo y modo activo, esto se traduce en que la conexión se quedará pillada y jamás podrán llegar a establecerse estos modos, es en estos casos cuando analizar lo que está haciendo nuestro cliente FTP nos puede ayudar a solventar el problema y corregir nosotros de forma manual los fallos. Para esto es fundamental conocer el funcionamiento de estos servidores y sus comandos básicos y avanzados. Pero también se puede dar el caso de que un mal administrador tenga mal configurado su servidor FTP de forma que ocurra este escenario:

Escenario problemático cliente conexión FTP

Describiendolo un poco, vemos que nostros estamos en una red de área local y tenemos 3 entidades, nuestro router que tiene 2 ips (la interna 192.168.1.1 y la pública 80.58.68.14), nuestro PC con IP 192.168.1.2 y nuestro smartphone que está conectado por wifi y el router le ha dado la IP 192.168.1.3. Por otro lado el servidor FTP se encuentra en una oficina en una red distinta a la nuestra, tiene un router con 2 ips, la pública y la privada igual que nosotros y da la casualidad de que el servidor FTP tiene en su red interna la IP 192.168.1.3. 
En este caso nosotros para conectarnos al servidor FTP lo hemos tenido que hacer conectándonos a su IP pública (81.25.98.21), en realidad nosotros nos hemos intentado conectar a su router, que es quien tiene asiganda la IP pública al puerto 21 (puerto estándar de los servidores FTP) y el router nos ha redireccionado la conexión a su host con dirección IP interna 192.168.1.3. Imaginad ahora que nosotros o WinSCP hace uso del comando PASV y el servidor FTP diera una respuesta tal que así:
227 Entering Passive Mode (192,168,1,3,4,139)
Si esto ocurriera nosotros lanzaríamos al petición de conexión para abrir un canal secundario a la IP 192.168.1.3 al puerto 1163. ¿Pero qué ocurre? Pues que lo que estamos haciendo es intentando crear un canal secundario con un host dentro de nuestra red local, en concreto con el host dentro de nuestra red local con IP 192.168.1.3 que resulta ser nuestro smartphone, que lógicamente rechazará dicha conexión y JAMÁS llegaríamos a establecer el canal secundario. Para más inri, podría darse el caso de que nuestro smartphone fuera de mala calidad y se quedara pillado al no saber cómo actuar ante una petición de este estilo y como consecuencia nos habríamos «cargado» nuestro smartphone hasta nuevo reinicio. Entendiendo lo que hemos visto hasta ahora podríamos rápidamente darnos cuetna del problema que estamos teniendo e intentar buscar una solución ya sea mediante PORT o contactando con el administrador de dicho servidor. 

La respuesta correcta que debería dar el servidor FTP es:
227 Entering Passive Mode (81,25,98,21,4,139)
La cual estaría indicando que tenemos que conectarnos a su IP pública para poder establecer el canal secundario. Este problema que hemos descrito anteriormente ha sido el causante de muchos quebraderos de cabeza de gente que no sabía porqué su servidor FTP conectaba pero no le dejaba descargar ni subir nigún tipo de archivos. Os invitamos a seguir indagando, a que instaléis vuestro servidor FTP en una máquina y os conectéis desde otra con WinSCP para ver cómo produciendo las secuencias de comandos, analizarlas e intentar reproducirlas desde la línea de comandos para tener un dominio completo desde la CMD.

Continua leyendo

This Post Has One Comment

Deja una respuesta

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

Newsletter Signup

Suscríbete a nuestra lista si te interesa recibir turcos exclusivos sobre hacking y seguridad informática