Story Transcript
Funcionalidad del servicio de transferencia de archivos -
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).
Gustavo Antequera Rodríguez
Características. Componentes y funcionamiento. Es una utilidad que permite la copia de un archivo desde un ordenador a otro a través de una red de computadoras. El servicio más usado para realizar este movimiento es el FTP (File Transfer Protocol), el cual consiste en un programa FTP alojado en un servidor -llamado FTP daemon- el cual se encarga de gestionar las transacciones que solicita el cliente. Los movimientos que podemos realizar a la hora de transferir archivos de un equipo a otro son: "download" (bajada de archivos de Internet), "upload" (subida de archivos a Internet), o intercambio de objetos entre dos o más usuarios. Las redes P2P se crearon posteriormente. Se trata de un software mediante el cual se podían compartir archivos entre distintas computadoras en cualquier parte del mundo, sin necesidad de acceder a un servidor central. Actualmente, es el método de intercambio de archivos más utilizado, el cual fomentó el nacimiento de polémicos programas como Napster o Emule.
- Protocolo FTP. 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. 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.
Tipos de usuarios y accesos al servicio: Acceso anónimo y acceso autorizado.
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.
Acceso autorizado 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.
Configuración del servicio de transferencia de archivos. Permisos y cuotas. El protocolo FTP se desarrolló en entornos de tipo UNIX similares a los populares GNU/Linux. Por eso tenemos los permisos de ejecución, lectura y escritura, estableciendose tres tipos de usuarios: ◦ Propietario: Es normalmente la persona que ha creado o que ha subido el archivo al servidor FTP. ◦ Grupo: Se refiere a un grupo de usuarios al que probablemente pertenece el propietario. ◦ Otros: Son todos los demás usuarios anónimos o que no pertenecen al grupo indicado. Para establecer los permisos de escritura existe un algoritmo, el cual asigna valores al tipo de acceso que se quiere otorgar a cada tipo de usuario. ◦ 4=lectura ◦ 2= escritura ◦ 1= ejecución Los permisos se asignan acorde con la suma de los tipos ya descritos. Por ejemplo: ◦ 6 (4+2) = lectura y escritura ◦ 5 (4+1) = lectura y ejecución ◦ 3 (2+1) = escritura y ejecución ◦ 7 (4+2+1) = lectura, escritura y ejecución Las combinaciones se dan en el siguiente orden: propietario, grupo y usuarios. Por ejemplo: 755, otorga lectura, escritura y ejecución al propietario, y al grupo y otros le otorga los permisos de ejecución y lectura.
Conexiones y modos: Conexión de control y conexión de datos. Modos activo y pasivo. 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). 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.
Tipos de transferencia de archivos: ASCII y Binario. 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:
En la red existen diversas soluciones de software que desarrolla este tipo de tecnología, los más conocidos, son Filezilla (software libre) y CuteFTP (shareware).
Clientes FTP: en línea de comandos, entornos “gráficos” y navegadores / exploradores. 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 y Unix. Sin embargo, hay disponibles clientes con más funcionalidades, habitualmente en forma de shareware/freeware para Windows y como software libre para sistemas de tipo Unix. Muchos navegadores recientes también llevan integrados clientes FTP (aunque un cliente FTP trabajará mejor para FTP privadas que un navegador). Algunos sistemas operativos, incluyendo los Windows más recientes y Mac OS X pueden montar servidores FTP como unidades virtuales directamente dentro del sistema operativo, como puede ser fireftp para firefox, pues es un plugin que se puede añadir al navegador, solo si se necesita. Lo que puede resultar más fácil o más conveniente para algunos usuarios, que emplear un cliente especializado. -Core FTP Lite Core FTP Lite es un cliente FTP de Windows que soporta la carga / descarga / borrado de directorios (carpetas) y archivos, navegador de integración, SFTP (o FTP seguro), SSL / TLS, el manejo de permisos de archivos, control de ancho de banda de transferencia, etc.
-FileZilla código abierto cliente FTP / SFTP FileZilla es una fuente libre, abierta de cliente FTP para Windows, Linux y Mac OS X se distribuye bajo la Licencia Pública General de GNU. Usted puede hacer lo de siempre, cargar y descargar archivos, así como reanudar cargas y descargas, funciona con servidores de seguridad, compatible con SFTP (Secure FTP) y conexiones seguras SSL, manejar las colas de archivos a subir / descargar, etc. -OneButton FTP OneButton FTP es un cliente gráfico de FTP para Mac OS X utilizando el marco del Cacao. Según el sitio web, soporta arrastrar y soltar archivos y las colas. Se necesita Mac OS X 10.4 o posterior. -Curl Curl es una herramienta de línea de comandos que le permite transferir archivos a través de FTP, SFTP, TFTP, FTPS, Telnet, DICT, FILE y LDAP, etc También puede utilizar los protocolos HTTP y HTTPS GET y PUT métodos para cargar y descargar archivos. Es compatible con servidores proxy SSL, cookies, y la autenticación de usuario / contraseña. El programa se distribuye bajo una licencia de código abierto. ftp://usuario@servidor (Donde usuario es por supuesto el login o nombre de usuario con el que accedes al servidor, y servidor es la dirección del servidor al que quieres acceder) Se abrirá una ventana solicitando la contraseña, si es necesaria, y ya está. Una vez dentro del sitio, puedes navegar por su árbol de directorios y hacer las operaciones típicas: subir, bajar, eliminar, copiar…
Monitorización y registro del servicio de transferencia de archivos. Para saber quién está conectado a su servidor vía FTP, en qué directorios se encuentran y qué archivos están cargando o descargando del servidor: 1. 2.
Vaya a Herramientas y utilidades > Sesiones Activas. Haga clic en la pestaña Sesiones FTP. Se mostrarán todas las sesiones, incluida la suya, así como los siguientes detalles: 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 ningunaacción en el panel de control aún y estando conectado. 3. Para actualizar la lista de sesiones FTP haga clic en Actualizar 4. Para finalizar la sesión marque la casilla respectiva y haga clic en Eliminar.
Seguridad en FTP. El mayor problema con el FTP es que el servidor sólo puede manejar nombres de usuario y contraseñas en texto plano. Esta es una de las razones por las que la cuenta de root no se puede utilizar para el acceso FTP en la mayoría de los servidores. Lo mismo se aplica para telnet. Por estas razones, hay varias alternativas incluyendo FTP seguro (SFTP), que a pesar del nombre es muy diferente de FTP. SFTP se aplica el cifrado de los mensajes entre el cliente y el servidor. También hay otra alternativa FTPS. Podemos pensar que FTP es a FTPS lo que HTTPS a HTTP. Los nombres de usuario y las contraseñas no son las únicas cosas que se envían a través de un texto claro. Los mismos archivos se cargan o descargan sin ningún tipo de cifrado.
Problemas de seguridad en el FTP El comando PORT En los últimos años, se ha incrementado el debate en torno a los problemas relacionados con el comando PORT del protocolo del FTP. Estos problemas se basan el uso erróneo de dicho comando. El ataque “Ftp bounce” Conforme con el protocolo FTP, el comando PORT hace que la máquina que lo origina especifique una máquina de destino y un puerto arbitrarios para la conexión de datos. Sin embargo, esto también significa que un hacker puede abrir una conexión a un puerto del hacker eligiendo una máquina que puede no ser el cliente original. Hacer esta conexión a una máquina arbitraria es hacer un ataque “ftp bounce”. Se presentan seguidamente varios ejemplos de cómo los hackers pueden utilizar el “ftp bounce”. “Scanning” de puertos Un hacker que desea realizar una port scan contra un sitio puede hacerlo de un server FTP de un tercero, que actúa como un “puente” para el scan. El sitio de la víctima ve la exploración como procedente del server FTP más que de la fuente verdadera (el cliente FTP).
Bypass de dispositivos de filtrado dinámicos Otro problema se refiere a los sitios que tienen firewalls que utilizan filtros dinámicos para protegerse. Los sitios están abiertos al ataque porque el firewall confía en la información que recibe. Como el firewall de filtros dinámicos examina los paquetes de salida para determinar si alguna acción se requiere de su parte, observa el comando PORT y permite una conexión entrante del server web remoto al port del telnet en la máquina de la víctima. Esta conexión normalmente no es permitida por el firewall; fue permitida en este caso porque el comando PORT fue realizado por el cliente. Soluciones Software del Ftp server La mejor solución al problema del “ftp bounce” desde la perspectiva de la seguridad es asegurarse de que el software del server FTP no puede establecer conexiones a máquinas arbitrarias.
FTPS (FTP/SSL): FTPS Implícito. FTPS Explícito (FTPES). 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, nombrado por el comando emitido para indicar que la seguridad TLS es obligatoria. Este 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
Protocolo FXP (File eXchange Protocol). 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 Man-in-the-middle, pues los dos servidores FTP no comprueban sus respectivos certificados SSL.