Monitoreo y Control de una red por medio de visualizadores de

Anuncio
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
MONITOREO Y CONTROL EN UNA RED POR MEDIO DE VISUALIZADORES
DE PAQUETES IPv4/IPv6 Y LISTAS DE ACCESO DE UN ROUTER
G. Gerónimo Castillo, E. H. Rocha Trejo
Universidad Tecnológica de Mixteca - IEC
Carretera a Acatlima Km. 2.5
Huajuapan de León, Oaxaca, México
{gcgero, everth}@nuyoo.utm.mx
RESUMEN
El presente artículo explica una de las maneras de implementar seguridad en una red
utilizando mecanismos de prevención y detección, en particular utilizando visualizadores de
paquetes y un router que permita el filtrado de paquetes para controlar el flujo de información a
través de sus diferentes interfaces.
ABSTRACT
This present paper explains one of the ways of making a network secure utilizing
prevention and detection mechanisms, in particular utilizing sniffers and a router that make it
possible to filter packages in order to control the flow of information through their various interfaces.
1. INTRODUCCIÓN
Existen dos tipos de ataques contra la seguridad de la información en un sistema de computo, los
ataques pasivos, en los que el agresor escucha la información que circula por el medio de
transmisión sin llegar a alterarla, y los ataques activos, en los que tiene lugar una interrupción,
eliminación, o modificación de información.
Con un programa visualizador de paquetes se puede obtener e interpretar las tramas que circulan
por un fragmento de red, extraer a partir de ellas los datos transmitidos y opcionalmente almacenar
parte, o la totalidad de dichos datos. Los visualizadores se basan en la colocación de la tarjeta de
red en modo promiscuo, y de esta manera obtienen todos los paquetes que pasan por la red
aunque no estén dirigidos a ella. Un visualizador de paquetes es una herramienta invaluable para
el administrador, ya que ayuda a diagnosticar problemas en la red y si se complementa con la
utilización de un firewall eficiente puede brindar mayor seguridad a los usuarios de la red.
2. LA SEGURIDAD Y LOS ATAQUES
Para poder brindar seguridad debemos primero reconocer cuales son los tipos de ataques que se
pueden presentar en un determinado instante. Estos ataques se pueden clasificar en dos grupos,
los activos y los pasivos. Los ataques activos atentan contra la disponibilidad de la información por
medio de la interrupción del flujo de datos, así como a su integridad por medio de la modificación o
invención de nuevo flujo de datos. Los ataques pasivos atentan contra la confidencialidad del flujo
de datos, dado que su objetivo es interceptar dicho flujo.
Los protocolos que forman parte del conjunto de protocolos TCP/IP son vulnerables a varios tipos
de ataques, algunos de ellos son: el ataque spoofing, el ataque smurf, el ataque de negación de
servicios (DoS), el ataque sniffing, entre otros.
1
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
Hablaremos brevemente de los ataques antes mencionados, y nos centraremos en el ataque
sniffing, dado que a partir de él se realizaron los visualizadores de paquetes.
2.1 Ataque Spoofing
El spoofing es un ataque en el cual una máquina intrusa se hace pasar por otro equipo de la red,
inyectando información adicional en una comunicación. Existen diferentes mecanismos para
realizar el spoofing por medio de los protocolos ARP, RARP e ICMP.
2.1.1 Spoofing ARP
Un ataque spoofing ARP se lleva a cabo cuando una máquina A requiere conocer la dirección
física de otra máquina B, para esto la máquina A envía una solicitud ARP por difusión, logrando
con ello que todas las máquinas conectadas a la misma red la reciban, pero sólo la máquina B que
contiene la dirección IP enviada en el mensaje, responde, aunque en el caso de aplicar el ataque la
máquina intrusa también responderá a dicho mensaje poco tiempo después que la máquina B,
haciendo con ello que la máquina A tome en cuenta la última respuesta recibida, y actualice su
tabla de direcciones con la pareja: dirección IP destino real, dirección física intrusa, originando con
ello que la próxima vez que la máquina A quiera comunicarse con la máquina B envíe los paquetes
a la máquina intrusa. Para completar el ataque la máquina intrusa realiza una solicitud ARP, en la
que incluye la dirección IP de la máquina origen y su propia dirección física, con ello la máquina
destino actualizará su tabla de direcciones con la pareja: dirección IP origen, dirección física
intrusa, ocasionando que cuando la máquina destino le mande información a la máquina origen
ésta pase antes por la máquina intrusa.
Así mismo, ARP es utilizado para enviar respuestas falsas aún si una solicitud no ha sido enviada,
también se pueden enviar continuamente mensajes ARP buscando con ello mantener los cachés
actualizados con información errónea, de esta forma el intruso le crea alias a las interfaces de las
máquinas contra las cuales va a realizar un ataque.
2.1.2 Spoofing RARP
RARP al igual que ARP no provee mecanismos de autentificación, por lo que un intruso puede
enviar solicitudes falsas a un servidor real. Para hacer esto el intruso puede asignar la dirección IP
de una máquina existente a una estación de trabajo impidiendo el tráfico hacía la máquina víctima.
2.1.3 Spoofing ICMP
Los mensajes ICMP de cambio de ruta, se pueden utilizar para llevar a cabo un ataque de este tipo
que consiste en que la máquina intrusa le envía a la máquina origen un mensaje indicándole que
debe cambiar la dirección del router a donde envía los datagramas por la dirección de la máquina
intrusa. De esta forma se crea un mecanismo de comunicación similar al descrito en Spoofing ARP.
2.1.4 Spoofing a servicios
El servidor DNS puede ser atacado por un spoofing para aceptar y usar información incorrecta. Lo
que se realiza es inyectar información falsificada en el caché de dicho servidor, y los usuarios del
servidor pueden dirigirse a sitios erróneos.
Otro servicio básico que puede ser atacado por medio de spoofing es el SMTP, aquí lo que se
pretende es engañar diciendo que pertenecemos a un servidor, y de esta manera enviar un
2
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
mensaje con una dirección de correo falsa, a este hecho se le conoce como mail relaying. Este tipo
de ataque es frecuentemente utilizado para el envío de correos basura, es decir, spam.
Los dos ataques a servicios descritos anteriormente se encuentran ampliamente documentados en
[1].
2.2 Ataque Smurf
El ataque smurf consiste en enviar paquetes ICMP de solicitud de eco con una falsa dirección de
origen (IP de la víctima) a una dirección de difusión (broadcast). De esta forma esta solicitud
llegará a muchas máquinas, cada una de las cuales enviarán sus paquetes de respuesta de eco a
la dirección origen de la petición (cuyos datos estaban falseados y apuntan a la víctima). El
resultado de este ataque afecta a la red intermediaria, por donde pasan los paquetes IP, y a la
máquina víctima, la cual se ve inundada de paquetes IP, dando como resultado una saturación en
el enlace.
2.3 Ataque DoS
Un ataque de negación de servicios (DoS) provoca que algún recurso esté demasiado ocupado
para responder solicitudes legítimas o para negar el acceso a los usuarios válidos de una
determinada máquina. A partir de un ataque smurf se puede llegar a este tipo de categoría de
ataque.
El ataque Teardrop se encuentran en esta categoría, este ataque consiste en enviar paquetes
fragmentados hacía una máquina destino con la opción de reensamblarlo al final, sólo que cuando
la máquina intenta llevar a cabo esta tarea se da cuenta que los fragmentos se traslapan entre sí,
es decir, hay regiones de datos comunes en dos paquetes distintos provocando que la máquina
deje de funcionar.
Otro tipo de ataque DoS es el llamado Land, el cual consiste en mandar a una máquina y puerto
especifico (de la víctima) un paquete con el bit SYN activo y con dirección y puerto fuente también
de la máquina víctima, es decir, como si la máquina víctima quisiera realizar una conexión a ella
misma. Esto provoca que la máquina víctima deje de funcionar en la mayoría de los casos o en
otros que la carga del CPU alcance valores muy altos.
2.4 Ataque Sniffing
El objetivo de ataque sniffing es obtener e interpretar las tramas que circulan por un fragmento de
red, extraer a partir de ellas los datos y opcionalmente almacenar parte, o la totalidad de dichos
datos.
A partir de este tipo de ataque se construyeron los visualizadores de paquetes para monitorear y
controlar las acciones de los usuarios.
Los ataques sniffing se basan en colocar la tarjeta de red en modo promiscuo. Este modo permite
a la tarjeta recibir y procesar todos los paquetes que pasan por su red local en lugar de atender
solamente a los paquetes destinados a su dirección física y a transmisiones broadcast, como
sucedería por defecto.
3
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
En el sistema operativo UNIX, el modo promiscuo se puede colocar por medio de mecanismos que
brinda el sistema, tales como el filtrado de paquetes BSD (BPF) y el network interface tap (NIT).
Además de los mecanismos que presenta cada sistema se dispone de un medio portable para
establecer este modo. Este medio consiste en modificar las banderas de la interfaz de red por
medio de la manipulación de sockets. Hay que hacer notar que para la manipulación de los
mecanismos del sistema y la programación con sockets se debe tener privilegios de superusuario.
Por esta y muchas más razones se debe tener cuidado de restringir la entrada al sistema como
superusuario, por que pueden colocar programas sniffers (visualizadores de paquetes) que
realizan este ataque. Si se sospecha que existe un programa de este tipo ejecutándose en el
sistema se puede recurrir a los comandos ifconfig y netstat para checar el modo de funcionamiento
de la interfaz, o si se quiere checar las máquinas de la red desde el servidor se debe utilizar o
programar una herramienta que envíe paquetes de solicitud ARP con una dirección IP no válida en
la red, y de esta manera provocar que la máquina que esta ejecutando un sniffer responda a la
solicitud.
3. VISUALIZADORES DE PAQUETES IPv4/IPv6 IMPLEMENTADOS
Los visualizadores de paquetes pueden ser herramientas de gran utilidad para un administrador de
red, dado que le ayudan a detectar problemas en su red y posibles ocurrencias de ataques, tales
como: Spoofing ARP, Spoofing RARP, Spoofing ICMP, Spoofing al servicio DNS, Smurf, y DoS.
El software desarrollado (llamado sistema IPLook), el cual se ejecuta bajo el sistema Linux, esta
compuesto de un conjunto de visualizadores encargados de observar y almacenar el tráfico de un
determinado tipo de paquete, es decir, IP, TCP, UDP, ICMP, ARP, RARP e IPv6. Con la
información recolectada y teniendo en cuenta los tipos de ataques que se pueden presentar, el
administrador puede tomar alguna decisión para proteger a su red. En la figura 1 se muestra como
esta formado el software desarrollado.
Figura 1. Módulos del sistema implementado.
4
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
Los visualizadores que trabajan con los protocolos IPv4 fueron programados utilizando el siguiente
algoritmo.
Algoritmo para captura de paquetes IPv4
1. Inicio
2. Abrir un socket de la familia AF_INET del tipo SOCK_PACKET con Protocolo: 0x800
(para IP), 0x0806 (para ARP), 0x8035 (para RARP) o ETH_P_ALL (para capturar todos los
paquetes encapsulado en el frame Ethernet) según se requiera.
banderas_dispos = socket(AF_INET, SOCK_DGRAM, Protocolo)
3. Hacer una operación ioctl sobre el socket para obtener la configuración de las interfaces de
red del sistema.
struct ifconf ifc;
ioctl(banderas_dispos, SIOCGIFCONF, (char *)&ifc)
4. Obtener las banderas de un dispositivo realizando una operación ioctl sobre el socket
incluyendo como petición SIOCGIFFLAGS y como tercer parámetro un apuntador a una
estructura ifreq cuyo campo ifr_name contiene un nombre de la interfaz de red válida del
sistema.
ioctl(banderas_dispos, SIOCGIFFLAGS, (char *)&ifreq)
Después de la llamada a la función, la estructura ifreq apuntada contiene en su campo
ifr_flags las banderas de la interfaz cuyo nombre se utiliza como parámetro.
5. Modificar las banderas
ifreq.ifr_flags|=IFF_PROMISC;
ioctl (banderas_dispos, SIOCSIFLAGS, &ifreq)
6. Realizar una operación de lectura sobre el dispositivo para capturar los paquetes y
seleccionar lo que se necesite.
7. Presentar los datos seleccionados en la interfaz creada
8. Fin
A continuación se muestran las interfaces de algunos módulos implementados. En la figura 2
se muestra la interfaz principal del sistema en la cual el usuario puede seleccionar las opciones
por medio de un menú o por medio del icono asociado con la captura de un determinado tipo
de paquete, por ejemplo si el usuario selecciona el icono TCP o se selecciona Capturar y
después TCP, se capturan los paquetes TCP como lo muestra la figura 3. En la figura 4 se
observan las gráficas de los mensajes ICMP capturados. El usuario también puede visualizar
los protocolos y servicios utilizados en su red, por medio de la opción Graficar, como lo
muestra la figura 5 y la figura 6, u observar las páginas visitadas como lo muestra la figura 7.
5
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
Figura 2. Pantalla principal del sistema.
Figura 3. Pantalla del módulo TCP.
6
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
Figura 4. Pantalla del módulo ICMP.
Figura 5. Pantalla del módulo Servicios.
7
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
Figura 6. Pantalla del módulo Encapsulados.
Figura 7. Pantalla del módulo Páginas.
En el desarrollo del módulo IPv6 se realizó la reconfiguración del kernel del sistema operativo para
que este pudiera aceptar los paquetes de tipo IPv6, y se añadió al sistema los paquetes para
realizar comunicación entre máquinas. Una vez realizado lo anterior se implemento el siguiente
algoritmo para capturar los paquetes IPv6. Cabe hacer notar que en este caso se utilizó la
biblioteca libpcap, la cual trabaja con el filtro BPF.
8
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
Algoritmo para captura de paquetes IPv6
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Inicio
Identificar el dispositivo para la captura (función pcap_lookupdev)
Abrir el dispositivo para escuchar paquetes (función pcap_open_live)
Crear archivo para almacenar datos capturados
Abrir el archivo para vaciar los paquetes capturados (función pcap_dump_open)
Obtener máscara de red (función pcap_lookupnet)
Colocar el filtro para IPv6 (función pcap_compile y función pcap_set_filter)
Iniciar ciclo de captura (función pcap_loop)
8.1 Capturar paquetes y almacenarlo en el archivo (función pcap_dump)
Liberar recursos (función pcap_close)
Abrir archivo de captura (función pcap_open_offline)
Iniciar ciclo de recuperación
11.1 Extraer paquete (función pcap_next)
11.2 Almacenar en la estructura Ethernet y obtener los datos
11.3 Almacenar en la estructura IPv6 y obtener datos
11.3.1 Si encabezado siguiente es 58 (ICMPv6) entonces
11.3.1.1 Almacenar en la estructura ICMPv6 y obtener datos
11.3.2 Sino
11.3.2.1 Saltar el encabezado
11.4 Presentar los datos obtenidos en la interfaz creada
Liberar recursos (función pcap_close)
Fin
El análisis de los paquetes IPv6 se muestran en la figura 8, lo primero que realiza este módulo es
la captura de una determinada cantidad de paquetes y después los analiza.
Figura 8. Pantalla del módulo IPv6 (fase de presentación).
Como se puede observar el sistema muestra la información que transportan los paquetes que
viajan por nuestra red, y teniendo en cuenta como trabajan algunos tipos de ataques, el
9
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
administrador puede tomar alguna medida de protección para su red. Lo que nosotros proponemos
como protección es la utilización de un router que permita el filtrado de paquetes por medio de
listas de acceso, no quiere decir que sea la única o la mejor protección, sólo es una posible
solución.
4. LISTAS DE ACCESO DE UN ROUTER
En el mercado existen diferentes productos que permiten realizar filtrado de paquetes, aquí sólo
hablaremos acerca del router CISCO. Los routers CISCO tienen dos tipos básicos de listas de
acceso para realizar el filtrado de paquetes: las listas de acceso estándar y las listas de acceso
extendidas. Una lista de acceso estándar permite el filtrado de paquetes en base a la dirección
fuente, mientras que las listas de acceso extendidas se basan en la dirección fuente, la dirección
destino, protocolo y puerto utilizado [2] [3].
El formato general para las listas de acceso estándar con el protocolo IP es el siguiente:
access-list [número] [deny | permit] [fuente] [máscara] [log]
El campo número denota el número de la lista de acceso, este número puede estar entre 1 y 99. La
barra (|) denota que se debe de elegir la palabra clave deny o permit, permit permite que los
paquetes puedan viajar a través de la interfaz, mientras que la palabra clave deny no les permite el
paso. El campo fuente especifica la dirección IP de la máquina o la red desde la cual el paquete es
enviado. El campo máscara es aplicado a la fuente.
El formato general de las listas de acceso extendidas es:
access-list [número] [deny | permit] [protocolo|clave-protocolo] [fuente] [máscara-fuente]
[puerto fuente] [destino] [máscara-destino] [puerto destino] [log] [opciones]
Similar a las listas de acceso estándar, el número de la lista se utiliza para identificar la lista
extendida, el número en este caso debe ser un entero entre 100 y 199. El uso de deny o permit
especifica si el paquete IP debe ser bloqueado o permitido. El protocolo especifica el protocolo a
ser filtrado, tal como IP, TCP, UDP, ICMP. La dirección fuente y la máscara tiene la misma función
que en una lista de acceso estándar, en esta lista también se puede utilizar los términos host y
any. El puerto fuente puede ser especificado en forma numérica o por medio de un mnemónico,
por ejemplo, se puede usar el número 80 o http para especificar el protocolo de transmisión de
hipertexto. Para TCP o UDP también se puede usar los operadores < (lt), >(gt), =(eq) y ≠(neq). La
dirección destino y máscara destino tiene la misma estructura que la dirección fuente y máscara
fuente, aquí también se puede utilizar los términos any y host. El puerto destino puede ser
especificado igual que el puerto fuente, ya sea por medio de un número, un mnemónico, o un
operador con un número o con un mnemónico para especificar un rango.
Cabe hacer notar que el orden de las listas de acceso es importante, no se pueden reordenar o
borrar una sola declaración de la lista en el router, para realizar esto es mejor que se creen todos
los criterios en un servidor TFTP, y después cargarlos en el router [4]. Para esto, los pasos a seguir
son:
1. Escribir las listas de acceso (en este punto, proponemos la utilización del analizador
sintáctico construido)
2. Entrar al router con privilegios.
3. Usar el comando copy tftp: archivo system:runnig-config, donde archivo es el
nombre del archivo donde se almacenaron las listas de acceso.
10
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
4. Finalmente ejecutar el comando copy system:runnig-config nvram:startup-config
para almacenar las listas de acceso en el router.
4.1 Analizador sintáctico implementado
Teniendo en cuenta la sintaxis de las listas de acceso de un router, se construyo un analizador
sintáctico, el cual además de analizar la correcta escritura de las listas, le brinda al usuario la
facilidad de escritura de dichas listas por medio de su interfaz. Para llevar a cabo la construcción
del analizador sintáctico se utilizó la herramienta flex para realizar la fase de análisis léxico y la
herramienta yacc para la fase de análisis sintáctico. Las interfaces para la creación de las listas de
acceso se muestra en la figura 9 y figura 10. Este módulo además de guiar al usuario en la
escritura de las reglas de acceso, almacena en un archivo las definiciones establecidas, que
posteriormente son revisadas, indicándole al usuario la ocurrencia de errores, y de esta manera
evitarlos antes del envío de las reglas al router.
Figura 9. Pantalla de creación de listas de acceso estándar.
Figura 10. Pantalla de creación de listas de acceso extendidas.
11
Clave: 17GGC82
Sistemas Computacionales
SOMI XVII
CONGRESO NACIONAL DE INSTRUMENTACION
Utilizando el mecanismo de filtrado de paquetes lo que se recomienda bloquear es lo siguiente:
•
•
•
•
•
Direcciones de difusión, las cuales son empleadas por los ataques smurf.
Paquetes de entrada con direcciones fuentes correspondientes a direcciones internas (tipo
de ataques spoofing).
Paquetes de entrada de direcciones no confiables.
Paquetes con direcciones loopback.
Paquetes SMTP que intenten entrar a un servidor diferente al destinado como servidor de
correos.
5. CONCLUSIONES
Con la información recolectada de los paquetes que viajan por la red, se construyeron: estadísticas
de los servicios de red utilizados, estadísticas de los paquetes encapsulados dentro de las tramas
Ethernet, estadísticas de los servidores más utilizados, reporte de conexiones, reporte de las
páginas visitadas, estadísticas de los mensajes ICMP, ARP, y RARP, reportes y análisis del tráfico
IPv6, con todo esto se tiene la posibilidad de detectar fallos de seguridad y permitir la recolección
de pruebas suficientes y concisas de las actividades de los usuarios.
El analizador de listas de acceso construido ayuda al administrador a crear el conjunto de reglas
que se pueden utilizar para restringir la entrada o salida de información de un dominio o dirección
de Internet, evitando así posibles ataques.
La etapa que se encuentra trabajando actualmente es la construcción de un simulador de listas de
acceso que trabajará con los visualizadores. El objetivo consiste en simular las acciones de las
listas de acceso (previamente revisadas por el analizador de listas) antes de enviarlas al router,
para esto los visualizadores se encargaran de proporcionar al simulador los diferentes campos que
se necesitan para el chequeo de dichas listas.
REFERENCIAS
1.
2.
3.
4.
W. Baluja, 1er Congreso Iberoamericano de Seguridad Informática, “Los ataques spoofing.
Estrategia general para combatirlos”, (Ed. ITM, Michoacán, Méx.), (2002).
G. Held, K. Hundley, CISCO. Access Lists, (Ed. McGraw-Hill, USA), 35-54, (2000).
J. Habraken, Practical. Cisco Routers, (Ed. Que, USA), 243-258, (1999).
Cisco Documentation, CISCO IOS 12.0. Network Security, (Ed. Cisco Press, USA), 302,
(1999).
12
Clave: 17GGC82
Sistemas Computacionales
Descargar