PPT - Sistemas de Red e Información

Download Report

Transcript PPT - Sistemas de Red e Información

Jorge De Nova Segundo
FTP (File Transfer Protocol o 'Protocolo de Transferencia de Archivos'), es un
protocolo de red para la transferencia de archivos entre sistemas conectados a
una red TCP (Transmission Control Protocol), basado en la arquitectura clienteservidor. 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 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.
Características.
De los directorios de una máquina remota, se puede tomar de ella la
información que necesita, o guardar en ella la información que desea
compartir. El protocolo FTP (File Transfer Protocol) permite:
• La conexión a un sistema remoto a la máxima velocidad.
• Permitir la independencia entre los sistemas de archivo del equipo del cliente
y del equipo del servidor
• Observar los directorios remotos.
• Cambiar de directorio remoto.
• Copiar uno o varios archivos hacia el directorio local.
• Copiar uno o varios archivos hacia el directorio remoto.
• No ofrece seguridad. La información login/password se envía en texto plano
(no utiliza ningún tipo de cifrado).
Servidor FTP
Un servidor FTP es un programa especial que se ejecuta en un equipo
servidor normalmente conectado a Internet (aunque puede estar conectado a
otros tipos de redes, LAN, MAN, etc.). Su función es permitir el intercambio
de datos entre diferentes servidores/ordenadores.
Por lo general, los programas servidores FTP no suelen encontrarse en los
ordenadores personales, por lo que un usuario normalmente utilizará el FTP
para conectarse remotamente a uno y así intercambiar información con él.
Las aplicaciones más comunes de los servidores FTP suelen ser el alojamiento
web, en el que sus clientes utilizan el servicio para subir sus páginas web y sus
archivos correspondientes; o como servidor de backup.
Cliente FTP
Un cliente FTP es un programa que se instala en el ordenador del usuario, y
que emplea el protocolo FTP para conectarse a un servidor FTP y transferir
archivos, ya sea para descargarlos o para subirlos.
Para utilizar un cliente FTP, se necesita conocer el nombre del archivo, el
ordenador en que reside (servidor, en el caso de descarga de archivos), el
ordenador al que se quiere transferir el archivo (en caso de querer subirlo
nosotros al servidor), y la carpeta en la que se encuentra.
Algunos clientes de FTP básicos en modo consola vienen integrados en los
sistemas operativos, incluyendo Microsoft Windows, DOS, GNU/Linux y
Unix. Sin embargo, hay disponibles clientes con opciones añadidas e interfaz
gráfica. Aunque muchos navegadores tienen ya integrado FTP, es más
confiable a la hora de conectarse con servidores FTP no anónimos utilizar un
programa cliente.Un cliente web puede ser una Navegador , la terminal o
consola o software dedicado.
funcionamiento.
FTP es un servicio orientado a conexión concurrente que funciona sobre dos
puertos 21 para el intercambio de comandos y 20 para los datos. La estructura
general de funcionamiento es la que se muestra en la siguiente figura.
Los elementos que componen el sistema son los siguientes:
Servidor FTP: Máquina a la que nos queremos conectar y que debe aceptar
sesiones FTP. Debe ser una máquina en la que esté activo el servicio FTP. A su
vez se compone de:
 Servidor PI (Protocol Interpreter): El intérprete de protocolo del servidor
“escucha” en el puerto 21 los comandos que le envía el intérprete de
protocolo del cliente y controla el proceso de transferencia de datos del
servidor.
 Servidor DTP (Data Transfer Protocol): El protocolo de transferencia de
datos del servidor se utiliza para transmitir los datos entre el servidor y
el protocolo de transferencia de datos del cliente. Puede estar en modo
“pasivo” a la escucha de conexiones en el puerto 20 de datos.
Cliente FTP: Máquina con la que nos conectamos al servidor FTP. Está
compuesta por los siguientes elementos: o Interfaz de usuario: conjunto de
comandos de “alto nivel” que el usuario puede memorizar más fácilmente que
los comandos FTP que se envían entre cliente y servidor.
 Cliente PI: El intérprete de protocolo de usuario inicia el control de la
conexión a través del puerto 21 con el servidor FTP, envía los comandos
FTP una vez codificados por la interfaz de usuario y los envía al intérprete
de protocolo del servidor, y controla el proceso de transferencia de los
archivos (DTP).
 Cliente DTP: El proceso de transferencia de datos “escucha” el puerto de
datos (20) aceptando conexiones para la transferencia de ficheros.
En el modelo descrito anterior mente, el PI del cliente inicia la conexión TCP por el
puerto 21. Al iniciarse, se envían los comandos mediante dicho PI al PI del servidor
y si éste acepta la conexión, solicita una identificación al usuario, pudiéndose
realizar un acceso anónimo (no aceptado por todos los servidores). Cuando se
solicita un archivo del servidor, se establece
una conexión TCP por el puerto 20 para entre el DTP del cliente y el servidor para la
transmisión de datos.
Protocolo FTP.
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 (Protocolo
de transferencia de archivos (FTP) - Especificaciones).
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
El protocolo FTP está incluido dentro del modelo cliente-servidor, es decir, un
equipo envía órdenes (el cliente) y el otro espera solicitudes para llevar a cabo
acciones (el servidor).Durante una conexión FTP, se encuentran abiertos dos
canales de transmisión:
Un canal de comandos (canal de control)
Un canal de datos
El protocolo FTP está incluido dentro del modelo cliente-servidor, es decir, un
equipo envía órdenes (el cliente) y el otro espera solicitudes para llevar a cabo
acciones (el servidor).
Tipos de usuarios.
Usuarios FTP: aquellos que disponen de una cu8enta en la
máquina que ofrece el servicio FTP.
Usuarios anónimos: usuarios cualesquiera que, al conectarse al
servidor FTP, sólo deben introducir una contraseña simbólica. Sólo
tienen acceso a una parte limitada del sistema de
archivos.
Tipos accesos al servicio
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 casi
ningun 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.
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.
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 del servicio de transferencia de
archivos. Permisos y cuotas.
Instalación FTP
Para instalar el servicio FTP en el equipo, podemos ejecutar el siguiente
comando:
# apt-get install paquete-servidorftp
La instalación ha creado el el archivo /etc/vsftpd.conf contiene las opciones
de configuración del servidor FTP.
Arrancar el demonio FTP
Si queremos que nuestra máquina disponga de un servidor FTP debemos
arrancar el servicio correspondiente. El servicio FTP se puede encontrar en el
directorio /etc/init.d junto a otros muchos servicios de Linux. El comando
es:
/etc/init.d/vsftpd start [stop | reload | force-reload | restart]
PERMISOS
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, estableciéndose 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
CUOTAS
•Instalar la característica de control de cuotas
apt-get install quota
•Indicar las particiones en las que aplicaremos las quotas editando/etc/fstab y
añadiendo las opciones usrquota,grpquota
# /dev/hda5 /home ext3 defaults,usrquota,grpquota 0 2
•Crearemos los archivos de control de quota y reiniciamos las particiones
#touch /home/quota.user /home/quota.group
#chmod 600 /home/quota.*
#mount -o remount /home
• Para a continuación inicializar el mecanismo de cuotas
#quotacheck –avugm
•Ahora este ultimo comando activará la quota
#quotaon /home
Conexiones y modos: Conexión de control y
conexión de datos. Modos activo y pasivo.
Una conexión ftp usa dos puertos ( dos canales):
◦ El puerto de comandos (conexión de control), por donde se transfieren
las órdenes. Se inicia en el puerto 21
◦ El puerto de datos (conexión de datos), por donde se transfieren los
datos de ficheros. Se inicia en el puerto 20, pero puede ser cualquiera por
debajo del 1024.
◦ En la conexión de control se especifican parámetros para la conexión de
datos (puerto de datos, modo de transferencia, etc) y las operaciones
sobre el sistema de archivos (listar, acceder al sistema ficheros, añadir,
borrar)
Modo Activo
El modo activo generalmente es conocido también como modo estándar y este
opera de la siguiente forma. Se establecen dos conexiones distintas, la primera
conexión establece una comunicación para la transmisión de comandos a través
de un puerto aleatorio mayor que el 1024 del cliente FTP hacia el puerto 21 del
servidor FTP y por esa misma conexión se le notifica al servidor FTP cual es el
puerto de nuestro cliente FTP que esta a la espera de los datos. Entonces y para
comprender mejor, si usted descarga algún archivo mediante la ayuda de algún
cliente de FTP, es el servidor FTP el que inicia la transmisión de datos, desde su
puerto 20 al puerto que aleatoriamente el cliente FTP
le ha indicado. Se le llama modo activo porque la transmisión de datos es iniciada
por el propio servidor FTP.
Modo Pasivo
Esto se logra cuando el cliente FTP inicia la conexión con el servidor FTP
mediante el envió del comando PASV en este punto el cliente FTP establece una
comunicación mediante un canal de control el cual generalmente utiliza un
puerto aleatorio mayor al 1024 para comunicarse con el servidor FTP a través de su
puerto 21. Al pasar a modo pasivo el cliente FTP pedirá al servidor FTP que habrá
un puerto, el cual deberá ser aleatorio y mayor al 1024, recibida la contestación,
será el cliente FTP el que establezca la conexión de datos al servidor FTP a través
del puerto especificado anteriormente.
Modo Activo vs Modo Pasivo
Como hemos explicado antes, en el modo activo se abre una conexión para datos
desde el servidor FTP al cliente FTP, esto es, una conexión de fuera hacia
adentro, entonces, si el cliente FTP se encuentra detrás de un firewall, este
filtrara o bloqueara la conexión entrante. En el modo pasivo es el cliente FTP el
que inicia tanto la conexión de control como la de datos, con lo cual el firewall
no tendrá ninguna conexión entrante que filtrar.
Tipos de transferencia de archivos: ASCII y
Binario
Tipos de transferencia de archivos en FTP
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...
Clientes FTP : en línea de comandos,
entornos “gráficos” y navegadores /
exploradores
FileZilla es un proyecto Open Source y es uno de los
mejores clientes gratuitos, que además cuenta con
versiones para Windows, Linux y Mac OSX. Cuenta con
una amplia comunidad de desarrolladores por lo cual
tiene amplio soporte y actualizaciones constantes.
FileZilla cuenta con todas las opciones de cualquier
cliente comercial y con buen rendimiento.
Cyberduck es uno de los mejores clientes
FTP para Mac, ademas de ello permite
utilizarlo como cliente
para WebDAV, Google Docs y Amazon S3.
Ademas de ello se puede integrar con la
mayoría de editores de código de Mac
GoFTP es otro cliente de FTP que ofrece
mayor velocidad, en su web anuncian que es
hasta 314% mas rápido que los otros clientes.
Cuenta con un explorador de archivos para
facilitar la transferencias de archivos,
también permite continuar uploads o
downloads de archivos que hayan sido
detenidos.
FTP en consola Linux.
Para acceder a FTP desde la consola Linux
debemos conectar con nuestro servidor a
través del comando "ftp". Vamos a tomar
como ejemplo, que nuestro servidor sea
"asir" . En primer lugar conectaremos con
nuestro servidor: escribiendo "ftp asir.es".
Una manera sencilla de acceder a todo el
contenido de su pagina sin instalar clientes
de ftp y de forma directa es usar el cliente el
ftp que lleva el navegador internet explorer
de serie.
Para ello en el navegador ponga algo así
como ftp://www.ftp.com y pulse intro.
Monitorización y registro del servicio de
transferencia de archivos.
Normalmente los servidores ftp que tienen entorno grafico tienen un visualizador
de eventos en tiempo real, como quien se conecta al servidor quien sale y quien esta
conectado, por lo tanto esto depende de cada servidor.
Vamos a ver algunas configuraciones del servidor vsftpd con respecto a los tipos de
registro que tiene:
•xferlog_enable=YES => Activa la generación de registros logs por cada
uploads/downloads
•vsftpd_log_file=/var/log/vsftpd.log=> Define cual será el archivo log.
• log_ftp_protocol=YES=> Si esta directiva no se encuentra comentada activa el
registro (log) de todas las peticiones/respuestas del servidor
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 Protocolo FTP
Para entender estos ataques, es necesario tener una comprensión básica del
protocolo FTP, para ello recordaremos su funcionamiento:
Un cliente abre una conexión al port de control de ftp (21) de un FTP SERVER.
De este modo, para que el servidor sea capaz luego de enviar datos de nuevo a la
máquina del cliente, una segunda conexión (de datos) debe abrirse entre el
servidor y el cliente.
Para hacer esta segunda conexión, el cliente envía un comando PORT al
servidor.
Este comando incluye parámetros que indican al servidor cuál IP ADDRESS
conectar y qué port abrir en aquella dirección.
El servidor luego abre aquella conexión, siendo la fuente de la conexión el port
20 del servidor y el destino el port identificado en los parámetros del comando
PORT.
El comando PORT se utiliza generalmente sólo en el " modo activo " del ftp
(por default). No se suele utilizar en modo pasivo (PASV). Debe notarse que los
servidores de ftp generalmente implementan ambos modos en ejecución, y el
cliente especifica qué método utilizar.
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 port arbitrarios para la conexión
de datos. Sin embargo, esto también significa que un hacker puede abrir una
conexión a un port 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”.
FTPS (FTP/SSL): FTPS Implícito. FTPS
Explícito (FTPES)
FTPS (también conocido como FTP Secure o FTP-SSL) es una extensión del FTP
que agrega soporte para los protocolos criptográficos TLS y SSL .
Con este método la transferencia de archivos se cifra, agregando seguridad a la
misma. El cifrados puede ser a nivel datos, a nivel comandos o ambos. Si el canal
de comandos no se cifra, se dice que el protocolo está usando un canal de
comandos en claro (CCC). Si el canal de datos no está cifrado, se dice que el
protocolo usa un canal de datos en claro (CDC).
FTPS Explícito, 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.
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 el 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.
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.
Ventajas: En esencia se trata del método más similar que existe para
trasferir datos de un servidor a otro servidor sin permitir el acceso directo a
la máquina.
Inconvenientes: Algunos servidores no soportan FXP o lo tienen
desactivado. Es más, los clientes FTP habituales no suelen estar diseñado
para este tipo de intercambios.
Otras cuestiones a tener en cuenta: La razón por la que la mayoría de
administradores de servicios de hosting desactivan esta herramienta es
obvia: por riesgos de seguridad. FXP podría exponer nuestro servidor a
una vulnerabilidad conocida como “FTP bounce”, en la que el hacker
puede tomar acceso al servidor a través de un puerto abierto por un
usuario inocente, convirtiendo su servidor en un zombie y
aprovechándose de sus recursos para sus propios intereses.