Story Transcript
- Características. Componentes y funcionamiento. - Protocolo FTP. - Tipos de usuarios y accesos al servicio: Acceso anónimo y acceso autorizado. - Configuración del servicio de transferencia de archivos. Permisos y cuotas. -Conexiones y modos: Conexión de control y conexión de datos. Modos activo y pasivo. - Tipos de transferencia de archivos: ASCII y Binario. - Clientes FTP : en línea de comandos, entornos “gráficos” y navegadores / exploradores. - Monitorización y registro del servicio de transferencia de archivos. - Seguridad en FTP. - FTPS (FTP/SSL): FTPS Implícito. FTPS Explícito (FTPES) - Protocolo FXP (File eXchange Protocol).
Luis Villalta Márquez
FTP (siglas en inglés de File Transfer Protocol, 'Protocolo de Transferencia de Archivos') en informática, es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol), 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. Un problema básico de 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.
A diferencia de la mayoría de los protocolos utilizados en Internet, FTP requiere de múltiples puertos de red para funcionar correctamente. Cuando una aplicación cliente FTP inicia una conexión a un servidor FTP, abre el puerto 21 en el servidor — conocido como el puerto de comandos. Se utiliza este puerto para arrojar todos los comandos al servidor. Cualquier petición de datos desde el servidor se devuelve al cliente a través del puerto de datos. El número de puerto para las conexiones de datos y la forma en la que las conexiones son inicializadas varía dependiendo de si el cliente solicita los datos en modo activo o en modo pasivo.
Respecto Diseño del Servicio:
La conexión de un usuario remoto al servidor FTP puede hacerse como inicio de una sesión de un usuario que existe en el sistema o también como un usuario genérico que se llama anónimo. El acceso al sistema de archivos del servidor FTP está limitado, dependiendo del tipo de usuario que se conecta. Una vez se ha establecido la conexión con el servidor FTP, el usuario tiene disponible el conjunto de órdenes FTP que permiten realizar las operaciones básicas de descarga(get) o subida(put) de archivos, junto con otras órdenes.
Respecto a tipos de usuarios:
Usuarios FTP - Son aquellos que disponen de una cuenta en la máquina que ofrece el servicio FTP. Se conectan vía FTP mediante su nombre de usuario y contraseña, y tienen acceso a aquellas partes del sistema de archivos para las que tienen permisos. Usuarios anónimos – Son usuarios cualesquiera que, al conectarse al servidor FTP, sólo deben introducir una contraseña simbólica que suele ser una dirección de correo electrónico, y sólo tienen acceso a una parte limitada del sistema de archivos
El protocolo FTP (Protocolo de transferencia de archivos) es, como su nombre lo indica, un protocolo para transferir archivos. La implementación del FTP se remonta a 1971 cuando se desarrolló un sistema de transferencia de archivos (descrito en RFC141) entre equipos del Instituto Tecnológico de Massachusetts (MIT, Massachusetts Institute of Technology). Desde entonces, diversos documentos de RFC (petición de comentarios) han mejorado el protocolo básico, pero las innovaciones más importantes se llevaron a cabo en julio de 1973. Actualmente, el protocolo FTP está definido por RFC 959. Función del protocolo FTP El protocolo FTP define la manera en que los datos deben ser transferidos a través de una red TCP/IP. El objetivo del protocolo FTP es: 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.
Usuarios Existen dos tipos de usuarios en FTP:
Usuarios FTP: aquellos que disponen de una cuenta en la máquina que ofrece el servicio FTP. Usuarios Anónimos: usuarios cualesquiera que al conectarse al servicio FTP, solo deben introducir una contraseña simbólica. Solo tienen acceso a una parte del sistema de archivos.
Cuando se crean usuarios es necesario darle permisos para que puedan manejar los archivos y directorios como nosotros queramos, se le pueden dar permisos para subir o bajar archivos. La mayoría de los sistemas de archivos modernos permiten asignar permisos (o derechos de acceso) a los archivos para determinados usuarios y grupos de usuarios. De esta manera, se puede restringir o permitir el acceso de un determinado usuario a un archivo para su visualización de contenidos, modificación y/o ejecución (en caso de un archivo ejecutable).
Accesos
Acceso anónimo
Los servidores FTP anónimos ofrecen sus servicios libremente a todos los usuarios, permiten acceder a sus archivos sin necesidad de tener un 'USER ID' o una cuenta de usuario. Es la manera más cómoda fuera del servicio web de permitir que todo el mundo tenga acceso a cierta información sin que para ello el administrador de un sistema tenga que crear una cuenta para cada usuario. Si un servidor posee servicio 'FTP anonymous' solamente con teclear la palabra «anonymous», cuando pregunte por tu usuario tendrás acceso a ese sistema. No se necesita ninguna contraseña preestablecida, aunque tendrás que introducir una sólo para ese momento, normalmente se suele utilizar la dirección de correo electrónico propia. 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 programas, y se reservan los servidores de páginas web (HTTP) para almacenar información textual destinada a la lectura en línea.
Accesos
Acceso de usuario
Si se desea tener privilegios de acceso a cualquier parte del sistema de archivos del servidor FTP, de modificación de archivos existentes, y de 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 autentificación (en inglés: login) y una contraseña (en inglés: password) que nos identifica unívocamente.
Accesos
Cliente FTP basado en Web
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. 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. Al disponer de un cliente FTP basado en Web podemos acceder al servidor FTP remoto como si estuviéramos realizando cualquier otro tipo de navegación web. A través de un cliente FTP basado en Web podrás, 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.
Accesos
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.
Configuración Básica FTP: 1. Instalación de FTP, por ejemplo ISS FTP en Windows y el paquete VSFTPD en distribuciones Linux. 2. Configurar gráficamente en Windows o en /etc/vsftpd.conf en GNU/Linux lo siguiente: Creamos los directorios FTP, y se indica en la configuración. Creamos los usuarios del sistema y usuario anónimo. Acceso único puertos Acceso de solo lectura a usuarios anónimos. Acceso de usuarios del sistema, atendiendo a tipo de usuario, lugar de acceso, grupos, no pueden acceder a carpetas privadas, …, o aislar usuarios en directorios propios. El usuario anónimo no puede administrar, cambiar permisos o acceder a otras carpetas, al igual que usuarios del sistema. Configuramos el mensaje de Bienvenida. Configuramos los permisos de acceso, lectura, modificación. Configuramos las opciones de transferencias. Configuramos los logs de errores y acceso.
Consejos:
Aislar el usuario anónimo, y darle únicamente permiso de lectura.
Permitir solo el puerto 21.
Configurar bien los permisos de usuarios del sistema y comprobar el buen funcionamiento.
Habilitar Logs de error y acceso siempre.
Utilizar conexiones seguras por medio de SSL (SFTP, FTPS/SCP).
Permitir un número seguro de usuarios conectados, es decir, permitir un número de conexiones activas y pasivas al mismo tiempo.
Aplicar cuotas de disco para evitar que pocos usuarios consuman el 100% del espacio.
Por ultimo aplicar un tiempo de desconexión de 1min si una vez conectado no se realizan operaciones.
FTP admite dos modos de conexión del cliente. Estos modos se denominan activo (o Estándar, o PORT, debido a que el cliente envía comandos tipo PORT al servidor por el canal de control al establecer la conexión) y pasivo (o PASV, porque en este caso envía comandos tipo PASV). 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.
Es importante conocer cómo debemos transportar un archivo a lo largo de la red. Si no utilizamos las opciones adecuadas podemos destruir la información del archivo. Por eso, al ejecutar la aplicación FTP, debemos acordarnos de utilizar uno de estos comandos (o poner la correspondiente opción en un programa con interfaz gráfica):
Tipo ascii: 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: Este tipo es usado cuando se trata de archivos comprimidos, ejecutables para PC, imágenes, archivos de audio...
Ejemplos de cómo transferir algunos tipos de archivo dependiendo de su extensión: EXTENSIÓN DE ARCHIVO doc (documento)
TIPO DE TRANSFERENCIA BINARIO
Z (comprimido) ZIP (comprimido) Sit (comprimido) shar (comprimido) ARC (comprimido) tar (empaquetado) txt (texto) html (página WEB) ps (poscript) hqx (comprimido)
ASCII
Cliente FTP basado en Web
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. 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. Al disponer de un cliente FTP basado en Web podemos acceder al servidor FTP remoto como si estuviéramos realizando cualquier otro tipo de navegación web. A través de un cliente FTP basado en Web podrás, 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.
Comandos FTP
COMANDO Y ARGUMENTOS
ACCIÓN QUE REALIZA
open servidor
Inicia una conexión con un servidor FTP.
close o disconnect
Finaliza una conexión FTP sin cerrar el programa cliente.
bye o quit
Finaliza una conexión FTP y la sesión de trabajo con el programa cliente.
cd directorio
Cambia el directorio de trabajo en el servidor.
delete archivo
Borra un archivo en el servidor.
mdelete patrón
Borra múltiples archivos basado en un patrón que se aplica al nombre.
dir
Muestra el contenido del directorio en el que estamos en el servidor.
get archivo
Obtiene un archivo.
Comandos FTP
COMANDO Y ARGUMENTOS
ACCIÓN QUE REALIZA
mget archivos
Obtiene múltiples archivos.
hash
Activa la impresión de caracteres # a medida que se transfieren archivos, a modo de barra de progreso.
lcd directorio
Cambia el directorio de trabajo local.
ls
Muestra el contenido del directorio en el servidor.
prompt
Activa/desactiva la confirmación por parte del usuario de la ejecución de comandos.
put archivo
Envía un archivo al directorio activo del servidor.
pwd
Muestra el directorio activo en el servidor.
rename archivo
Cambia el nombre a un archivo en el servidor.
rmdir directorio
Elimina un directorio en el servidor si ese directorio está vacío.
Debemos configurar Logs de: Errores: Errores del demonio FTP. Acceso: Acceso de usuarios y su actividad. Transferencia: Actividad de transferencia y subida de archivos. Comunicaciones: Comunicación entre el servidor y el cliente. Debes monitorizar FTP mostrando: Estado: Estado actual de la conexión FTP. Nombre de usuario FTP: Nombre de usuario usado para acceder a la cuenta FTP. Nombre de dominio: Dominio en el que el usuario FTP está conectado. Ubicación actual: Directorio donde se encuentra el usuario FTP. Nombre del Archivo: El nombre de archivo con el que se opera. Velocidad: Velocidad de transferencias en kilo bites. Progreso, %: Progreso de la operación de transferencia de archivo en porcentaje. Dirección IP: Dirección IP desde la que se accede a la cuenta FTP. Hora de acceso: Tiempo transcurrido desde que el usuario se conectó. Tiempo de inactividad: Tiempo en que el usuario no estaba realizando ninguna acción en el panel de control aún y estando conectado.
FTP no está diseñado para ser un protocolo seguro, especialmente con los estándares de hoy en día, y tiene muchas debilidades de seguridad. En 1999 los autores del RFC listaron las vulnerabilidades de FTP derivados de los siguientes problemas: Ataques Spoofing Ataques de fuerza bruta Ataques Rebote (Bounce attacks) Captura de paquetes (sniffing) Robo de puertos (Port stealing) Claves de usuario y datos no cifrados
FTP no es capaz de cifrar el tráfico, todas las transmisiones están en texto plano, tanto nombres de usuario como contraseñas. Los comandos y los datos pueden ser fácilmente leídos por cualquier persona capaz captura los paquetes de la red (sniffing). Este problema es común a muchas de los protocolo de Internet (tales como SMTP, Telnet, POP e IMAP) que fueron diseñados antes de la creación de mecanismos de cifrado, como SSL o TLS. Una solución común para este problema es utilizar en conjunto los protocolos en texto plano (FTP) con protocolos seguros (TLS). Este es el caso por el cual existen FTPS y SFTP/SCP: SCP: Secure Copy o SCP es un medio de transferencia segura de archivos informáticos entre un host local y otro remoto o entre dos hosts remotos, usando el protocolo Secure Shell (SSH). El término SCP puede referir a dos conceptos relacionados, el protocolo SCP o el programa SCP. SFTP (Secure FTP): SSH File Transfer Protocol (también conocido como SFTP o Secure File Transfer Protocol) es un protocolo del nivel de aplicación que proporciona la funcionalidad necesaria para la transferencia y manipulación de archivos sobre un flujo de datos fiable. Se utiliza comúnmente con SSH para proporcionar la seguridad a los datos, aunque permite ser usado con otros protocolos de seguridad. Por lo tanto, la seguridad no la provee directamente el protocolo SFTP, sino SSH o el protocolo que sea utilizado en su caso para este cometido. SFTP utiliza el puerto 22 de TCP.
FTPS (FTP over SSH, not SFTP): FTPS (comúnmente referido como FTP/SSL) es un nombre usado para abarcar un número de formas en las cuales el software FTP puede realizar transferencias de ficheros seguras. Cada forma conlleva el uso de una capa SSL/TLS debajo del protocolo estándar FTP para cifrar los canales de control y/o datos. No debería confundirse con el protocolo de transferencia de ficheros SFTP, el cual suele ser usado con SSH. El uso más común de FTP y SSL es: AUTH TLS o FTPS Explicito: La seguridad TLS es obligatoria. Es el método preferido de acuerdo al RFC que define FTP sobre TLS. El cliente se conecta al puerto 21 del servidor y comienza una sesión FTP sin cifrar de manera tradicional, pero pide que la seguridad TLS sea usada y realiza la negociación apropiada antes de enviar cualquier dato sensible.
AUTH como está definido en RFC 2228. FTPS Implícito es un estilo antiguo: pero todavía ampliamente implementado en el cual el cliente se conecta a un puerto distinto (como por ejemplo 990), y se realiza una negociación SSL antes de que se envíe cualquier comando FTP.
File eXchange Protocol (FXP) es un método de transferencia de datos, a través del cual los datos se envían de un servidor FTP a otro sin pasar por un cliente intermedio. La comunicación convencional FTP consiste en un solo servidor y un solo cliente. Toda la transferencia de datos se realiza entre los dos. Durante una sesión FXP, un cliente mantiene conexiones estándares con dos servidores, dirigiendo cualquiera de los dos servidores que se conecte al otro para iniciar una transferencia de datos. Este método permite a un cliente con poco ancho de banda intercambiar datos entre dos servidores con más ancho de banda sin el retraso asociado con la comunicación convencional FTP. A lo largo de este proceso, sólo el cliente es capaz de acceder a los recursos de los dos servidores.
Riesgos Sin embargo, algunos de los servidores que soportan el FXP son vulnerables a un exploit conocido como el ataque FTP Bounce, por el cual un usuario malicioso puede superar algunos cortafuegos.
FXP a través de SSL Algunos servidores FTP como glFTPD, RaidenFTPd y wzdftpd soportan la negociación de un canal de dato seguro entre dos servidores mediante cualquiera de las dos órdenes de extensión del protocolo FTP: CPSV o SSCN. Normalmente, un cliente realiza esto enviando CPSV en lugar de la orden PASV (modo pasivo), o enviando SSCN antes de iniciar las transferencias pasivas. No obstante, ambos métodos aún son susceptibles a los ataques Manin-the-middle, pues los dos servidores FTP no comprueban sus respectivos certificados SSL.
Técnica Aunque el FXP se puede calificar de su propio protocolo, es meramente una extensión de FTP en cambio y se describe en RFC 959: