EL PROTOCOLO FTP
INDICE
INTRODUCCIÓN ARQUITECTURA DEL FTP COMANDOS FTP RESPUESTAS FTP SERVIDORES Y CLIENTES FTP FTP SEGURO: FTP SSH Y FTP SSL
Introducción Una de las primeras aplicaciones básicas desarrolladas en el entorno de lo que luego sería la red Internet fue la transferencia de ficheros entre diferentes sistemas. Al principio de los años setenta ya se elaboraron las primeras especificaciones del protocolo más utilizado para esta finalidad, el FTP.
La especificación oficial del protocolo se publicó en 1985 en el documento RFC 959.
http://www.ietf.org/rfc/rfc959.txt
Introducción. Objetivos El protocolo FTP define la manera en que los datos deben ser transferidos a través de una red TCP/IP.
Los objetivos del protocolo FTP son:
permitir la interoperabilidad entre sistemas muy diferentes, escondiendo los detalles de la estructura interna de los sistemas de archivos locales
permitir que equipos remotos puedan compartir archivos
permitir la independencia entre los sistemas de archivo del equipo del cliente y del equipo del servidor
permitir una transferencia de datos eficaz (rápida y fiable)
Introducción Este protocolo proporciona también una serie de deficiencias en cuanto a seguridad ya que:
Utiliza un mecanismo normal de autenticación de usuarios (usuario/contraseña) con lo que el servidor no puede garantizar que el usuario es quien dice ser. Transfiere las contraseñas en texto plano (sin cifrar) No cifra la propia sesión en sí misma, por lo que las transferencias de archivos también son en texto plano.
Introducción El protocolo proporciona también operaciones para que el cliente pueda manipular el sistema de archivos del servidor:
borrar archivos
cambiarles el nombre,
crear y borrar directorios
listarse los contenidos, etc ..
Tipos de transferencia El modo en que se transfieren los ficheros entre el cliente y el servidor puede ser de tipos diferentes, los dos más importantes son: Tipo ASCII. El fichero se transmite carácter a carácter. Adecuado para transferir archivos que sólo contengan caracteres imprimibles (archivos ASCII, no archivos resultantes de un procesador de texto), por ejemplo páginas HTML, pero no las imágenes que puedan contener. Tipo Binario. En este modo el fichero se envia bit a bit sin ninguna interpretacion de ningun tipo. Este tipo es usado cuando se trata de archivos comprimidos, ejecutables para PC, imágenes, archivos de audio...
Arquitectura FTP El protocolo FTP se basa en la arquitectura cliente-servidor, es decir, un equipo envía órdenes (el cliente) y el otro espera solicitudes para llevar a cabo acciones (el servidor). Utiliza el protocolo de transporte TCP. Durante una conexión FTP, se abiertos dos canales de transmisión:
encuentran
* Un canal de comandos (canal de control) * Un canal de datos
Arquitectura FTP El servidor FTP proporciona el servicio (capa de aplicación del modelo de capas de red TCP/IP) al usuario, a través de dos puertos bien conocidos: ●
●
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.
El cliente se conecta al servidor haciendo uso de un puerto local mayor que 1024
Arquitectura FTP Hay dos entidades que intervienen en la transferencia de ficheros:
El proceso de transferencia de datos (DTP). Está bajo el control del intérprete de protocolo, se encarga de intercambiar los datos que deben transferirse
El intérprete de protocolo (PI). Se encarga del intercambio de los pedidos del protocolo.
Esquema funcionamiento FTP
Arquitectura FTP El cliente y el servidor cuentan con dos procesos que permiten la administración de estos dos tipos de información:
DTP (Proceso de transferencia de datos) es el proceso encargado de establecer la conexión y de administrar el canal de datos. El DTP del lado del servidor se denomina SERVIDOR DE DTP y el DTP del lado del cliente se denomina USUARIO DE DTP. PI (Intérprete de protocolo) interpreta el protocolo y permite que el DTP pueda ser controlado mediante los comandos recibidos a través del canal de control.
Intérprete de protocolo FTP (PI) El SERVIDOR PI es responsable de escuchar los comandos que provienen de un USUARIO PI a través del canal de control en un puerto de datos, de establecer la conexión para el canal de control, de recibir los comandos FTP del USUARIO PI a través de éste, de responderles y de ejecutar el SERVIDOR DE DTP. El USUARIO PI es responsable de establecer la conexión con el servidor FTP, de enviar los comandos FTP, de recibir respuestas del SERVIDOR PI y de controlar al USUARIO DE DTP, si fuera necesario.
Funcionamiento FTP Cuando un cliente FTP se conecta con un servidor FTP, el USUARIO PI inicia la conexión con el servidor de acuerdo con el protocolo Telnet. El cliente envía comandos FTP al servidor, el servidor los interpreta, ejecuta su DTP y después envía una respuesta estándar. Una vez que se establece la conexión, el servidor PI proporciona el puerto por el cual se enviarán los datos al Cliente DTP. El cliente DTP escucha el puerto especificado para los datos provenientes del servidor. Es importante tener en cuenta que, debido a que los puertos de control y de datos son canales separados, es posible enviar comandos desde un equipo y recibir datos en otro. Entonces, por ejemplo, es posible transferir datos entre dos servidores FTP mediante el paso indirecto por un cliente para enviar instrucciones de control y la transferencia de información entre dos procesos del
Arquitectura FTP
Modos de operación FTP FTP admite 2 modos para la conexión de datos. 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. El modo por defecto suele ser el modo activo. En el modo activo la conexión es iniciada por el servidor utilizando el puerto indicado por el cliente. El el modo pasivo el cliente inicia la conexión
Modo Activo Se establece una conexión utilizada para transmitir órdenes FTP desde cualquier puerto superior a 1024 en el cliente hacia el puerto 21 del servidor. En esa conexión establecida se comunica al servidor qué puerto utiliza el cliente para la recepcion de datos. Para ello, el cliente manda un comando PORT al servidor por el canal de control indicándole ese número de puerto. El servidor abre su puerto 20 para realizar la transferencia solicitada por el cliente y abre tambien el puerto indicado en el cliente para la transmision de datos. Hay dos conexiones distintas: una petición de transferencia por parte del cliente y una atención a dicha petición, iniciada por el servidor.
Esquema funcionamiento modo Activo
Modo Pasivo En este modo es siempre el programa cliente el que inicia la conexión con el servidor. Al abrir una conexión ftp se abre primero una conexión de control (desde un puerto superior a 1024 de la maquina local al puerto 21 del servidor). Al pasar a modo pasivo (comando PASV), el cliente solicita un puerto abierto al servidor (superior al 1024 del servidor) y recibida la contestación, será el cliente el que establezca la conexión de datos al servidor a través de ese puerto. En modo pasivo las conexiones son siempre abiertas por el cliente, mientras que en modo activo se abren por el que envía los datos (el server si se trata de bajar archivos, y el cliente si se trata de subir archivos al
Esquema funcionamiento modo pasivo
Modo activo vs Modo pasivo El problema del Modo Activo: En este modo se abre una conexión para datos desde el servidor a la máquina cliente, esto es, una conexión de fuera a dentro... Si la maquina cliente está protegida por un firewall , es posible que filtre o bloquee la conexión entrante, al ser un proceso desconocido. En el modo pasivo es el cliente el que inicia ambas conexiones, de control y de datos, con lo cual el firewall no tiene ninguna conexión entrante que filtrar
Comandos FTP Los comandos FTP son los mensajes que envía el intérprete cliente, y los que envía el intérprete servidor son respuestas a estos comandos.
Un comando FTP se representa por medio de un código de comando de hasta cuatro letras (que pueden ser indistintamente mayúsculas o minúsculas), seguido de una lista de cero o más argumentos, separados por espacios, acabada con un final de línea.
Los comandos FTP son cadenas de caracteres Telnet que finalizan con el código de final de línea Telnet (es decir, la secuencia +, Retorno de carro seguido del carácter Avance de línea indicado como ). Si el comando FTP tiene un parámetro, éste se separa del comando con un espacio ().
Comandos FTP Los comandos FTP hacen posible especificar:
El puerto utilizado
El método de transferencia de datos
La estructura de datos
La naturaleza de la acción que se va a realizar (Recuperar, Enumerar, Almacenar, etc.)
Comandos FTP La especificación RFC 959 define treinta y comandos agrupadas en tres categorías diferentes:
tres
Comandos de control de acceso. Los que gestionan el
acceso al servicio FTP. Por ejemplo, inicio y finalizacion de sesión, validación de usuario, ... USER, PASS, CWD, CDUP,...
Comandos de parámetros de transferencia. Gestionan
las opciones realcionadas con la tranferencia de ficheros como el modo de transferencia binario o ASCII, los puertos, el modo pasivo o activo,... STRU, MODE, PASV, TYPE, PORT
Comandos de servicio FTP. Son las órdenes de lo que se
quiere hacer en una sesión como bajar un fichero, subirlo, modificar el nombre,... RETR, STOR, STOU, LIST, PWD, ...
Comandos de control de acceso Comando
Descripción
USER
Cadena de caracteres que permite identificar al usuario. La identificación del usuario es necesaria para establecer la comunicación a través del canal de datos.
PASS
Cadena de caracteres que especifica la contraseña del usuario. Este comando debe ser inmediatamente precedida por el comando USER. El cliente debe decidir si esconder la visualización de este comando por razones de seguridad.
ACCT
Cadena de caracteres que especifica la cuenta del usuario. El comando generalmente no es necesario. Durante la respuesta que acepta la contraseña, si la respuesta es 230, esta etapa no es necesaria; Si la respuesta es 332, sí lo es.
CWD
Change Working Directory (Cambiar el directorio de trabajo): este comando permite cambiar el directorio actual. Este comando requiere la ruta de acceso al directorio para que se complete como un argumento.
CDUP
Change to Parent Directory (Cambiar al directorio principal): este comando permite regresar al directorio principal. Se introdujo para resolver los problemas de denominación del directorio principal según el sistema (generalmente "..").
QUIT
Comando que permite abandonar la sesión actual. Si es necesario, el servidor espera a que finalice la transferencia en progreso y después proporciona una respuesta antes de cerrar la conexión.
Comandos de parámetros de transferencia Comando Descripción PORT
Cadena de caracteres que permite especificar el número de puerto utilizado.
PASV
Comando que permite indicar al servidor de DTP que permanezca a la espera de una conexión en un puerto específico elegido aleatoriamente entre los puertos disponibles. La respuesta a este comando es la dirección IP del equipo y el puerto.
TYPE
Este comando permite especificar el tipo de formato en el cual se enviarán los datos
STRU
Carácter Telnet que especifica la estructura de archivos (F de File [Archivo], R de Record [Registro], P de Page [Página]).
MODE
Carácter Telnet que especifica el método de transferencia de datos (S de Stream [Flujo], B de Block [Bloque], C de Compressed [Comprimido]).
Comandos de servicio FTP Comando Descripción RETR
Este comando (RETRIEVE [RECUPERAR]) le pide al servidor de DTP una copia del archivo cuya ruta de acceso se da en los parámetros.
STOR
Este comando (store [almacenar]) le pide al servidor de DTP que acepte los datos enviados por el canal de datos y que los almacene en un archivo que lleve el nombre que se da en los parámetros. Si el archivo no existe, el servidor lo crea; de lo contrario, lo sobrescribe.
STOU
Este comando es idéntico al anterior, sólo le pide al servidor que cree un archivo cuyo nombre sea único. El nombre del archivo se envía en la respuesta.
LIST
Este comando permite que se vuelva a enviar la lista de archivos y directorios presentes en el directorio actual. Esto se envía a través del DTP pasivo. Es posible indicar un nombre de directorio en el parámetro de este comando. El servidor de DTP enviará la lista de archivos del directorio ubicado en el parámetro.
PWD
Este comando (print working directory [mostrar el directorio actual]) hace posible volver a enviar la ruta del directorio actual completa.
Respuestas FTP Las respuestas FTP garantizan la sincronización entre el cliente y el servidor FTP. Por lo tanto, por cada comando enviado por el cliente, el servidor eventualmente llevará a cabo una acción y sistemáticamente enviará una respuesta.
Las respuestas están compuestas por un código de 3 dígitos que indica la manera en la que el comando enviado por el cliente ha sido procesado. Sin embargo, debido a que el código de 3 dígitos resulta difícil de leer para las personas, está acompañado de texto (cadena de caracteres Telnet separada del código numérico por un espacio).
220 Sistema preparado. Introduzca nombre de usuario y contraseña.
Todo el diálogo entre el cliente y el servidor tiene forma de órdenes y respuestas.
Respuestas FTP Los códigos de respuesta están compuestos por 3 números, cuyos significados son los siguientes: El primer número indica el estatuto de la respuesta (exitosa o fallida)
El segundo número indica a qué se refiere la respuesta.
El tercer número brinda un significado más específico (relacionado con cada segundo dígito).
Servidores FTP Los servidores FTP se pueden ejecutar en dos modos: Modo aislado (standalone). Se ejecuta como proceso del sistema de forma independiente durante el arranque y permanece activo a la espera de peticiones Modo superservidor . Se ejecuta como proceso del sistema hijo de inetd. En este caso, se debe de configurar el archivo /etc/inetd.conf anadiendo la linea correspondiente al servicio FTP. Este modo es especifico de GNU/Linux y requiere arrancar el proceso cada vez que se establece una nueva conexion. Ambos modos son excluyentes y se activan de formas concretas en funcion del servicio FTP utilizado. En modo aislado, es el servidor quien abre el puerto de escucha, mientras que en modo superservidor lo hace el inetd (proceso del sistema encargado de redirigir las peticiones TCP o UDP a sus respectivos servicios).
Servidores FTP Hay muchas implementaciones de servidores FTP:
vsftpd: https://security.appspot.com/vsftpd.html
proftpd: http://www.proftpd.org/
FileZilla: http://filezilla-project.org/
FTP integrado en el servidor web IIS de Microsoft.
Clientes FTP Hay muchas implementaciones de clientes FTP:
Clientes gráficos. Interfaz más amigable y fácil
FileZilla
CuteFTP
gFTP
Navegadores (FireFox, Iexplorer) (ftp://............)
Modo terminal (comando):
ftp (tanto para Linux como para Windows).
Clientes FTP ●
Comandos del cliente ftp (modo terminal)
Comando
Descripción
open
Pide usuario y contraseña
cd, pwd, dir
Envia los comandos CWD,PWD i LIST
ascii, binary
Envia los comandos TYPE A i TYPE I
get
Efectua la sequencia PORT-RETR
put
Efectua la sequencia PORT-STOR
control+C
Envia el comando ABOR
delete, mkdir, rmdir
Envia los comandos DELE, MKD i RMD
rename
Envia la sequencia RNFR-RNTO
quit
Envia el comando QUIT
FTP seguro Los datos de cualquier sesión FTP no van cifrados (es un servicio no seguro). Hay dos opciones:
FTP sobre SSH. SFTP
Crear un túnel SSH para la conexión FTP. SSH proporciona la capacidad de efectuar sesiones remotas seguras
FTP sobre SSL o sobre TLS. FTPS
La capa de transporte segura proporciona al FTP el grado de seguridad que proporciona a HTTPS. La faena de encriptacion y autenticación la realiza SSL o TLS. La utilizacion conjunta de FTP y SSL o TLS tiene dos modos:
–
Explicito o FTPES. El cliente se conecta al puerto habitual (21) y cambia al modo seguro para transferir la información .
–
Implícito o FTPS. El cliente asume el modo seguro con TLS o SSL desde el inicio de la conexión, antes de transferir la información
Servicio de transferencia trivial TFTP El protocolo TFTP (trivial file transport protocol) proporciona un servicio de transferencia de ficheros más básico y elemental que el FTP. No permite la autenticación de usuarios ni incorpora ningun mecanismo de seguridad. Solo permite las operaciones de lectura (bajar ficheros) y escritura (subir ficheros). Utiliza el protocolo de transporte UDP. Escucha las peticiones de los clientes por el puerto 69 Se utiliza para: ●
clonar equipos en una red,
●
una instalación por red
●
●
obtener los archivos del sistema operativo de un servidor en estaciones sin disco duro Guardar y bajar configuraciones de red, routers, ...