Protocolo/ Servidor FTP
FTP (File Transfer Protocol, ‘Protocolo de Transferencia de Archivos’), es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP, basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en cada equipo.
El servicio FTP es ofrecido por la capa de aplicación del modelo de capas de red TCP/IP al usuario, utilizando normalmente el puerto de red 20 y el 21. El puerto 20 es el utilizado para el flujo de datos entre el cliente y el servidor y el puerto 21 para el flujo de control, es decir, para enviar las órdenes del cliente al servidor. Mientras se transfieren datos a través del flujo de datos, el flujo de control permanece a la espera. Esto puede causar problemas en el caso de transferencias de datos muy grandes realizadas a través de cortafuegos que interrumpan sesiones después de periodos largos de espera. El fichero puede que se haya transferido con éxito, pero el cortafuegos puede desconectar la sesión de control, por lo que se genera un error.
Otro de los problema básico del FTP es que está pensado para ofrecer la máxima velocidad en la conexión, pero no la máxima seguridad, ya que todo el intercambio de información, desde el login y password del usuario en el servidor hasta la transferencia de cualquier archivo, se realiza en texto plano sin ningún tipo de cifrado, con lo que un posible atacante puede capturar este tráfico, acceder al servidor y/o apropiarse de los archivos transferidos.
Para solucionar este problema son de gran utilidad aplicaciones como scp y sftp, incluidas en el paquete SSH, que permiten transferir archivos pero cifrando todo el tráfico.
Cliente FTP
Un cliente FTP emplea el protocolo FTP para conectarse a un servidor FTP para transferir archivos.
Algunos clientes de FTP básicos vienen integrados en los sistemas operativos, incluyendo Windows, DOS, Linux, Mac OS y Unix. Sin embargo, hay disponibles clientes con más funcionalidades, Habitualmente en forma shareware/freeware para windows y como software libre para sistemas tipo Unix. Muchos navegadores recientes también llevan integrados clientes FTP (aunque un cliente FTP trabajará mejor para FTP privados que un navegador).
Para poder conectarnos a un servidor FTP necesitaremos algunos datos básicos como son, la ip o dominio, el puerto que utiliza, normalmente y por defecto el 21, y por ultimo, necesitaremos el usuario y la contraseña, hay varios tipos de usuario:
-Usuario anonymous
Si un servidor posee servicio ‘FTP anonymous’ solamente con teclear la palabra «anonymous», cuando pregunte por tu usuario tendrás acceso a ese FTP. No se necesita ninguna contraseña preestablecida.
Solamente con eso se consigue acceso a los archivos del FTP, aunque con menos privilegios que un usuario normal. Normalmente solo podrás leer y copiar los archivos que sean públicos, así indicados por el administrador del servidor al que nos queramos conectar.
Normalmente, se utiliza un servidor FTP anónimo para depositar grandes archivos que no tienen utilidad si no son transferidos a la máquina del usuario, como por ejemplo las imágenes de los sistemas de software libre. Los servidores FTP anónimos ofrecen sus servicios libremente a todos los usuarios, permiten acceder a sus archivos sin necesidad de tener una cuenta de usuario.
– Acceso con cuenta de usuario
Otro forma de autenticarse para acceder a los servidores FTP, es usando una cuenta de usuario, esto generalmente se usa, si se desea tener privilegios de acceso a cualquier parte del sistema de archivos del servidor FTP, de modificación de archivos existentes, y la posibilidad de subir nuestros propios archivos, generalmente se suele realizar mediante una cuenta de usuario. En el servidor se guarda la información de las distintas cuentas de usuario que pueden acceder a él, de manera que para iniciar una sesión FTP debemos introducir una autenticación y una contraseña que nos identifica unívocamente.
-Acceso de invitado
El acceso sin restricciones al servidor que proporcionan las cuentas de usuario implica problemas de seguridad, lo que ha dado lugar a un tercer tipo de acceso FTP denominado invitado (guest), que se puede contemplar como una mezcla de los dos anteriores.
La idea de este mecanismo es la siguiente: se trata de permitir que cada usuario conecte a la máquina mediante su login y su password, pero evitando que tenga acceso a partes del sistema de archivos que no necesita para realizar su trabajo, de esta forma accederá a un entorno restringido, algo muy similar a lo que sucede en los accesos anónimos, pero con más privilegios.
Otro metodo que podemos utilizar para conectarnos a un servidor FTP es usando un «cliente FTP basado en Web» no es más que un cliente FTP al cual podemos acceder a través de nuestro navegador web sin necesidad de tener otra aplicación para ello. El usuario accede a un servidor web (HTTP) que lista los contenidos de un servidor FTP. El usuario se conecta mediante HTTP a un servidor web, y el servidor web se conecta mediante FTP al servidor FTP. El servidor web actúa de intermediario haciendo pasar la información desde el servidor FTP en los puertos 20 y 21 hacia el puerto 80 HTTP que ve el usuario.
Esto se utiliza debido a que siempre hay momentos en que nos encontramos fuera de casa, no llevamos el ordenador portátil encima y necesitamos realizar alguna tarea urgente desde un ordenador de acceso público, de un amigo, del trabajo, la universidad, etc. Lo más común es que no estén instaladas las aplicaciones que necesitamos y en muchos casos hasta carecemos de los permisos necesarios para realizar su instalación. Otras veces estamos detrás de un proxy o cortafuegos que no nos permite acceder a servidores FTP externos. Con este tipo de cliente podremos crear, copiar, renombrar y eliminar archivos y directorios, cambiar permisos, editar, ver, subir y descargar archivos, así como cualquier otra función del protocolo FTP que el servidor FTP remoto permita.
Modos de conexión del cliente FTP
FTP admite 2 modos de conexión del cliente. Estos modos se denominan activo y pasivo. Tanto en el modo Activo como en el modo Pasivo, el cliente establece una conexión con el servidor mediante el puerto 21, que establece el canal de control.
-Modo activo
En modo Activo, el servidor siempre crea el canal de datos en su puerto 20, mientras que en el lado del cliente el canal de datos se asocia a un puerto aleatorio mayor que el 1024. Para ello, el cliente manda un comando PORT al servidor por el canal de control indicándole ese número de puerto, de manera que el servidor pueda abrirle una conexión de datos por donde se transferirán los archivos y los listados, en el puerto especificado.
Lo anterior tiene un grave problema de seguridad, y es que la máquina cliente debe estar dispuesta a aceptar cualquier conexión de entrada en un puerto superior al 1024, con los problemas que ello implica si tenemos el equipo conectado a una red insegura como Internet. De hecho, los cortafuegos que se instalen en el equipo para evitar ataques seguramente rechazarán esas conexiones aleatorias. Para solucionar esto se desarrolló el modo pasivo.
-Modo pasivo
Cuando el cliente envía un comando PASV sobre el canal de control, el servidor FTP le indica por el canal de control, el puerto (mayor a 1023 del servidor. Ej:2040) al que debe conectarse el cliente. El cliente inicia una conexión desde el puerto siguiente al puerto de control (ej: 1036) hacia el puerto del servidor especificado anteriormente (ej: 2040).1
Antes de cada nueva transferencia tanto en el modo Activo como en el Pasivo, el cliente debe enviar otra vez un comando de control (PORT o PASV, según el modo en el que haya conectado), y el servidor recibirá esa conexión de datos en un nuevo puerto aleatorio (si está en modo pasivo) o por el puerto 20 (si está en modo activo). En el protocolo FTP existen 5 tipos de transferencia en ASCII y en binarios.
¿Para qué se usa? Ejemplos prácticos
Pero normalmente se llama a un FTP al directorio donde alguien tiene unos archivos a disposición de los demás. Ejemplos de FTPs:
– El directorio del servidor donde está alojada tu página Web. Te conectas al servidor FTP del hospedador de la Web y subes los archivos de tu Web.
– Un directorio público de descarga. Las Webs tienen a veces alojados sus archivos de descarga en el servidor FTP. Lo normal en estos es acceder a través del link que pone la Web directo al archivo, pero en realidad este archivo esta en un FTP.
– Un FTP particular de cualquiera de nosotros que lo que hace es meter mp3, programas, divx, full albums… para compartir con la gente o bien intercambiar. Es parecido a cuando en programas como Kazaa, Napster, WinMX, emule, eDonkey.
Comandos básicos
Comandos de control de acceso
Comando | Definición |
USER | Identifica al usuario |
PASS | Suministra una contraseña |
ACCT | Suministra una cuenta |
REIN | Reinicializa el estado de sesión |
QUIT /BYE | Desconecta la sesión |
ABOR | Aborta el comando anterior y la transferencia |
Comandos de gestión de archivos y directorios
Comando | Definición |
CWD | Cambia a otro directorio del servidor |
CDUP | Cambia al directorio padre |
DELE | Borra un archivo |
LIST | Lista la información de archivos |
MKD | Crea un directorio |
NLST | Lista de archivos de un directorio |
PWD | Imprime el nombre del directorio de trabajo |
RMD | Elimina un directorio |
RNFR | Identifica un archivo para cambiarlo de nombre |
RNTO | Cambia de nombre un archivo |
SMNT | Monta un sistema de archivos diferente |
Comandos que definen el tipo, la estructura y el modo
Comando | Definición |
TYPE | Identifica el tipo de datos y, opcionalmente, el formato de impresión, si existe, para la transferencia |
STRU | Organización del archivo |
MODE | Formato de transmisión |
Comandos que realizan la Transferencia de Archivos
Comando | Definición |
ALLO | Reserva espacio suficiente para los datos que siguen |
APPE | Añade un archivo local a uno remoto |
PASV | Pide al servidor que identifique una dirección de IP y un puerto para que el cliente inicie una conexión de datos |
PORT | Identifica una dirección de red y un puerto para que el servidor inicie una conexión de datos |
REST | Identifica un marcador de reinicio seguido del comando de transferencia que hay que reiniciar |
RETR | Recupera un archivo |
STOR | Guarda un archivo |
STOU | Crea una versión de un archivo con un nombre único |
Otros comandos de información de usuario
Comando | Definición |
HELP | Devuelve información sobre la implementación del servidor |
NOOP | Pide al servidor que responda OK |
SITE | Usado para subcomandos específicos del servidor que no forman parte del estándar pero se pueden necesitar para ese servidor |
SYST | Pide al servidor que identifique sus sistema operativo |
STAT | Solicite información sobre los parámetros y estado de la conexión |
FUENTES
http://www.principiantes.info/util/introduccion_a_ftp.php
http://es.wikipedia.org/wiki/File_Transfer_Protocol
http://www.desarrolloweb.com/articulos/2287.php
syconet.wordpress.com is licensed under a Creative Commons Reconocimiento-CompartirIgual 3.0 Unported License.