Proyecto de grado presentado para optar el ttulo de Ingeniero de Sistemas
Director: Ingeniero Edgar Enrique Ruiz Garca
PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA CARRERA DE INGENIERIA DE SISTEMAS BOGOTA D.C. JUNIO DEL 2005
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERIA
CARRERA DE INGENIERIA DE SISTEMAS
Rector Magnfico: Padre Gerardo Remolina Vargas S.J.
Decano Acadmico Facultad de Ingeniera: Ingeniero Francisco Javier Rebolledo Muoz
Decano del Medio Universitario Facultad de Ingeniera: Padre Jos Sarmiento Nova S.J.
Director Carrera de Ingeniera de Sistemas: Ingeniera Hilda Cristina Chaparro Lpez
Director Departamento de Ingeniera de Sistemas: Ingeniero Germn Alberto Chavarro Flrez
Nota de Aceptacin ______________________________________________________ ______________________________________________________ ______________________________________________________
________________________________________ Director del Proyecto
________________________________________
Jurado
________________________________________
Jurado
JUNIO DEL 2005
Artculo 23 de la Resolucin No. 1 de Junio de 1946 La Universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus proyectos de grado. Slo velar porque no se publique nada contrario al dogma y la moral catlica y porque no contengan ataques o polmicas puramente personales. Antes bien, que se vean en ellos el anhelo de buscar la verdad y la Justicia
AGRADECIMIENTOS
En primer lugar quiero agradecer a la Carrera de Ingeniera de Sistemas de la Pontifica Universidad Javeriana por haberme instruido y formado como Ingeniero y por haberme brindado el conocimiento que me ayud a superar esta etapa de mi vida.
Debo un especial reconocimiento a mis padres por haberme brindado esta gran oportunidad de estudio, por estar siempre conmigo en mis decisiones, en mis problemas y en todo momento que tuve la necesidad de ellos. Muchas gracias a mi hermano por haberme servido de gua, de compaero, pero sobre todo, de hermano, de alguien que siempre est al lado de uno. Muchas gracias a mi hermana por darme siempre esos empujoncitos de aliento, que de una forma muy cariosa, lo ayudan a uno a seguir adelante sin importar lo que venga.
Muchas gracias a mi novia que estuvo presente durante mi ltimo ao en la Universidad y que me apoy en todo momento. A mis amigos de la Universidad y del colegio, amigos incondicionales que estuvieron presentes en mi vida desde los comienzos ms bsicos de mi formacin y con los cuales comparto momentos fabulosos. En ellos pude encontrar siempre una mano amiga cuando era necesario.
No hay que olvidar aquellas personas que me permitieron irme formando como Ingeniero y que me fueron brindando los pilares del conocimiento: mis profesores. Muchas gracias por haberme enseado todo aquello que necesit en el descubrimiento del saber.
Al director de mi tesis le agradezco toda su paciencia en aquellos momentos donde ms se necesitaba, por haberme guiado en todo este proceso y haberme brindado un ambiente de confianza y bienestar para el desarrollo de esta investigacin.
TABLA DE CONTENIDO
GLOSARIO ................................................................................................................ 10 1 INTRODUCCIN.............................................................................................. 12 2 PLANTEAMIENTO DE LA INVESTIGACIN.............................................. 15 2.1 OBJETIVO GENERAL.............................................................................. 15 2.2 OBJETIVOS ESPECFICOS...................................................................... 15 2.3 REQUISITOS PARA EL DESARROLLO DEL PROYECTO.................. 15 3 METODOLOGA............................................................................................... 16 3.1 DESARROLLO METODOLGICO DE LA INVESTIGACIN............ 16 4 MARCO TERICO............................................................................................ 18 4.1 ADMINISTRACIN DE SEGURIDAD ................................................... 18 4.2 ADMINISTRACIN DE RED .................................................................. 18 4.3 DOCUMENTACIN SOBRE SNMP........................................................ 19 4.3.1 Protocolo de administracin simple (SNMP) ..................................... 19 4.3.1.1 Componentes de SNMP.................................................................. 20 4.3.1.2 Representacin de la informacin................................................... 21 4.3.1.3 Operaciones (comandos) del protocolo........................................... 22 4.3.1.4 Estructura de la PDU....................................................................... 24 4.3.2 Protocolo de administracin simple versin 3 (SNMPv3).................. 25 4.3.2.1 Arquitectura SNMPv3..................................................................... 26 4.3.2.2 Formato del mensaje ....................................................................... 29 4.3.2.3 Modelo de seguridad basado en usuarios (USM) ........................... 30 4.3.2.3.1 Parmetros de seguridad de USM............................................. 30 4.3.2.3.2 Motor SNMP autoritativo ......................................................... 31 4.3.2.3.3 El grupo MIB usmUser [10] ..................................................... 33 4.3.2.3.4 Descubrimiento de motores SNMP........................................... 34 4.3.2.3.5 Administracin de llaves........................................................... 34 4.3.2.4 Modelo de control de acceso basado en vistas (VACM) ................ 35 4.3.2.4.1 Elementos del modelo VACM.................................................. 35 4.3.2.4.2 La MIB del VACM................................................................... 36 4.3.3 Comparacin entre seguridad de SNMPv1 y SNMPv3...................... 37 4.4 DOCUMENTACIN DE MIB .................................................................. 38 4.4.1 Generalidades de MIB......................................................................... 38 4.4.2 La estructura de administracin de la informacin............................. 38 4.4.3 Interaccin con la MIB........................................................................ 39 4.4.4 Notacin de sintaxis abstracta ASN.1................................................. 40 4.4.4.1 Conceptos ASN.1............................................................................ 42 4.4.4.2 Tipos abstractos de datos ................................................................ 43 4.4.4.3 Identificacin de objetos ................................................................. 46 4.4.4.4 Ejemplo de la MIB de prueba ......................................................... 47 5 DESARROLLO DEL PROYECTO ................................................................... 49 5.1 SELECCIN DE PROGRAMAS A UTILIZAR....................................... 50
5.1.1 Programa Net-SNMP.......................................................................... 55 5.1.1.1 Pruebas de concepto........................................................................ 55 5.1.2 Seleccin de herramientas de seguridad ............................................. 57 5.1.3 Seleccin de motor de base de datos................................................... 62 5.1.4 Anlisis del protocolo syslog .............................................................. 63 5.2 ARQUITECTURA DEL MODELO PROPUESTO................................... 64 5.2.1 Arquitectura general............................................................................ 64 5.2.2 Arquitectura del adaptador.................................................................. 66 5.2.2.1 Adaptador........................................................................................ 67 5.2.2.1.1 Analizador de logs..................................................................... 67 5.2.2.1.2 Consideraciones sobre los logs ................................................. 69 5.2.2.1.3 Consideraciones sobre la MIB.................................................. 70 5.2.2.1.4 Construccin del adaptador....................................................... 72 5.2.3 Arquitectura de la consola de seguridad ............................................. 78 5.2.3.1 Consola de seguridad ...................................................................... 80 5.2.3.1.1 Subsistema de ambiente grfico................................................ 81 5.2.3.1.2 Subsistema de control de incidentes de seguridad.................... 81 5.2.3.1.3 Subsistema de recepcin de mensajes SNMP........................... 82 5.2.3.1.4 Subsistema de envo de mensaje SNMP................................... 82 5.2.3.2 Modelo entidad-relacin de la base de datos utilizada.................... 82 5.2.3.3 Diagrama de clases de la consola de seguridad .............................. 83 6 PRUEBAS........................................................................................................... 84 6.1 DESCRIPCIN DE LA PRUEBA............................................................. 84 6.2 DESARROLLO DE LAS PRUEBAS ........................................................ 85 6.3 RESULTADOS DE LAS PRUEBAS......................................................... 94 7 CONCLUSIONES .............................................................................................. 96 8 CONTINUIDAD DEL PROYECTO.................................................................. 99 8.1 POSIBLES TRABAJOS FUTUROS.......................................................... 99 BIBLIOGRAFIA ...................................................................................................... 101 ANEXO 1: TRMINOS DE LICENCIAMIENTO.................................................. 103 ANEXO 2: ESTRUCTURA DE UNA MIB............................................................. 109 ANEXO 3: IMPLEMENTACIN DE UNA MIB................................................... 112 ANEXO 4: MANUAL DEL USUARIO................................................................... 122 ANEXO 5: INSTALACIN DEL PROGRAMA NET-SNMP ............................... 140 ANEXO 6: MANUAL DE INSTALACIN............................................................ 145 ANEXO 7: CONTENIDO DEL CD......................................................................... 146 ANEXO 8: DIAGRAMA DE CLASES GENERAL................................................ 147
TABLA DE FIGURAS
Figura 1. Transporte de un mensaje SNMP ................................................................ 19 Figura 2. Estructura general de la MIB....................................................................... 21 Figura 3. Intercambio de mensajes SNMP.................................................................. 23 Figura 4. Estructura de la PDU................................................................................... 24 Figura 5. Diagrama de una entidad SNMP ................................................................. 27 Figura 6. Formato del mensaje SNMPv3.................................................................... 29 Figura 7. Formato del mensaje SNMPv3 con el campo msgSecurityParameters ...... 31 Figura 8. Forma de manejo de las llaves..................................................................... 32 Figura 9. Relacin de componentes ASN.1 ................................................................ 41 Figura 10. Vista del rbol construido.......................................................................... 48 Figura 11. Arquitectura propuesta .............................................................................. 49 Figura 12. Get utilizando SNMPv2............................................................................. 51 Figura 13. Response del mensaje SNMPv2 ................................................................ 52 Figura 14. Get utilizando SNMPv3............................................................................. 53 Figura 15. Response del mensaje SNMPv3 ................................................................ 54 Figura 16. Prueba de concepto realizada..................................................................... 56 Figura 17. Funcionamiento de Syslog......................................................................... 63 Figura 18. Arquitectura general .................................................................................. 65 Figura 19. Arquitectura del adaptador ........................................................................ 66 Figura 20. Estructura de los logs................................................................................. 70 Figura 21. Implementacin de la MIB para la herramienta ........................................ 71 Figura 22. Estructura general de la MIB para el modelo propuesto ........................... 72 Figura 23. Estructura en C para la herramienta Kerio ................................................ 73 Figura 24. Arquitectura de la consola de seguridad.................................................... 79 Figura 25. Subsistemas de la consola de seguridad .................................................... 80 Figura 26. Diagrama entidad-relacin......................................................................... 83 Figura 27. Diagrama de la red de prueba utilizada ..................................................... 86 Figura 28. Utilizacin de la red en la subred 1 ........................................................... 87 Figura 29. Utilizacin de la red en la subred 1 ........................................................... 88 Figura 30. Utilizacin de la red................................................................................... 90 Figura 31. Utilizacin de la red................................................................................... 91 Figura 32. Utilizacin de la red................................................................................... 92 Figura 33. Utilizacin de la red................................................................................... 93 Figura 34. Trfico normal de la red ............................................................................ 94 Figura 35. Grficas del envo de un gran nmero de Traps a la consola.................... 94 Figura 36. Estructura de un mensaje SNMPv3........................................................... 98
LISTA DE TABLAS
Tabla 1. Principios garantizados por cada grupo de aplicacin.................................. 58 Tabla 2. Caractersticas analizadas de los Anti-Spyware ............................................ 59 Tabla 3. Caractersticas analizadas de los antivirus.................................................... 60 Tabla 4. Caractersticas analizadas de los firewalls.................................................... 60 Tabla 5. Caractersticas analizadas de los IDS............................................................ 60 Tabla 6. Criterios de seleccin de herramientas.......................................................... 61 Tabla 7. Resultados de aplicar criterios a herramientas.............................................. 62 Tabla 8. Orden de las herramientas segn su peso...................................................... 62 Tabla 9. Porcentaje de notificacin de eventos en el log............................................ 89
10 GLOSARIO
1. SNMP (Simple Network Managment Protocol): usado para administrar la configuracin de dispositivos de red desde una estacin de trabajo [5]. 2. MIB (Management Information Base): es una coleccin de informacin que esta ordenada en forma de rbol donde se registran las variables a monitorear con sus respectivos valores y permiten un tipo de interoperabilidad. 3. OID (Object ID): identifica de manera nica cada objeto representado en la MIB y es una secuencia de nmeros enteros no negativos separados por un punto. 4. IDS (Intrusion Detection System): es una herramienta que permite monitorear el comportamiento y el uso que se le da a los recursos en una mquina y detectar si alguien est haciendo algo indebido. 5. Firewall: un equipo que impone un conjunto de directivas de seguridad que restringen de forma severa el acceso al sistema y a los recursos [5]. 6. ASN.1 (Abstract Syntax Notation 1): lenguaje utilizado para definir tipos de datos. 7. Agente SNMP: programa que permite a un dispositivo responder a solicitudes SNMP. 8. Solicitud SNMP: solicitudes enviadas o recibidas por una entidad administradora. Pueden ser Get, Set, Trap, etc. 9. Autenticacin: el proceso de determinar que una entidad es quien o lo que dice ser [5]. 10. Control de acceso y autorizacin: el proceso de determinar los recursos y servicios que puede usar una entidad [5]. 11. Integridad: los datos reflejen la realidad y que correspondan con lo que debe ser y no ha sido modificadas indebidamente. 12. Disponibilidad: los servicios y la informacin deben, en todo momento, estar disponibles. 13. Confidencialidad: que la informacin slo sea vista por los entes involucrados en la comunicacin y que un tercero no pueda ingresar. 14. No repudio: que algn ente que haya participado en la comunicacin no pueda negar su participacin en ella. 15. Auditabilidad: la herramienta guarda algn tipo de registro de eventos que han sucedido en el tiempo. 16. BER (Basic Enconding Rules): un conjunto de reglas para traducir valores ASN.1 a un flujo de octetos para transmitir por la red. 17. SMI (Structure of Management Information): define agrupaciones, nombres, tipos de datos permitidos y la sintaxis para escribir MIBs. 18. NMS (Network Management Station): estacin de red encargada de gestionar varios dispositivos de red. 19. PDU (Protocol Data Unit): define la estructura de la informacin que va a ser enviada por la red. 11 20. USM (User-based Security Model): modelo de seguridad utilizado por SNMPv3 para administrar el envo de mensajes SNMPv3. 21. VACM (View-based Access Control Model): modelo de control de acceso que permite administrar quien tiene acceso a que informacin en la MIB. 12
1 INTRODUCCIN
Hoy en da en las empresas ha comenzado a ser de suma importancia el manejo que se le da a la informacin y la forma como es utilizada la red. Debido a esto, son muchas las funciones que desempea un administrador de red: entre ellas debe velar por la gestin de la red y por la seguridad de esta. Estas dos actividades han tenido un gran desarrollo tanto terico como prctico. Tanto para la seguridad como para la gestin de red existen diversos programas en el mercado; algunos son libres y otros cuestan mucho dinero. El problema que tienen estas herramientas es que hacen su trabajo de manera que no se puede relacionar la gestin de red y la seguridad. Normalmente cada una de ellas debe ser administrada desde el entorno visual que ofrecen para interactuar. Por esta razn, un administrador de red debe estar constantemente manejando varias herramientas a la vez para poder monitorear lo que est sucediendo. Hasta el momento no se han encontrado herramientas que integren esta funcionalidad bajo un mismo programa.
El mundo de la gestin de red es muy importante y debido a la alta sistematizacin en las empresas, se ha tornado crtica la necesidad de saber que est pasando con los equipos de la red. A grandes rasgos, la gestin de red es el hecho de anticiparse a fallos en la red y de detectar su posible impacto en la prestacin de un servicio a los usuarios [1]. La esencia de la gestin de redes se puede definir como Gestin es todo y, especialmente, es proactividad, caracterstica que desgraciadamente no es fcil encontrar en las herramientas que ofrece el mercado. Es esencial conocer no slo los fallos que se pueden estar produciendo en la red en un momento determinado, sino poder anticiparte a los mismos, estar preparado y saber cmo reaccionar en caso de que se produzcan [1].
En forma general lo que pretende la gestin de red es minimizar los riesgos frente a una posible falla, minimizar el costo asociado con las operaciones al evitar que suceda algn tipo de problema y mantener la red en funcionamiento brindando los servicios sin ningn problema. Las herramientas de gestin de red se pueden ver como un elemento de seguridad en la red, ya que permiten saber sobre el funcionamiento de los equipos y pueden ayudar a prever futuros problemas, en otras palabras fortalecen la disponibilidad de los servicios.
Algunas de las funciones principales de un sistema de gestin de red son [3]: descubrir automticamente la topologa de la red, brindar herramientas de diagnstico, monitorizacin de la red, gestin de MIBs, entre otras. Normalmente estos sistemas que utilizan SNMP consisten de [3]: agente, consola de gestin de red y MIB.
13 Uno de los elementos ms importantes en los sistemas de gestin de red son los protocolos que utilizan para monitorear los elementos de la red. Existen dos protocolos en el mercado para este fin: SNMP (Simple Network Management Protocol) y CMIP (Common Management Information Protocol). Ellos definen un monitor (NMS, Network Management Station) y varios elementos de red que tienen un agente en ellos, el cual va a reportar sucesos al monitor.
Vale la pena mencionar que las primeras dos versiones del protocolo SNMP son muy inseguras, ya que no implementan ningn mtodo de seguridad, como si lo hace la versin tres. Debido a esta falencia de seguridad, se puede proporcionar gran cantidad de informacin a un atacante sobre la configuracin de los equipos y la red [4].
Por otro lado, tenemos el mundo de la seguridad. Es un mundo muy complejo, en el cual hay muchas variables y sucesos que hay que tener en cuenta. A grandes rasgos la seguridad pretende proteger y garantizar que la informacin este segura del ambiente externo e interno de una organizacin. Sus objetivos bsicos son autenticacin, control de acceso y autorizacin, integridad, disponibilidad, confidencialidad, no repudio y auditabilidad.
Para el mundo de seguridad hay diversas aplicaciones que pretenden proteger contra ciertos riesgos. Existen, por ejemplo, aplicaciones para la deteccin de intrusos (IDS), antivirus, firewalls, polticas en sistemas operativos, entre otros. Cada uno de estos programas pretende proteger o garantizar alguno de esos objetivos de seguridad mencionados. Otro problema encontrado es la independencia que existe entre cada una de estas aplicaciones, las cuales realizan muy bien sus funciones, pero lo hacen independientemente unas de otras. Hasta el momento no se han encontrado herramientas que integren funcionalidad de estas aplicaciones. Solo lo hacen algunas herramientas de manera centralizada para su producto, como por ejemplo, los antivirus. Existen algunas herramientas comerciales de seguridad como Netscreen IDP y los productos de Checkpoint que permiten configurar alertas de eventos de seguridad detectados va SNMP hacia una consola de gestin. Estas alertas son solo informativas y solo sirven para el monitoreo o la consolidacin de logs. Adicionalmente no soportan SNMPv3 y no brindan ninguna posibilidad de interactuar con las aplicaciones desde una consola central.
Entre estas aplicaciones podemos encontrar firewalls personales y empresariales que sirven para bloquear y filtrar trfico mediante el uso de reglas. Los IDS permiten detectar ataques segn anlisis de trfico y pueden utilizar como forma de deteccin firmas (patrn preestablecido) o autnomos (a partir de la caracterizacin del trfico detectan desviaciones). Los antivirus permiten escanear los archivos y los correos en busca de virus, gusanos, troyanos, entre otros, que pueden causar daos en las mquina, archivos o en la red en general. Los sistemas operativos permiten manejar seguridad a nivel de usuario, polticas de acceso y uso de los recursos, permiten configurar protocolos, puertos, parches, etc. Todas estas herramientas generan ciertos 14 tipos de alertas visuales o notificaciones va correo, pero primordialmente generan logs.
Un aspecto importante es que muchas de estas aplicaciones generan algn tipo de log, en donde se va guardando la informacin de eventos durante su ejecucin. Algunas herramientas como por ejemplo GFI LANguard S.E.L.M. [6] se encargan de monitorear los logs de eventos de Windows y permite saber de manera centralizada lo que sucede con el sistema operativo, ya que analiza los eventos de aplicacin, seguridad y sistema generados por este sistema operativo. Por ejemplo, permite saber cuando alguien inicia sesin, cuando una aplicacin genera un error, etc. Pero no se encarga de integrar otras herramientas de seguridad.
Hasta ahora no se ha encontrado evidencia alguna de una herramienta que integre la gestin de red y la seguridad de redes. En el mercado existen muchas aplicaciones para cada uno de estos mundos. Hay herramientas gratuitas, de costo medio y hasta de un costo muy elevado, a lo cual slo podran acceder empresas con mucho capital. Es importante resaltar que por el hecho que una herramienta sea gratuita, no significa que realice un trabajo deficiente. Es aqu donde el proyecto cobra valor, al permitir que se puedan integrar varias herramientas de seguridad, sin importar su costo, bajo una consola de seguridad las cuales van a ser monitoreadas por esta consola. Lo importante de estas herramientas de seguridad es que deben generar logs legibles, por ejemplo, logs en archivos de texto. Adicionalmente, se puede utilizar una herramienta de gestin de red para poder integrar los dos mundos mediante dicha consola. De esta forma se logra tener la administracin de la red en una sola aplicacin que puede funcionar con distintos productos del mercado. Por esta razn el proyecto puede ser de inters para las Mipymes y grandes empresas. Es necesario aclarar que el proyecto se centra en el uso de herramientas gratuitas debido al fcil acceso que se tiene a estas.
Con la investigacin se busca crear una conciencia en los desarrolladores de las aplicaciones de seguridad, para que incorporen en sus herramientas un agente SNMP y as lograr que la administracin y monitorizacin de stas se pueda hacer sin la necesidad de crear un adaptador para cada una de las herramientas.
Como se ha mencionado anteriormente, se desea integrar algunas herramientas de seguridad bajo una herramienta que se encargar de monitorizar las alertas que estas generen. Esto ser posible mediante tres elementos: un protocolo seguro de comunicacin, ya que como estamos hablando de monitorear la seguridad, ste no debe ser un punto inseguro en la arquitectura; un adaptador, encargado de monitorear los programas en un equipo y por ltimo, la consola de seguridad, que se va a encargar de procesar los reportes de los adaptadores. El proyecto pretende dejar abierta la posibilidad para que en el futuro, se pueda utilizar una herramienta de gestin de red para monitorear la seguridad de la red. 15
2 PLANTEAMIENTO DE LA INVESTIGACIN
2.1 OBJETIVO GENERAL
Crear un modelo de gestin de seguridad de red que por medio de mdulos permita monitorear herramientas de seguridad. Este brindar soporte a SNMP, para la futura integracin con herramientas de gestin.
2.2 OBJETIVOS ESPECFICOS
Apropiarse del conocimiento del funcionamiento de SNMP y de las MIB. Seleccin de un protocolo seguro para la comunicacin. Seleccin de herramientas de seguridad a utilizar para validar el modelo. Diseo y documentacin del modelo de los adaptadores. Implementacin de los adaptadores para que monitoreen las herramientas de seguridad seleccionadas. Diseo e implementacin de la consola de seguridad con soporte a SNMP.
2.3 REQUISITOS PARA EL DESARROLLO DEL PROYECTO
Utilizacin de herramientas de seguridad gratuitas. Herramientas que generen logs de texto legibles. Estos logs deben contener la mayor cantidad de informacin acerca de un evento de seguridad. Utilizar el protocolo SNMP. Tratar de mantener variedad en los sistemas operativos soportados por las herramientas de seguridad. En la medida de lo posible tratar que se pueda interactuar de alguna manera con la herramienta. 16
3 METODOLOGA
La principal metodologa de investigacin que se utilizar en el proyecto se basa en el mtodo cientfico. Se iniciar con un mtodo de exploracin, que ayudar a conocer la informacin pertinente acerca del proyecto. Luego, se utilizar una metodologa experimental, donde se proceder a validar el conocimiento adquirido. El cual se describe a continuacin.
Primero que todo, se debe encontrar el problema a darle solucin con el presente proyecto. Luego, se realizar una documentacin profunda sobre el funcionamiento de SNMP y de las MIBs. El proceso de desarrollo se realizar utilizando el paradigma de programacin orientada a objetos. La documentacin ser transversal a la etapa de desarrollo. Se utilizar un proceso de desarrollo iterativo, en donde se ir verificando o refinando actividades anteriores. Para el desarrollo se va a realizar una primera parte de documentacin para luego pasar a la implementacin. Este proceso iterativo se compone de las siguientes fases: iniciacin, elaboracin, construccin y transicin.
En la fase de iniciacin se va a realizar una documentacin profunda de los dos temas mencionados que se refleja en el marco terico de este documento, para luego poder proceder a realizar la definicin de requerimientos del proyecto. En la fase de elaboracin se van a realizar ciertos documentos de definicin y documentacin de cada una de las partes del proyecto. En este punto se incluyen las definiciones de la respectiva arquitectura. En la fase de construccin se irn implementando cada uno de los componentes, de tal forma que se pueda producir un producto funcional. En la transicin se irn realizando pruebas para cada uno de los componentes y as poder validar que no haya errores en el producto final. Finalmente, se realizar una integracin de las partes desarrolladas para armar el producto final. Debido a la forma y estructura del proyecto, el diseo y la documentacin se van a realizar casi simultneamente.
3.1 DESARROLLO METODOLGICO DE LA INVESTIGACIN
Para el proceso de desarrollo de la investigacin fue necesario el cumplimiento de las siguientes actividades:
1. Investigacin del estado del arte y verificacin de productos o investigaciones similares. En esta actividad lo que se pretende es explorar si existe algo similar a la investigacin propuesta y determinar lo que plantean dichos estudios as como su funcionamiento. A partir de esto se puede darle un marco a la investigacin, definir el alcance, definir objetivos de la investigacin, 17 determinar en que se va a distinguir frente a lo existente en el mercado. Permite analizar que productos hay desarrollados y si alguno de ellos sirve para el desarrollo esta. 2. Definicin del marco terico: en donde se define la teora necesaria para realizar la investigacin. Para esto fue necesario aprender sobre el protocolo SNMP y sobre la MIB, elementos fundamentales para el desarrollo de la investigacin. Esta actividad permite crear uno de los pilares tericos en donde se va a construir el modelo y su implementacin. 3. Seleccin de programas a utilizar: especifica la seleccin de herramientas de seguridad para validar el modelo, el motor de bases de datos y la implementacin del protocolo SNMP. Esta actividad es importante para determinar de que manera se van a seleccionar los programas a utilizar para validar el modelo y poder construir una implementacin de ste. De esta forma se puede demostrar o no la validez del modelo de seguridad propuesto y mostrar su viabilidad. 4. Definicin de la arquitectura del modelo propuesto: que se compone de las siguientes arquitecturas: general, del adaptador y de la consola de seguridad. Esta es una de las actividades ms importantes ya que es donde se va a definir la arquitectura del modelo. Aqu se definirn los componentes, el funcionamiento, la comunicacin y la interoperabilidad entre cada uno de los elementos definidos en ella. 5. Definicin y ejecucin de las pruebas: actividad en donde se realizarn las pruebas y las mediciones necesarias. Las pruebas nos permiten determinar de una manera cuantitativa el funcionamiento de la aplicacin desarrollada. Por esta razn es muy importante definir claramente lo que se desea probar y medir, y as, determinar la viabilidad de la implementacin del modelo. Se realizarn mediciones a nivel de la red y de la aplicacin para determinar su funcionamiento y el impacto que podra tener en una red. 6. Realizacin de conclusiones: esta actividad permite mencionar todos los hallazgos encontrados durante el desarrollo de la investigacin. Se mencionan hechos como la viabilidad del modelo, resaltar aspectos importantes de ste, entre otros. 7. Definicin de la continuidad de la investigacin: comnmente una investigacin no abarca todos los caminos necesarios para que sea completa. Es por esta razn que se resaltan trabajos futuros que se pueden desarrollar a partir del modelo propuesto. Aspectos que no se consideraron en la definicin del alcance y de los objetivos y que pueden brindarle al modelo una riqueza mayor, sin olvidar que los trabajos pueden ser trabajos de investigacin. 18
4 MARCO TERICO
4.1 ADMINISTRACIN DE SEGURIDAD
La administracin de seguridad es un proceso mediante el cual se administran, definen y actualizan las polticas de seguridad para proteger los recursos ms valiosos de la red y que a diferencia de la administracin de red, no cuenta con protocolos que permitan integrar los diferentes componentes que hacen parte de una arquitectura de seguridad. Por otra parte podemos encontrar muchos programas y dispositivos de red que permiten definir una arquitectura de seguridad.
Encontramos firewalls, enrutadores, IDS, switches, antivirus, sistemas operativos, proxies, entre muchos otros. Cada uno de ellos desempea una funcin primordial en una arquitectura de proteccin de profundidad y en especial generan alarmas de una manera independiente y sin ninguna administracin centralizada que las coordine. Esta es una de las razones por al cual el proceso de anlisis forense debe ser largo y se debe inspeccionar cada uno de estos elementos tanto hardware como software.
4.2 ADMINISTRACIN DE RED
La administracin de red es el proceso mediante el cual podemos encontrar fallas en algn punto de la red, de manera centralizada y tomar alguna accin que lleve a la solucin del problema. Es importante que la gestin de red sea proactiva, es decir, que se pueda anticipar a un fallo de la red y no esperar a su materializacin para tomar una accin preventiva.
Antes de abordar el tema, es de suma importancia mencionar algunos breves conceptos sobre la administracin de red. Normalmente, cuando se desea monitorear la red de una empresa, se utiliza un sistema de administracin de red, el cual est compuesto de los siguientes elementos: los nodos administrados, que es bsicamente lo que nosotros deseamos monitorear (enrutadores, switches, estaciones de trabajo, etc.), que por medio de un agente presente en ellos se facilita su administracin; la estacin de administracin de red (NMS), que es donde se ejecuta el monitor, quien va a comunicarse con los agentes para lograr la administracin de la red; por ltimo tenemos el protocolo que se va a encargar de la comunicacin entre el agente y la NMS.
Para fines de la administracin, no es suficiente con slo intercambiar la informacin de administracin para poder monitorear el nodo. El protocolo, debe a su vez, proveer una arquitectura de administracin que utilice los conceptos de autenticacin y de 19 autorizacin (que es limitar el acceso a un elemento y verificar que no sea alguien no autorizado). Por otra parte, el nodo posee varias variables tanto de lectura como de escritura que le permiten almacenar informacin acerca de si mismo.
Hasta el momento existen dos protocolos para la administracin de red. Estos son: SNMP y CMIP (Common Management Information Protocol). Este documento se va a centrar en el protocolo SNMP.
4.3 DOCUMENTACIN SOBRE SNMP
4.3.1 Protocolo de administracin simple (SNMP)
SNMP se origin en la comunidad de Internet como medida para administrar redes TCP/IP.
Como no todos los dispositivos en las redes fueron creados con una mentalidad que podran llegar a ser administrados con SNMP, existen muchos dispositivos que no pueden ser administrados, per se, con SNMP. Para eso, existe un tipo especial de agente llamado agente proxy, que permite administrar este tipo de dispositivos. Bsicamente acta como un convertidor de protocolos, que traduce de SNMP al esquema propietario definido en el dispositivo. Este tipo de agente es til para administrar dispositivos que son administrados por un esquema propietario y se desean incorporar al mundo SNMP.
SNMP funciona con el protocolo de transporte UDP (Unreliable Datagram Protocol). Para mandar un mensaje, una entidad SNMP serializa un mensaje SNMP y lo enva como un datagrama UDP a la direccin de la entidad que recibe. Los agentes SNMP estn escuchando por el puerto 161.
Se puede ver la forma como sera el transporte de un mensaje SNMP en la Figura 1, donde se muestran los protocolos de cada capa involucrados en el proceso [9].
Figura 1. Transporte de un mensaje SNMP
20 4.3.1.1 Componentes de SNMP
Se compone de tres partes indispensables para su funcionamiento: consola de administracin (NMS), agente y MIB [7].
1. Agente: es un programa encontrado en un dispositivo de red, ya sea una estacin, un switch o un router o cualquier dispositivo administrable mediante SNMP. 2. Consola de administracin: es un programa encontrado en una estacin de trabajo y tiene la habilidad de indagar los agentes utilizando SNMP. 3. MIB: es una base de datos de objetos administrados que son accesibles por el agente y manipulados va SNMP para lograr la administracin de la red.
Las responsabilidades ms importantes de cada una de estas partes seran [7]:
1. Responsabilidades del agente: Posee una vista de la MIB que incluye la MIB estndar de Internet ms otras extensiones 1 . En la MIB no se tiene porque implementar todos los grupos de variables definidas en la especificacin de las MIB. Gracias a esto se puede simplificar significativamente la implementacin de SNMP en dispositivos pequeos de una red (debido a que tienen limitacin de memoria y procesamiento). Bsicamente realiza dos funciones: inspeccionar las variables de la MIB (que implica consultar los valores de las variables) y alterar variables en la MIB (que implica cambiar los valores de las variables para lograr algn efecto en el dispositivo).
2. Responsabilidades de la consola de administracin: Bsicamente se encarga de ejecutar las aplicaciones que ayudan a analizar el funcionamiento de la red. Normalmente provee una interfaz grfica que muestra un mapa de los agentes encontrados en la red.
3. La MIB: Se encuentra dividida en cuatro reas: a. Atributos del sistema b. Atributos privados c. Atributos experimentales d. Atributos de directorio
1 Se refiere con MIB estndar de Internet a la definicin de la MIB-II del RFC 1213, una mejora de la MIB-I y que son estndar para todo el que pretenda implementar dicha funcionalidad. Por otro lado, se refiere a extensiones cuando hablamos de extensiones que se hacen a la definicin estndar. Esto es, definiciones de nuevos objetos a monitorear que no estn definidos en la MIB-II. Son extensiones para monitorear dispositivos de cada uno de los fabricantes y/o de todo aquel que desee desarrollar una MIB nueva. 21 Toda la documentacin est escrita en ASN.1, que trata de ser un estndar frente a las documentaciones de SNMP. Hay dos versiones de la MIB: MIB I: la primera en crearse y tiene una limitada lista de objetos relacionadas con variables de ruteo de IP. MIB II: una versin ms robusta a la anterior y extendi los objetos a una gran variedad de medios y dispositivos de red.
4.3.1.2 Representacin de la informacin
Cada objeto guardado en una MIB tiene un identificador que lo identifica de manera nica. Este identificador es conocido como el identificador de objeto (OID) y es una secuencia de nmeros enteros no negativos separados por un punto, que sale de un rbol estandarizado mundialmente, que se puede observar en la Figura 2. Como todos los rboles, ste se encuentra conformado por ramas y nodos. El nodo puede ser un entero positivo y una etiqueta. Tambin pueden tener hijos, que a su vez, son nodos.
Figura 2. Estructura general de la MIB
La MIB est escrita utilizando la sintaxis ASN.1. sta es utilizada para describir las estructuras de datos que queremos definir para guardar la informacin de gestin. Luego de definir estas estructuras se debe definir la sintaxis de transferencia, para saber la forma en que van a ser transmitidos los datos en la red. A esto se le conoce como las reglas de codificacin bsicas (BER) [19]. Es la codificacin utilizada para 22 transferir informacin escrita en ASN.1 a otras aplicaciones mediante una sintaxis que define y permite definir el formato de cmo se van a enviar los datos.
En el ASN.1 se definen tres tipos de objetos [8]: Tipos (types): que define nuevas estructuras de datos y comienzan en maysculas Valores (values): que son variables de un tipo y son escritas en minsculas Macros: usados para cambiar la gramtica y son escritas en maysculas
4.3.1.3 Operaciones (comandos) del protocolo
En el protocolo de administracin de red SNMP, se encuentran seis operaciones bsicas (comandos): GetRequest, GetNextRequest, GetResponse, SetRequest, Trap [7] y GetBulkRequest.
Es importante aclarar la diferencia que hay entre GetRequest y GetNextRequest, que aunque son similares, tienen una pequea diferencia que es ampliamente necesaria y utilizada. El comando GetRequest se encarga de traer el valor de ciertos objetos especificados como parmetros, mientras que el comando GetNextRequest se encarga de traer el siguiente valor del objeto segn el orden lexicogrfico (ver ms adelante).
Con los comandos GetRequest, GetNextRequest y GetResponse se obtiene la siguiente secuencia de eventos: el agente inspecciona el valor de las variables que posee en la MIB, tras recibir un comando PDU (Protocol Data Unit), ya sea de GetRequest o GetNextRequest, provenientes de la consola de administracin (NMS). Luego, el agente devuelve los datos que ha recolectado, tras el comando recibido, mediante el comando GetResponse.
El comando SetRequest es usado por el agente para modificar variables de la MIB, luego de recibir un comando de SetRequest. Este comando tiene mucho poder en el mundo de la administracin de red y si es usado de una manera indebida puede corromper los parmetros de configuracin de los nodos administrados y hasta interrumpir los servicios de red. Por esta razn, es importante implementar mecanismos de encriptacin y de autenticacin.
El quinto comando, Traps, es un comando especial que los agentes utilizan para mandar datos a la consola de administracin, cuando ha sucedido un evento inusual, pero importante, que debe ser reportado sin solicitud.
El sexto comando, GetBulkRequest, es utilizado cuando se solicita la transferencia de una gran cantidad de datos para, por ejemplo, traer tablas muy grandes que tienen muchos datos. As se minimizan el nmero de solicitudes que tocara realizar para 23 traer las filas de las tablas. Es muy parecido al comando GetNextRequest, solo que no solicita objeto por objeto, sino que puede solicitar una gran cantidad de una vez.
En la Figura 3 se puede apreciar como es el proceso de intercambio de mensajes, o ms bien, PDUs de SNMP para los comandos de Get, Set y Trap entre la consola administrador y el agente [10]:
Figura 3. Intercambio de mensajes SNMP
El agente responde a un comando GetRequest con un comando GetResponse, el cual contiene el mismo ID de peticin, un campo dentro del formato de un mensaje SNMP que contiene una identificacin nica para cada mensaje de solicitud (Figura 3 (a)). El comando GetRequest si puede acceder a todas las variables solicitadas en el campo variable, entonces se puede generar una respuesta GetReponse en donde iran en el campo variable, una lista de las variables con su correspondiente valor. De forma similar funciona el comando GetNextRequest (Figura 3 (b)). La diferencia radica en que va a retornar la siguiente instancia de un objeto (en orden lexicogrfico 2 ). Por
2 Se refiere al siguiente objeto que le sigue al que estn solicitando. Por ejemplo: si se hace un GetNextRequest para el objeto sysLocation.0 (1.3.6.1.2.1.1.6.0), se va a retornar el nombre y el valor del objeto sysServices.0 (1.3.6.1.2.1.1.7.0) con su respectivo valor. Otra nueva solicitud a este ltimo objeto va a retornar el nombre y el valor de ifNumber.0 (1.3.6.1.2.1.2.1.0). 24 ejemplo [10], ante esta solicitud: GetRequest (udpInDatagrams.0, udpNoPorts.0, ), obtenemos como respuesta: GetResponse ((udpInDatagrams.0=100), (udpNoPorts.0=1), ). La operacin SetRequest (Figura 3 (c)) es muy similar a GetRequest, pero la diferencia sustancial radica en que el fin de esta operacin es el de escribir un valor y no el de leerlo. El agente, como se observa en el diagrama, responde con un GetResponse que contiene el mismo ID de identificacin. Al igual que las anteriores es una operacin atmica (o todas las variables o nada). En el campo variable coloca los datos que fueron modificados. Por ejemplo [10], ante la solicitud de modificacin: SetRequest (ipRouteMetric.1.9.1.2.3=9), y la operacin se realiz con xito, se responde con: GetResponse (ipRouteMetric.1.9.1.2.3=9) el cual cambi la mtrica de la entrada 9.1.2.3 de la tabla de ruteo a 9. Por ltimo, tenemos la operacin Trap (Figura 3 (d)), la cual no necesita del arribo de un mensaje para mandar los datos. A diferencia de los anteriores, esta operacin es generada por el agente cuando en el dispositivo que monitorea sucede algo excepcional y que debe ser notificado al administrador.
4.3.1.4 Estructura de la PDU
En la Figura 4 se puede ver la estructura de los formatos de los PDUs del protocolo [8]:
Figura 4. Estructura de la PDU
Es importante mencionar que significa cada uno de los campos mencionados anteriormente [10]:
Versin: la versin de SNMP que se va a usar Comunidad: relacin que existe entre un agente y un grupo de aplicaciones SNMP (un componente de una entidad SNMP) 25 Tipo PDU: indica el tipo de la PDU que va en el mensaje, que puede ser algn tipo de Request (como GetRequest, GetNextRequest y SetRequest), un GetResponse o un Trap. Peticin ID: usado para distinguir de entre otras solicitudes, cada solicitud con una identificacin nica Error-status: usado para indicar que ha sucedido una excepcin mientras se procesaba una solicitud Error-ndice: cuando el error-status es diferente a cero (no hubo error) puede proporcionar informacin adicional indicando que variable caus la excepcin Campos variables: una lista de nombre de variables con sus correspondientes valores, normalmente contiene los datos solicitados por una operacin Get o Trap Empresa: tipo de objeto que genera un Trap Direccin agente: direccin del objeto generado del Trap Trap genrico: tipo genrico del Trap Trap especfico: cdigo especfico del Trap Time-stamp: tiempo transcurrido entre la ltima vez que se reinici el dispositivo de red y la generacin del Trap
Vale la pena mencionar el trmino de comunidad, que bajo la mirada de SNMP, es la pareja de un agente SNMP y una(s) aplicacin(es) SNMP (entidades SNMP que residen en las aplicaciones administradas). El nombre de la comunidad identifica un esquema de autenticacin 3 . La serie de eventos para la autenticacin es la siguiente:
1. La entidad SNMP manda a una entidad de autenticacin: Nombre de la comunidad Los datos La direccin del que manda
2. La entidad de autenticacin que conoce el esquema de autenticacin (que es lo que puede o no hacer una comunidad, ya sea lectura y escritura o solo lectura), retorna una de las dos siguientes posibilidades: Una instancia del tipo de dato y la identificacin de la entidad que manda Una excepcin 4.3.2 Protocolo de administracin simple versin 3 (SNMPv3)
SNMPv3 se puede definir como:
3 En este caso el esquema de autenticacin es muy sencillo. La aplicacin SNMP, conoce las comunidades vlidas que pueden operar en el agente. Si la solicitud proviene de una comunidad conocida, es aceptada. Segn el tipo de comunidad se pueden hacer determinadas operaciones en la MIB. 26 SNMPv3 = SNMPv2 + (seguridad y administracin)
Fue diseado para proteger contra las siguientes amenazas de seguridad, mediante el uso de algoritmos de autenticacin y de encripcin, como lo especifica el RFC 2574:
Modificacin de la informacin: una entidad podra alterar un mensaje generado por otra que esta autenticada y as lograr que haya una accin no autorizada en la entidad que recibe el mensaje. El problema aqu es que se podra modificar algn parmetro de configuracin. Enmascaramiento (masquerade): operaciones no autorizadas para un usuario pueden ser intentadas asumiendo la identidad de otro usuario que posee autorizacin para la operacin deseada. Reenvo de mensajes: como SNMP opera sobre un protocolo de transporte sin conexin, existe el riesgo que un mensaje SNMP sea almacenado por algn tercero y luego, reenviado o duplicado, para realizar operaciones de administracin no autorizadas. Poca privacidad (disclosure): una entidad puede observar el intercambio de mensajes entre un agente y una consola de administracin y as, aprender de los valores de los objetos.
Por otro lado, se defini que no estaba diseado para prevenir estos tipos de ataques:
Denegacin de servicio (DoS): prevenir que haya intercambio de mensajes entre agente y consola de administracin. Anlisis de trfico: un atacante puede observar los patrones de trfico entre estas dos entidades.
4.3.2.1 Arquitectura SNMPv3
Como se define en [4] y en el RFC 2271, SNMP se compone de entidades, donde cada entidad implementa una parte de la funcionalidad de SNMP y as, puede actuar como un agente en el nodo o como un nodo administrador.
27
Figura 5. Diagrama de una entidad SNMP
En la Figura 5 se muestra el diagrama general de bloques de una entidad SNMPv3 [10]. Cada entidad incluye slo un motor SNMP que implementa funciones para enviar y recibir mensajes SNMP, poder autenticar y encriptar mensajes y controlar el acceso. Estas funciones estn a cargo de ciertos mdulos que exponen estas funciones como servicios para que las puedan invocar o utilizar otras aplicaciones, de esta manera conformando lo que se conoce como una entidad SNMP.
Como se ve en la Figura 5, tanto el motor como las aplicaciones, estn definidas en mdulos. Lo que permite tener una ventaja: el rol de cada entidad esta determinado por los mdulos que implementa, permitiendo que sea mucho ms sencillo modificar los mdulos.
Como se indica en [20], los componentes de una entidad SNMP son:
Despachador: permite el soporte de distintas versiones de mensajes SNMP, es el encargado de aceptar y mandar las PDUs, de pasarlas al subsistema de procesamiento de mensajes y mandar los mensajes por la red. Subsistema de procesamiento de mensajes: responsable por preparar mensajes para envo y extraer datos de mensajes recibidos. Subsistema de seguridad: provee los servicios de seguridad de autenticacin y de encripcin o privacidad para los mensajes que as lo necesiten. 28 Subsistema de control de acceso: provee los servicios de autorizacin a recursos y define que aplicacin tiene derecho y el tipo de acceso que tiene. Generador de comandos: inicializa las PDUs de los mensajes y procesa la respuesta. Contestador de comandos: recibe las PDUs destinadas a la entidad cuyo campo de contextEngineID es igual a la identificacin del motor SNMP. Juego, realiza la operacin adecuada y con ayudad del control de acceso, genera una respuesta adecuada. Originador de notificaciones: est continuamente monitoreando el sistema por eventos o condiciones particulares y de ser necesario, genera una operacin de Trap. Para poder hacer esto, es necesario que tenga un mecanismo que le diga a donde mandar los mensajes, que versin y parmetros de seguridad utilizar. Receptor de notificaciones: escucha por mensajes de notificacin (o Traps) y genera un mensaje de respuesta. Despachador proxy: se encarga del direccionamiento de mensajes SNMP.
En SNMPv3, la entidad posee un snmpEngineID nico. Por propsitos de control de acceso, cada entidad posee un nmero de contextos de informacin administrada. Cada uno de estos contextos, tiene su propio contextName, que es local a la entidad. Para que solo pueda existir un administrador de contextos, la entidad posee una nica identificacin, contextEngineID, que es el mismo que para el snmpEngineID.
El snmpMessageProcessingModel determina el formato y la versin que va a tener el mensaje. El snmpSecurityModel determina el modelo de seguridad que va a ser utilizado. El snmpSecurityLevel, determina que servicios de seguridad son solicitados para una operacin especfica. Pude brindar una de las siguientes combinaciones: autenticacin, autenticacin y privacidad o ninguno de los dos.
Trminos importantes para tener en cuenta [10]:
contextEngineID: identifica de manera nica una entidad. snmpEngineID: identifica de manera nica el motor SNMP. contextName: identifica un contexto particular dentro de un motor SNMP. scopedPDU: es un bloque de datos que consiste de contextEngineID, contextName y un PDU. Es enviado como parmetro al subsistema de seguridad. snmpSecurityModel: identificador nico del modelo de seguridad del subsistema de seguridad. snmpMessageProcessingModel: identificador nico del modelo de procesamiento del mensaje del subsistema de procesamiento del mensaje. snmpSecurityLevel: nivel de seguridad que especifica si un mensaje SNMP puede ser enviado o bajo que operaciones estn siendo procesados, referente a la autenticacin y privacidad. Los valores que puede tomar son: 29 noAuthnoPriv, authNoPriv y authPriv, donde cada uno puede proveer o no uno de los servicios de seguridad.
4.3.2.2 Formato del mensaje
Al igual que en las dos versiones anteriores, se ha definido un formato de mensaje que va a ser intercambiado entre entidades SNMP. Cada mensaje contiene un encabezado y un PDU, como se observa en la Figura 6 [10].
Figura 6. Formato del mensaje SNMPv3
Los campos del formato anterior son:
msgVersion: su valor est por default en SNMPv3. msgID: identificador nico usado entre dos entidades para coordinar mensajes de solicitud y de respuesta. msgMaxSize: tamao mximo del mensaje que el remitente puede aceptar. msgFlags: una cadena que contiene tres banderas: reportableFlag, privFlag y authFlag. 30 msgSecurityModel: un identificador que indica que modelo de seguridad fue usado por el remitente para preparar el mensaje. Esto le permite al receptor saber que modelo debe utilizar. Los valores pueden ser: 1 para SNMPv1, 2 para SNMPv2c y 3 para SNMPv3. msgSecurityParameters: cadena que contiene parmetros generados por el subsistema de seguridad en la entidad remitente y procesados por la entidad receptora. contextEngineID: identifica de manera nica una entidad SNMP. Para mensajes provenientes, determina a que aplicacin el scopedPDU va a ser enviado. contextName: identifica de manera nica un contexto particular dentro del contexto del motor SNMP. datos: un PDU que debe ser de tipo SNMPv2.
4.3.2.3 Modelo de seguridad basado en usuarios (USM)
El RFC 2274 define el USM para SNMPv3. La especificacin contiene:
Autenticacin: provee integridad de datos y autenticacin. Utiliza los algoritmos MD5 o SHA-1. Timeliness: protege contra retardos o reenvos de mensajes. Privacidad: protege contra la no privacidad del mensaje. Encripta el contenido. Utiliza el algoritmo DES (el modo CBC, Cipher Block Chaining). Formato de mensaje: define el formato del campo msgSecurityParameters. Descubrimiento: define procedimientos mediante el cual un motor SNMP obtiene la informacin de otro. Administracin de llaves: define el procedimiento para la generacin, actualizacin y uso de las llaves.
4.3.2.3.1 Parmetros de seguridad de USM
El RFC 2274 define una estructura llamada UsmSecurityParameters, que especifica el formato interno del campo msgSecurityParameters en un mensaje SNMPv3, como se muestra en la Figura 7 [10]:
31
Figura 7. Formato del mensaje SNMPv3 con el campo msgSecurityParameters
4.3.2.3.2 Motor SNMP autoritativo
Antes de explicar los campos del mensaje, es necesario aclarar un concepto muy utilizado por el modelo USM. Este es el motor SNMP autoritativo.
En cualquier transmisin de un mensaje, una de las dos entidades involucradas en el proceso, ya sea el transmisor o el receptor, debe ser designada como el motor SNMP autoritativo. De acuerdo a las siguientes reglas:
Cuando un mensaje SNMP contiene un payload que espera una respuesta (como por ejemplo, Get, GetNext o Set) el receptor de los mensajes es autoritativo. 32 Cuando un mensaje SNMP contiene un payload que no espera respuesta (como por ejemplo, un Trap, un Response o un Report 4 ) entonces el remitente del mensaje es autoritativo.
Designar una entidad como autoritativa o no, permite que ocurran dos cosas. La primera, que se pueda manejar el tiempo de validez de un mensaje (timeliness). Es vital para establecer la sincronizacin entre las dos entidades. Para esto, se maneja un reloj. Cuando una entidad autoritativa manda un mensaje a una entidad que no lo es, incluye en este el valor de su reloj. As, cuando lo recibe la entidad no autoritativa, se utiliza ese valor para calcular el tiempo en el que va a estar la entidad autoritativa (el destino), ya que es necesario que ponga ese estimado cuando va a enviar el mensaje de respuesta. La segunda, el proceso de localizacin de llaves. Permite que un principal tenga las llaves de mltiples motores. Estas llaves son localizadas al motor autoritativo SNMP. De esta manera es responsable de una llave y no de muchas llaves distribuidas.
Como se dice en el RFC 2574, para generar una llave localizada, Kul, (una llave secreta compartida entre un usuario y un motor SNMP autoritativo), se debe hacer lo siguiente: si el usuario utiliza una clave, sta se convierte en una llave Ku usando MD5 o SHA. Para convertir esta llave en una llave localizada, Kul, es necesario anexar el snmpEngineID del motor SNMP autoritativo a la llave Ku y luego anexarle al resultado otra vez la llave Ku. De esta forma se envuelve el snmpEngineID entre dos copias de la llave Ku. Luego, se pasa una funcin de hash segura (que depende del algoritmo usado) y as se obtiene una llave localizada, Kul. Este proceso se resume en la Figura 8.
Figura 8. Forma de manejo de las llaves
Elementos de UsmSecurityParameters:
4 Forma en que se hace el descubrimiento de otros motores SNMP. 33 msgAuthoritativeEngineID: el snmpEngineID de un motor SNMP autoritativo, involucrado en el intercambio de mensajes. msgAuthoritativeEngineBoots: el valor de snmpEngineBoots del motor SNMP autoritativo en el intercambio de mensajes, y corresponde al nmero de veces que el motor se ha reiniciado. msgAuthoritativeEngineTime: el valor snmpEngineTime del motor SNMP autoritativo involucrado en el intercambio de mensajes, representa el nmero de segundos desde que el motor SNMP increment snmpEngineBoots por ltima vez. msgUserName: el usuario a quien se le est intercambiando el mensaje. msgAuthenticationParameters: es nulo si no se usa autenticacin, de lo contrario, es un cdigo de autenticacin de un mensaje HMAC. msgPrivacyParameters: es nulo si no se usa privacidad, de lo contrario, es un valor usado para formar el valor inicial en el algoritmo DES.
Como SNMPv3 define el uso o no de autenticacin y encripcin, el motor SNMP requiere dos valores: una llave privada (privKey) y una llave de autenticacin (authKey). Estos valores son atributos relevantes de cada usuario creado. Los valores de cada una de estas llaves no son accesibles va SNMP.
4.3.2.3.3 El grupo MIB usmUser [10]
Es una MIB que se encarga de mantener informacin sobre principales (entidades) locales y remotas. Contiene un objeto escalar llamado usmUserSpinLock (permite que generadores de comandos se coordinen para cambiar las llaves, como un mtodo de garantizar la concurrencia) y una tabla usmUserTable, que tiene las siguientes columnas ms importantes:
usmUserEngineID: el identificador de un motor SNMP, que tiene el valor de snmpEngineID. usmUserName: el nombre del usuario que funciona como securityName. usmUserSecurityName: el nombre del usuario de una forma independiente al modelo de seguridad. Este valor y el anterior son iguales para que haya una relacin de identidad. usmUserCloneFrom: se refiere a otra fila de esta tabla e indica el usuario del que fue clonado el nuevo usuario. Al ingresar un usuario nuevo se llenan los campos correspondientes y se pone una referencia al usuario del que se clon (los parmetros de autenticacin y privacidad son copiados del usuario original). usmUserAuthProtocol: identificador que indica si un mensaje enviado por la entidad, identificada por el usmUserEngineID es o no objeto de autenticacin y adems, especifica el protocolo a usar. 34 usmUserAuthKeyChange: cuando es modificado, hace que la llave secreta de autenticacin para enviar mensajes, sea modificada. usmUserPrivProtocol: identificador que indica si un mensaje enviado por la entidad, identificada por el usmUserEngineID, puede ser protegido por encripcin o no, adems indica el protocolo a utilizar. usmUserPrivKeyChange: cuando es modificado, causa que se cambie la llave secreta de encripcin para enviar mensajes. usmUserPublic: valor que puede ser ledo pblicamente y que es escrito como parte del procedimiento de cambiar alguna de las llaves, para luego leerlo y ver si el cambio fue realizado.
4.3.2.3.4 Descubrimiento de motores SNMP
USM requiere el uso de un proceso de descubrimiento para obtener suficiente informacin de otros motores SNMP, para poder llevar a cabo la comunicacin. Para lograr esto, necesita conocer su snmpEngineID. Si el motor no es autoritativo, manda un mensaje de Request al motor del cual desea conocer los datos. La solicitud va con el campo securityLevel en noAuthnoPriv, el msgUserName con valor initial y el msgAuthoritativeEngineID como nulo. El motor autoritativo responde con un mensaje Report que contiene su snmpEngineID en el campo nulo.
Si se requiere de una comunicacin autenticada, el motor SNMP no autoritativo debe establecer una sincronizacin con el motor autoritativo. Para lograrlo, el motor no autoritativo manda un mensaje de Request con msgAuthoritativeEngineID con el valor del snmpEngineID y los valores de msgAuthoritativeEngineBoots y msgAuthoritativeEngineTime en cero. La respuesta va a ser un mensaje Report del motor autoritativo con los valores de snmpEngineBoots y snmpEngineTime en los respectivos campos con valor cero.
4.3.2.3.5 Administracin de llaves
Un requerimiento planteado en la creacin del RFC para los servicios de autenticacin y privacidad, es que para la comunicacin entre un motor no autoritativo y uno autoritativo, se debe compartir una llave secreta de autenticacin y una llave secreta de privacidad. Estas llaves permiten que un usuario en un motor no autoritativo, pueda emplear autenticacin y privacidad en sistemas autoritativos remotos.
Para mantener simple la administracin de llaves, cada principal (una entidad a quien se le proveen servicios) es responsable por mantener una llave de autenticacin y de encripcin o privacidad. Estas llaves no son guardadas en una MIB y no son accesibles va SNMP. 35
4.3.2.4 Modelo de control de acceso basado en vistas (VACM)
El modelo VACM tiene dos importantes caractersticas [10]:
1. El VACM determina si el acceso a un objeto administrado, en una MIB local, por un principal es permitido o no. 2. El VACM hace uso de una MIB que controla las polticas de control de acceso para el agente
4.3.2.4.1 Elementos del modelo VACM
El RFC 2575 define cinco elementos que componen el VACM:
1. Grupos. 2. Niveles de seguridad. 3. Contextos. 4. Vistas en las MIB. 5. Polticas de acceso.
Los grupos: se encuentran definidos como un conjunto de cero o ms tuplas de tipo: <securityModel, securityName>. El securityName a un principal y los derechos de acceso para todos los principales en un grupo, y as todos en el grupo tienen los mismo accesos. Cada grupo tiene un nombre nico (groupName) y as se pueden definir los derechos de acceso.
El nivel de seguridad: los derechos de acceso para un grupo pueden definirse segn el nivel de seguridad del mensaje en la solicitud. Por ejemplo, se puede permitir solo la lectura para un mensaje no autorizado, pero necesitar autenticacin para escribir.
Los contextos: un contexto MIB es un subconjunto de las instancias de los objetos de la MIB local. Permiten agregar objetos a una coleccin con diferentes polticas de acceso. El contexto se refiere a control de acceso. Una solicitud SNMP, identificada nicamente por un contextEngineID, puede mantener ms de un contexto. Un objeto o una instancia de un objeto pueden estar en uno o ms contextos. Cuando existen mltiples contextos, para poder identificar la instancia de un objeto, se deben identificar su contextName y contextEngineID.
Las vistas MIB: algunas veces deseamos restringir el acceso de un grupo particular a un subgrupo de objetos de administracin en el agente. Para poder hacer esto, el acceso al contexto se hace mediante la definicin de vistas MIB. Esto saca provecho de que los objetos estn organizados en forma de rbol. Por esto, asociado a cada 36 entrada en la tabla vacmAccessTable hay tres vistas: lectura, escritura y notificar acceso (representa el conjunto de instancias de objetos autorizados cuando mandan objetos en una notificacin. Cada vista consiste en un conjunto de vistas de subrboles.
Las polticas de acceso: el VACM permite que el motor SNMP sea configurado para impartir ciertos derechos de acceso. La determinacin de acceso depende de [10]:
El principal que hace la solicitud de acceso. El VACM permite que un agente pueda permitir diferentes privilegios de acceso a diferentes usuarios. El nivel de seguridad con la que se hizo la solicitud en un mensaje SNMP. El modelo de seguridad usado para procesar el mensaje de solicitud. Por ejemplo, se puede acceder a ciertos tipos si la solicitud viene a travs de USM. El contexto de la MIB para la solicitud. El tipo de acceso solicitado.
4.3.2.4.2 La MIB del VACM
Contiene informacin de contextos locales, grupos, derechos de acceso y vistas MIB.
Informacin sobre contextos locales: La tabla vacmContextTable lista los contextos disponibles localmente. Esta informacin es usada por el generador de comandos para crear la tabla vacmAccessTable para poder controlar el acceso a los contextos. Un nombre de contexto vaco representa el contexto default. Estas dos tablas no se relacionan entre si.
Informacin sobre grupos: La tabla vacmSecurityToGroupTable provee un groupName, dado un securityModel y un securityName. El nombre de grupo es usado para controlar el acceso de un grupo. La tabla es indexada por vacmSecurityModel y vacmSecurityName.
Informacin sobre derechos de acceso: La tabla vacmAccessTable puede ser configurada para definir los derechos de acceso de los grupos. La tabla est compuesta por estos objetos:
vacmAccessContextPrefix: puede ser el nombre de un contexto completo o el prefijo, segn el valor de vacmAccessContextMatch. vacmAccessSecurityModel: identifica un modelo de seguridad. vacmAccessSecurityLevel: el nivel mnimo de seguridad requerido para tener acceso. 37 vacmAccessContextMatch: el valor puede ser exacto (exact(1)), que significa que el nombre del contexto debe ser exacto; puede ser de prefijo (prefix(2)), entonces slo debe haber concordancia entre el vacmAccessContextPrefix y el contextName. Es muy parecido al concepto de wildcards en Unix. vacmAccessWriteViewName: identifica la vista MIB para la cual se define el acceso. Indexa la tabla vacmViewTreeFamilyTable.
Informacin sobre vistas MIB: La estructura de vacmMIBViews consiste de un objeto escalar, llamado vacmViewSpinLock (que permite que los generadores de comandos coordinen el uso de operaciones Set en la creacin y modificacin de vistas), y de una tabla vacmViewTreeFamilyTable, cuyas columnas son:
vacmViewTreeFamilyViewName: el nombre asignado a un conjunto de filas que constituyen una vista. vacmViewTreeFamilySubtree: un identificador de objeto que especifica un subrbol. vacmViewTreeFamilyMask: la mscara que combinada con el vacmViewTreeFamilySubtree define una familia de subrboles. vacmViewTreeFamilyType: puede tomar uno de los valores siguientes: incluido (included(1)) o excluido (excluded(2)) e indica si el correspondiente subrbol de la familia, que est definido por los dos campos anteriores, est o no en la definicin.
4.3.3 Comparacin entre seguridad de SNMPv1 y SNMPv3
La seguridad en SNMPv1: Tanto las estaciones administradas como las NMS, necesitan protegerse a si mismas y sus MIBs de accesos no autorizados. SNMP, como se especifica en el RFC 1157, provee una muy simple manera de asegurarse: mediante el uso del concepto de comunidad. Una comunidad es la relacin entre el agente y los administradores. Con la comunidad se define la autenticacin y el control de acceso. Este concepto es local al dispositivo y se puede configurar una comunidad para cada combinacin de autenticacin y acceso. Por ejemplo, se puede definir una comunidad privada para lectura y escritura y una comunidad pblica para slo lectura. La comunidad es empleada como parmetro de comandos Get y Set.
Se utiliza un esquema muy trivial de autenticacin: la comunidad. La cual acta como una clave compartida donde la solicitud recibida es procesada si el nombre de la comunidad de la solicitud concuerda con la comunidad definida en la entidad que recibe la solicitud. 38
De una manera muy sencilla, la comunidad, permite controlar el acceso a su MIB. Mediante el empleo de ms de una comunidad, se puede proveer distintos tipos de acceso.
Por estas razones es comn que SNMPv1 se utilice ms para monitoreo de dispositivos, que para control de los mismos, ya que el concepto de comunidad es muy inseguro y adems viaja en texto plano por la red. Es un gran punto de inseguridad en una red, ya que es muy difcil saber a ciencia cierta quien es el que solicita la informacin.
La seguridad en SNMPv3: Como se vio anteriormente, esta versin provee un mejor sistema de seguridad y mucho ms robusto y confiable. Utiliza encripcin convencional con DES y autenticacin con MD5. Adems utiliza un modelo de usuarios y de control de acceso, basado en vistas sobre la MIB actual. Esto permite que se pueda restringir el acceso a ciertas partes de la MIB.
4.4 DOCUMENTACIN DE MIB
4.4.1 Generalidades de MIB
Este es un concepto que va muy unido al protocolo SNMP. Y que son de vital importancia para la arquitectura de su funcionamiento. Como ya se ha visto, las bases de informacin de gestin (MIB), son muy utilizadas por los agentes para poder monitorear un aparato especfico.
Las bases de informacin de gestin (MIB) son un conjunto de objetos gestionados de un recurso que se encuentra en la red para ofrecer algn tipo de interoperabilidad o funcionamiento en esta misma y el cual se desea gestionar. Dentro de la MIB, los objetos estn organizados en grupos, segn su funcin y la informacin que guarda. Los objetos en la MIB, se encuentran definidos formalmente y son administrados mediante el protocolo SNMP. En ella hay unos grupos estndares que todos conocen y con el tiempo se ha ido extendiendo segn la aparicin de nuevos aparatos gestionables con SNMP, que se conocen como extensiones de la MIB.
4.4.2 La estructura de administracin de la informacin
La SMI define como la informacin de administracin es agrupada y nombrada, las operaciones permitidas, tipos de datos permitidos y la sintaxis para escribir las MIBs. 39 Especifica que cada objeto administrado debe tener un nombre (nico, mediante el OID), una sintaxis (tipo de dato) y una codificacin (como la informacin es serializada para la transmisin, comnmente se usa BER).
La SMI define la arquitectura general con la que se puede definir y construir una MIB. Especifica los tipos de datos que se pueden usar en la MIB y la forma en que los recursos en una MIB son representados e identificados. La MIB slo puede guardar tipos de datos simple, conocidos como escalares. Por esta razn con SNMP solo se pueden consultar este tipo de datos. Para poder definir una MIB, es posible utilizar los siguientes tipos de datos:
integer octetstring null object identifier sequence y sequence-of
En la lista no aparece el tipo enumerated, ya que ste se define como una lista de enteros de tipo integer. Hay que tener en cuenta que no se puede usar el valor cero (0), ya que este es usado para identificar instancias particulares de objetos y que debe haber normalmente un tipo adicional, llamado other, para cuando no se puede ninguno de los otros valores.
4.4.3 Interaccin con la MIB
Una NMS debe ser cargada con la informacin que va a monitorear, o sea, la estructura de la MIB privada. Normalmente un vendedor de dispositivos provee la MIB en un texto simple y en una descripcin formal. Con la descripcin formal, una NMS debe ser capaz de leer la MIB del disco, procesarla y pasarla para aadir los objetos a la lista de objetos administrados. Adicional a esta forma, la NMS puede utilizar un comando GetNextRequest para descubrir los objetos de una MIB del dispositivo. Esto se puede gracias al orden lexicogrfico en que son representados los objetos en el rbol. Utilizando esta forma, tiene la ventaja de que descubre de una vez el valor del objeto.
Existen dos formas de realizar la administracin o gestin de la red: la primera, de forma pasiva (implica la recoleccin de datos de los equipos, nicamente de forma informativa, para ver que pasa con la red y los equipos) y la segunda, de forma activa (que usa las variables de la MIB que son de lectura y escritura, de tal forma que si un agente es instruido para modificar un valor, se pueda realizar una accin en el aparato).
La comunidad OSI divide la administracin de la red en cinco reas funcionales [11]: Bloques bsicos para construir otros tipos ms complejos de objetos. Para construir tablas 40
1. Administracin de la configuracin: nombra todos los elementos en la red y especifica su estado y caractersticas. 2. Administracin del performance: determina la utilizacin de la red y de sus elementos. Permite medir tiempos de respuesta, recursos utilizados, disponibilidad, etc. 3. Administracin de errores: detecta, asla y corrige problemas de red. 4. Administracin de seguridad: controla el acceso y protege la informacin en la red. 5. Contabilidad: mide el uso y el costo de los computadores basados en polticas establecidas.
Hasta este momento existen los siguientes tipos de MIB, cada uno con distinta funcionalidad:
Los estndares: MIB I y MIB II (para una diferenciacin entre las dos, ver ms adelante) Las experimentales: grupos que se encuentran en fase de desarrollo Las privadas: informacin especfica de fabricantes de equipos para equipos especficos
4.4.4 Notacin de sintaxis abstracta ASN.1
ASN.1 es un lenguaje formal desarrollado y estandarizado por CCITT y la ISO. Es importante en la actualidad porque permite que se definan sintaxis sobre datos de aplicaciones. Tambin, como sucede con SNMP, se utiliza para definir la estructura y la presentacin de las PDU (Protocol Data Unit).
El empleo de ASN.1 trae muchas ventajas a la hora de desarrollar una aplicacin que la utilice. Trae beneficios como: estandarizacin (es un estndar internacional que soporta muchos protocolos y tambin elimina el problema de interoperabilidad), es algo que se escribe una vez y se puede usar por mucho tiempo (no hay que preocuparse por problemas de compatibilidad de versiones), es ampliamente divulgado y muy conocido. Tambin es independiente del vendedor, de la plataforma y del leguaje de implementacin.
Terminologa importante en ASN.1 [10]:
1. Sintaxis abstracta: describe la estructura general de los datos independiente de cualquier tcnica de codificacin para representarlos. Permite definir tipos y valores para los datos. 41 2. Tipo de dato: conjunto de nombres de valores. Pueden ser simples (especificados por medio de valores) o estructurados (especificados por medio de otros tipos). 3. Codificacin: secuencia de octetos usada para representar los valores de los datos. 4. Reglas de codificacin: especificacin de un mapeo de una sintaxis a otra. Determina algortmicamente como, para un conjunto de datos en una sintaxis, se hace para representar los valores en la otra sintaxis. 5. Sintaxis de transferencia: la forma como los datos son representados a nivel de bits cuando se van a transmitir de un lado a otro.
En la Figura 9 se puede observar como se relacionan estos conceptos [10]:
Figura 9. Relacin de componentes ASN.1
En la Figura 9, se pueden identificar dos grandes componentes: el componente de transferencia de datos, que se preocupa por los mecanismos de la transferencia de datos entre entidades, y el componente de aplicacin (en nuestro caso SNMP), encargado de transferir datos al usuario e interpreta lo que viene del componente de transferencia mediante las reglas de codificacin.
Debe existir un almacenamiento de algn tipo, en donde se va a guardar la definicin de la estructura de los datos, que en nuestro caso van a ser las MIBs (que son definidas con una sintaxis abstracta).
Los componentes de aplicacin se comunican entre si, por medio de una sintaxis abstracta. Se interesa por la vista de los datos que debe tener el usuario, ya sea un 42 archivo, una base de datos o simplemente en la pantalla. El usuario se preocupa por la semntica de los datos, bsicamente, que lo que se va a enviar tenga coherencia y cumpla con ciertas reglas definidas. El protocolo describe las PDUs mediante una sintaxis abstracta, similar a la notacin Bacchus-Naur Form (BNF). Provee representacin y revisin de la sintaxis de los datos.
Mientras que los componentes de transferencia de datos se comunican por medio de una sintaxis de transferencia. Recibe los datos del componente de aplicacin como una secuencia de octetos, que pueden ser ensamblados en la PDU correspondiente. Estos dos componentes se logran comunicar gracias a las reglas de codificacin.
Usando una sintaxis abstracta, se logran tener otros beneficios adicionales. Se tiene un buen uso de representaciones locales, ya que se logra tener una independencia de la implementacin, del tipo de hardware y del tipo de representacin interna de los datos. Ofrece un rehso de esquemas de codificacin, si se tiene unas reglas de codificacin bien definidas, se puede referenciar por cualquier aplicacin que use la misma sintaxis. Tambin se puede tener una buena estructura del cdigo, si se tiene una buena especificacin de sintaxis abstracta y con ayuda de una herramienta, se puede generar el cdigo respectivo.
Gracias a la separacin que tiene ASN.1 de la notacin abstracta y la sintaxis de transferencia, se puede reutilizar el cdigo. Con la ayuda de un compilador de ASN.1, cualquier definicin en sintaxis abstracta puede ser mapeada a la estructura abstracta de datos de cualquier leguaje de programacin.
SNMP utiliza ASN.1, pero de una forma muy reducida y con muchas restricciones en los tipos que pueden ser utilizados.
4.4.4.1 Conceptos ASN.1
Convenciones lexicogrficas: Las estructuras ASN.1, los tipos y los valores son expresados en una notacin similar a la utilizada por leguajes de programacin como C, C++ o Java.
Se definen las siguientes convenciones [10]:
1. La distribucin de las lneas no es importante. Puede haber mltiples espacios y lneas. 2. Los comentarios son delimitados por parejas de guiones (--). De esta forma: -- comentario comentario (toda la lnea). 3. Nombres de valores y campos (identificadores) y nombres de tipos (referencias a tipos) consisten en letras maysculas o minsculas, dgitos y guiones. 43 4. Los identificadores comienzan con una letra en minscula. 5. Una referencia a tipo comienza con una letra en mayscula. 6. Un tipo embebido (ya construido) consiste con todas las letras en maysculas. Un tipo embebido es un tipo usado comnmente para el cual se provee una notacin estndar. 4.4.4.2 Tipos abstractos de datos
ASN.1 es una notacin para tipos de datos abstractos. Un tipo puede ser visto como una coleccin de valores. El nmero de valores que puede tomar es infinito.
Los tipos se clasifican en cuatro categoras [10]:
Simples: son tipos atmicos, sin componentes. Se define especificando directamente sus valores. Todos los otros tipos se construyen sobre tipos simples. Estructurados: un tipo estructurado tiene componentes. ASN.1 provee cuatro tipos, para construir tipos de datos complejos a partir de tipos simples. Estos son: o SEQUENCE o SEQUENCE OF o SET o SET OF Los primeros dos son usados para definir una lista ordenada de valores de uno o ms tipos de datos. Mientras que los otros dos, son similares, pero el orden de los elementos no importa. Tagged: tipos derivados de otros tipos. Otro (Other): incluye los tipos CHOICE y ANY.
Subtipos
ASN.1 permite la definicin de subtipos. Un subtipo, pertenece a un tipo padre. La idea del subtipo es restringir los valores que puede tomar y que son un subconjunto de los valores que define el padre. Esto se puede extender a ms de un nivel.
Hay seis formas para designar subtipos [10]:
Un solo valor: es un subtipo que lista explcitamente todos los valores que un subtipo puede tomar. Subtipos contenidos: crea nuevos subtipos de subtipos ya existentes. El subtipo contenido debe llevar todos los valores del subtipo que contiene. Rango de valor: aplica solo a INTEGER y REAL. Es especificado mediante un valor mnimo y un valor mximo. 44 Alfabeto permitido: solo puede ser aplicado a tipos con cadenas de caracteres. Este subtipo consiste de los valores que pueden ser construidos teniendo un subalfabeto, de uno ms grande. Restriccin de tamao: limita el nmero de elementos en un tipo. Slo puede ser aplicado a tipos definidos como cadenas. Subtipos internos: puede ser aplicado a SEQUENCE, SEQUENCE-OF, SET, SET-OF y CHOICE. Este incluye en su valor solo los valores que satisfacen una o ms restricciones.
Cada uno de los objetos descritos en una MIB, se describen mediante la macro OBJECT-TYPE. Cada objeto especificado se puede descomponer en una serie de campos:
Descriptor: nombre del objeto Value: nombre del objeto en la forma de OID Syntax: especifica el tipo de dato Access: especifica el nivel de acceso Status: muestra la vigencia de la definicin del objeto Description: texto que describe el significado del objeto
Mediante la macro OBJECT-TYPE se pueden definir tres tipos de objetos: tablas, filas y objetos terminales (hojas) [1]. Las tablas consisten en un conjunto de filas. La sintaxis de la tabla debe ser: SEQUENCE OF <sequence>. Normalmente se le pone como sufijo la palabra Table y a la secuencia se le pone el sufijo Entry. Por ejemplo, si la tabla se llama ifTable, la secuencia sera IfEntry. La clusula ACCESS debe estar en not-accessible. El siguiente ejemplo muestra como se definira la tabla de ifTable, que se refiere a las interfaces:
ifTable OBJECT-TYPE SYNTAX SEQUENCE OF IfEntry ACCESS not-accessible STATUS mandatory ::= {interfaces 2}
Una fila consiste en un conjunto de columnas. Esta se debe consultar por sus columnas mediante un comando Get o GetNext. El nombre de la fila viene del nombre de la tabla, pero se cambia el sufijo Table por Entry. La clusula SYNTAX debe ser la secuencia asociada a la tabla y el acceso debe ser not-accessible. El OID de la fila debe ser el mismo de la tabla, pero adicionndole el valor 1. La clusula INDEX especifica las reglas para la construccin de instancias y es el nombre de la secuencia de un tem de la secuencia. Sigamos definiendo las filas para el ejemplo anterior:
ifEntry OBJECT-TYPE 45 SYNTAX IfEntry ACCESS not-accessible STATUS mandatory INDEX {ifIndex} ::= {ifTable 1}
La secuencia es usada para especificar columnas en una fila (en otras palabras, es una secuencia de los campos que tendra la tabla). El nombre debe comenzar por mayscula. La sintaxis general de una secuencia es la siguiente:
Por ltimo, los objetos terminales (hojas), son la agrupacin de informacin ms pequea y se refiere a una variable especfica. Continuando con el ejemplo:
ifDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only STATUS mandatory DESCRIPTION "A textual string containing information about the interface. This string should include the name of the manufacturer, the product name and the version of the hardware interface." ::= {ifEntry 2}
ASN.1 define tres tipos de objetos: tipos, valores y macros. Cada uno de estos se define de la siguiente manera:
46 Tipo (type): NombreDelTipo ::= TYPE Valor (value): nombreDelValor NombreDelTipo ::= VALUE Macro: ver ms adelante
Tambin se tienen los siguientes tipos simples:
INTEGER, tipo de dato que toma como valor un nmero entero, como por ejemplo: Status ::= INTEGER {up(1), down(2), testing(3)} miStatus Status ::= up -- 1 OCTET STRING: tipo de datos que toma cero o ms octetos. Cada byte toma valores entre 0 y 255. OBJECT IDENTIFIER: tipo de dato que permite la identificacin de objetos de gestin. NULL: tipo nulo.
El SMI define la siguiente macro para los objetos que van a ser administrados:
OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::= SYNTAX type (TYPE ObjectSyntax) ACCESS Access STATUS Status VALUE NOTATION ::= value (VALUE ObjectName)
Access ::= read-only | read-write | write-only | not-accessible Status ::= mandatory | optional | obsolete END
4.4.4.3 Identificacin de objetos
Cuando se desee referir una instancia particular, se debe aadir un cero al final de la ruta, sea relativa o absoluta, de la siguiente manera: 1.3.6.1.2.1.1.1.0 sysDescr.0.
Cada objeto definido tiene dos formas de identificarse en cuanto a la ruta y su posicin en el rbol: una forma absoluta (en el cual se especifica el camino a un atributo desde la raz del rbol, semejante a una ruta absoluta en los sistemas 47 operativos; siempre debe comenzar con un punto y debe especificar cada nodo por el que pasa) y otra forma relativa (que especifica el camino a algn atributo en el rbol, a partir de un nodo, muy parecido a una ruta relativa en los sistemas operativos).
Un objeto especfico se puede identificar de manera nica mediante alguna de las siguientes tres formas:
1. Slo nmeros: se utiliza una secuencia de nmeros enteros, separados por puntos. Por ejemplo: 2.1.1.1 que identifica el objeto sysDescr. 2. Slo texto: se utiliza los nombres de los nodos, separados por puntos. Por ejemplo: mgmt.mib-2.system.sysContact que identifica el objeto sysContact. 3. Una combinacin de los dos: se puede usar una combinacin tanto de nmeros como de texto, separados por puntos. Por ejemplo: mgmt.mib- 2.1.sysContact que tambin identifica al objeto sysContact.
4.4.4.4 Ejemplo de la MIB de prueba
TEST-MIB DEFINITIONS ::= BEGIN
IMPORTS enterprises FROM RFC1155-SMI OBJECT-TYPE FROM RFC-1212 DisplayString FROM RFC1213-MIB;
test OBJECT IDENTIFIER ::= { enterprises 1 }
-- grupos en TEST
tesis OBJECT IDENTIFIER ::= { test 1 }
-- el grupo Tesis
avDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only STATUS mandatory DESCRIPTION "Describe el tipo de antivirus que posee la mquina que se esta accediendo." ::= { tesis 1 }
avUpdateVersion OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only 48 STATUS mandatory DESCRIPTION "Dice la versin de actualizacin de las definiciones de virus que tiene instaladas." ::= { tesis 2 }
END
Que nos generara la siguiente estructura de rbol (como se ve en la Figura 10), donde sale lo que definimos bajo el nodo de private:
Figura 10. Vista del rbol construido
49
5 DESARROLLO DEL PROYECTO
El desarrollo del proyecto se debe realizar en cuatro etapas muy importantes. La primera de ellas es la de documentarse sobre el funcionamiento tanto de SNMP como de la MIB. Luego, se debe definir el protocolo seguro que se va a utilizar en la comunicacin entre el adaptador y la consola. A continuacin se debe construir el adaptador que va a estar monitoreando los programas seleccionados en las mquinas. Por ltimo, se debe elaborar la consola de seguridad que es en donde se va a ver reflejado lo que reportan los adaptadores. Este elemento debe soportar por un lado SNMP (para la comunicacin con una consola de gestin) y por el otro el protocolo seleccionado para la comunicacin con los adaptadores (SNMPv3).
La arquitectura propuesta se puede observar en la Figura 11.
Figura 11. Arquitectura propuesta
Se busca que el adaptador est constantemente monitoreando el log del programa en busca de alertas que esta haya generado en su ejecucin. Las alertas encontradas las reporta a la consola de seguridad utilizando el protocolo seguro de comunicacin. Como la consola tiene soporte a SNMP, un monitor SNMP podra comunicarse con esta y debido a que posee una MIB (que contiene las variables de seguridad), podra monitorear la consola de seguridad como si fuera un elemento de red como los otros. Es por esto que esta consola debe tener un agente SNMP para facilitar la comunicacin hacia el monitor. Adicionalmente, la consola es capaz de generar alertas por otros medios, como por ejemplo hacia un correo. Si la alerta persiste y no se ha tomado ninguna accin sobre esta, es capaz de escalar el problema y de informarle a otra persona que se ha definido anteriormente en la estructura de la empresa. La idea del proyecto es dejar abierta la posibilidad que en un futuro se desarrolle o se utilice una herramienta de gestin de red para la integracin con la consola de seguridad. Lo que se hizo es validar el modelo con un caso sencillo de 50 prueba de la comunicacin con SNMP. Est fuera del alcance del proyecto la integracin con una herramienta de gestin de red.
5.1 SELECCIN DE PROGRAMAS A UTILIZAR
No se ha encontrado otra herramienta que pretenda integrar la gestin de red y la seguridad al nivel que nosotros lo necesitamos. Lo que se propone es muy particular: un modelo de seguridad que soporte SNMP, en especial, SNMPv3; es una herramienta integral, o sea, que permite integrar y monitorear muchas herramientas de seguridad, debido al uso de los adaptadores y hasta podra llegar a monitorear cualquier herramienta que genere logs de notificaciones del funcionamiento de la aplicacin (que reflejen la accin que toma la herramienta frente a un suceso). Existen aplicaciones que generan notificaciones pero nicamente lo hacen sobre su plataforma (reportan lo que sucede en esa aplicacin). Solo lo hacen algunas herramientas de manera centralizada para su producto, como por ejemplo, los antivirus, que utilizan programas instalados en los clientes pero administrados desde un servidor que tiene una consola robusta para soportar los clientes.
Se utiliz como protocolo de comunicacin SNMPv3, ya que no se pueden utilizar las versiones 1 y 2c por lo altamente inseguras y porque introduciran un punto inseguro en el modelo propuesto. SNMPv3 nos permite utilizar encripcin y autenticacin en los mensajes intercambiados ocultando el contenido y valores de los objetos. Adems se encuentra estandarizado mundialmente. En la Figura 12 y 13 se observa el intercambio de mensajes utilizando SNMPv2. Ante una solicitud del valor de un objeto, mediante el comando Get, obtenemos el valor de dicho objeto. En las figuras se pueden observar claramente la comunidad utilizada, el comando, la versin del protocolo, el OID del objeto y su valor. En las Figuras 14 y 15 observamos el intercambio de mensajes utilizando SNMPv3. Ante un mensaje de tipo Get obtenemos el valor del objeto deseado. Se observan los campos de la versin utilizada, las tres banderas utilizadas y el contenido encriptado de la PDU.
51
Figura 12. Get utilizando SNMPv2
52
Figura 13. Response del mensaje SNMPv2
53
Figura 14. Get utilizando SNMPv3
54
Figura 15. Response del mensaje SNMPv3
55
5.1.1 Programa Net-SNMP
Net-snmp es un programa que provee herramientas y libreras relacionadas al protocolo SNMP que incluye: un agente extensible, esto quiere decir que el agente bsico que viene con el programa puede ser extendido a manejar otras MIBs que uno puede desarrollar y estas pueden ser fcilmente introducidas al agente, por lo cual, ste puede monitorear lo que se le ha incorporado; una librera SNMP, provee una implementacin del protocolo con la funcionalidad especificada en los RFCs que definen el funcionamiento de SNMPv1, SNMPv2 y SNMPv3; herramientas para obtener y modificar informacin de agentes SNMP; herramientas para generar y manejar Traps; un compilador de MIBs que se encarga de generar una plantilla de cdigo en lenguaje C, y que implementa alguna de la funcionalidad final que tendra lo que uno est programando; entre otras. Los desarrolladores principales del proyecto son Dave Shield y Wes Hardaker.
Utiliza un tipo de licencia BSD la cual nos indica que el uso, la copia, la modificacin y la distribucin del software y su documentacin para cualquier propsito y sin ningn cargo, es permitido. Teniendo en cuenta que se debe poner el copyright adecuado y el permiso mencionado (especificados en el Anexo 1) y que deben aparecer en la documentacin creada para la aplicacin. No se permite que el nombre de ningn individuo ni institucin sea usado con fines de publicidad o anuncio sin su previo permiso. Para informacin ms detallada sobre el licenciamiento ver Anexo 1.
El programa fue desarrollado y est dirigido a desarrolladores y administradores de sistemas con conocimiento en C para permitirles utilizar la arquitectura SNMP.
Soporta los siguientes sistemas operativos: Microsoft Windows de 32-bit (95/98/NT/200/XP) y todos los POSIX 5 (Linux/BSD/Sistemas operativos tipo Unix).
El lenguaje de programacin en el que est escrito el programa es en C y en Perl.
Para ver informacin sobre la instalacin del programa Net-SNMP referirse al Anexo 6. 5.1.1.1 Pruebas de concepto
Se realiz para probar la validez y la forma de operacin de las herramientas y libreras de Net-SNMP y as poder garantizar que efectivamente cumple con los requisitos para el desarrollo del proyecto. Esto permite mostrar la viabilidad de la
5 Portable Operating System Interface for uniX (POSIX): su objetivo es el de disminuir el proceso de desarrollo de software en distintas plataformas mediante el establecimiento de una guas para que sigan los distintos vendedores de sistemas operativos. 56 expansin de la aplicacin para que monitoree nuevos objetos definidos. Se realizaron tres pruebas de concepto, que corresponden al desarrollo de las siguientes tres partes de la arquitectura de prueba: la consola, el agente y la MIB.
En la Figura 16, podemos observar la arquitectura general de la prueba.
Figura 16. Prueba de concepto realizada
Se debi realizar una MIB con una variable de prueba para observar la versin de un antivirus, utilizando la notacin ASN.1, de la siguiente manera:
TEST-MIB DEFINITIONS ::= BEGIN
IMPORTS DisplayString FROM RFC1213-MIB MODULE-IDENTITY, OBJECT-TYPE, enterprises FROM SNMPv2-SMI;
tesis MODULE-IDENTITY LAST-UPDATED "0411050000Z" ORGANIZATION "Prueba de concepto" CONTACT-INFO "Nicolas" DESCRIPTION "Definicin de la variable para la prueba de concepto." ::= { enterprises 1 }
test OBJECT IDENTIFIER ::= { enterprises 1 }
-- Grupos en TEST
tesis OBJECT IDENTIFIER ::= { test 1 }
-- El grupo Tesis 57
avVersion OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "La versin que tiene del antivirus." DEFVAL { 10 } ::= { tesis 1 }
END
Aqu se puede observar que se define el objeto avVersion, de tipo entero, con acceso de lectura y de escritura y valor inicial de 10. Luego de tener la definicin de la MIB, se procede a compilarla con el programa que viene con la herramienta (llamado mib2c), el cual genera el cdigo en C, que implementa esa funcionalidad. El cdigo se debe modificar y especificarle el valor de los datos o el lugar de donde proviene el valor que va a utilizar la variable. En este caso particular no es necesario modificar el cdigo. Luego, el cdigo compilado, se debe incluir dentro del agente, para que este pueda monitorear el objeto definido. De esta forma se pueden hacer sobre la variable operaciones de lectura y de escritura. El agente solo inicializa la MIB que se defini y ninguna otra. Esto implica que una consulta a una variable del grupo system no se puede hacer, ya que el agente no inicializ dicha MIB. Se cre un agente personalizado que solo responde a peticiones de la variable definida. Esto permite seleccionar lo que se desea en el agente y as permitir que no use tantos recursos en cosas que no vamos a estar monitoreando.
Por otro lado, la consola esta encargada de comunicarse con el agente con el protocolo SNMPv3. En la consola se maneja una sesin que es la encargada de llevar todos los parmetros de la configuracin de SNMPv3. De esta manera se comunica utilizando autenticacin (con MD5) y encripcin (con DES). La consola puede consultar la variable que se le solicite. En este caso consulta la variable avVersion. Si trata de consultar un objeto que no ha sido definido en el agente, muestra un error diciendo que dicho objeto no est definido en el agente. Esto permite controlar lo que se desea que tenga el agente cargado.
La prueba nos permiti probar que el programa Net-SNMP efectivamente sirve para lo que nosotros deseamos hacer. El programa permite extender el agente para que monitoree y guarde informacin de los logs y de esta manera poder desarrollar los adaptadores para que lean los logs y reporten a la consola de seguridad.
5.1.2 Seleccin de herramientas de seguridad
Recordando que los principios de seguridad son:
58 1. Autenticacin (la forma de determinar que una entidad es lo que dice ser). 2. Control de acceso y autorizacin (la forma de determinar los recursos y servicios que puede utilizar la entidad). 3. Integridad (los datos reflejen la realidad y que correspondan con lo que debe ser y no ha sido modificadas indebidamente). 4. Disponibilidad (los servicios y la informacin deben, en todo momento, estar disponibles). 5. Confidencialidad (que la informacin slo sea vista por los entes involucrados en la comunicacin y que un tercero no pueda ingresar). 6. No repudio (que algn ente que haya participado en la comunicacin no pueda negar su participacin en ella). 7. Auditabilidad (la herramienta guarda algn tipo de registro de eventos que han sucedido en el tiempo).
A partir de la teora se clasificaron las herramientas segn grupos que pretenden proteger contra cierto problema de seguridad (clasificados en categoras genricas) presente en las organizaciones. En estas clasificaciones se pueden agrupar la mayora de las herramientas de seguridad [12] [13] [14] [15] [16] [17] [18]. Cada una de estas herramientas pretende fortalecer ciertos principios de seguridad como se ve en la Tabla 1. Se debe tener en cuenta la siguiente terminologa utilizada:
Spyware: es una palabra normalmente utilizada para software que soporta publicidad. Adicionalmente es una tecnologa que ayuda a recolectar informacin de un individuo sin su consentimiento. Antivirus: es un programa que se encarga de escanear cualquier tipo de dispositivo de almacenamiento en busca de un virus conocido o potencial. Firewall: es un dispositivo o programa encargado de filtrar el acceso a una red. Permite definir lo que puede o no pasar a la red. Protege contra acceso no autorizado desde otra red. IDS: es un programa que se encarga de monitorear equipos en busca de indicios de un ataque o de bsqueda de una falla en la seguridad. Puede monitorear eventos en busca de algunos indicios.
Tabla 1. Principios garantizados por cada grupo de aplicacin
59 Cada una de las categoras de programas se encarga de fortalecer ciertos principios de seguridad. Para muchos de los usuarios de computadores, los spyware son muy trabajosos de solucionar. Cuando el equipo posee un spyware instalado (normalmente es un programa en ejecucin), se encuentra en peligro porque no se sabe exactamente como fue diseado el programa. Podra abrir algn puerto y permitir el ingreso no autorizado, podra modificar o alterar datos en el equipo o hasta podra reportar cosas que hacemos o tenemos a otra persona. Los antivirus se encargan de buscar y eliminar virus de los equipos, que a su vez son programas hechos con intenciones no ticas. Protege un equipo de tal forma que no daen su disponibilidad, ya que dependiendo del virus, podra afectar la disponibilidad de algn(os) servicio(s). Para un mayor nivel de proteccin encontramos los firewalls, que se encargan de filtrar acceso no autorizado y definen reglas de quien(es) pueden acceder a un determinado recurso que presta un servidor o hasta regular el acceso a una estacin. Permite una forma de proteccin mayor para garantizar que las personas no puedan decir que no han hecho algo. Una forma ms proactiva de estar protegido es mediante el uso de IDSs que permiten la deteccin temprana de ataques a equipos en la red. As garantizamos prevenir que suceda algo en la red, que pueda perjudicar su normal funcionamiento. Por ltimo, los sistemas operativos proveen cierto grado de proteccin contra estas caractersticas. Depende de la versin y el tipo de sistema operativo, se pueden controlar ms o no estos principios. Se puede decir que ofrecen una primera capa de fortalecimiento de los principios. Es difcil proteger un sistema operativo que tiene muchas falencias de seguridad y por esto deben ser sistemas muy robustos y seguros.
Estas aplicaciones que fortalecen los principios de seguridad tienen algo en comn: la generacin de logs como parte de su ejecucin. Una de las caractersticas ms importantes que debe tener el programa para que pueda ser monitoreado por el agente y por consiguiente por la consola de seguridad. Los programas que se analizan a continuacin cumplen con alguno(s) de los criterios para el desarrollo del proyecto.
Tabla 2. Caractersticas analizadas de los Anti-Spyware
La Tabla 2 muestra las caractersticas presentes en tres programas Anti-Spyware. Se ven caractersticas como el sistema operativo que soportan (Windows o Linux), si se ejecuta como consola o con modo grfico, si soporta logs binarios o de texto y por ltimo si se pueden programar scans con los programas, para que as escaneen el sistema en busca de Spyware.
60
Tabla 3. Caractersticas analizadas de los antivirus
En la Tabla 3 se observar un listado de programas antivirus y algunas caractersticas interesantes para el proyecto. Se ven caractersticas como el sistema operativo que soportan (Windows o Linux), si se ejecuta como consola o con modo grfico, si soporta logs binarios o de texto y por ltimo si se pueden programar scans con los programas, para que as escaneen el sistema en busca de virus. La s en la grfica indica que utiliza un servicio registrado en Windows.
Tabla 4. Caractersticas analizadas de los firewalls
Algunos programas de firewalls se muestran en la Tabla 4. Se puede observar un listado de las caractersticas de estos programas. Se ven caractersticas como el sistema operativo que soportan (Windows o Linux), si se ejecuta como consola o con modo grfico, si soporta logs binarios o de texto y por ltimo si estn en continua ejecucin, ya que estos programas protegen mientras el programa este en memoria. Puede ser interesante el firewall Kerio, que adicional a ser firewall tiene un IDS.
Tabla 5. Caractersticas analizadas de los IDS
61 En la Tabla 5 se observar algunos IDS. Se aprecia un listado de las caractersticas de estos programas. Se ven caractersticas como: el sistema operativo que soportan (Windows o Linux); si se ejecuta como consola o en modo grfico; si soporta logs binarios o de texto; si tiene un sheduler incorporado para programar scans; si soporta ms aplicaciones, que la herramienta se puede clasificar en ms de una categora ya que realiza otras funciones; la utilidad para el administrador de red, como le ayuda la herramienta de esa categora a desempear su funcin y si le sirve para garantizar la seguridad en la red; la interaccin por lnea de comandos, que permite interactuar con la herramienta desde una consola de la lnea de comandos para poder tomar una accin sobre ella y por ltimo si estn en continua ejecucin, ya que estos programas protegen y alertan mientras el programa este en memoria y en ejecucin. Puede ser interesante el firewall Kerio, que adicional a ser firewall tiene un IDS. Entendemos por manejan los con mucha informacin si la herramienta pone mucha informacin relevante al evento de seguridad detectado y da informacin sobre el evento.
Tabla 6. Criterios de seleccin de herramientas
En la Tabla 6 se puede observar unos criterios de seleccin con sus respectivos pesos, que sern utilizados como parte en la seleccin de las herramientas con las cuales se va a validar el modelo. Se utilizaron estos criterios porque son los que van de acuerdo a los intereses del proyecto por trabajar con herramientas gratuitas. Los pesos van de 1 (bajo) a 5 (alto). Luego de hacer un cruce de criterios y de herramientas a utilizar (Tabla 7), se obtuvieron los resultados que se muestran en la Tabla 8.
En la Tabla 7, se observa los criterios utilizados en la evaluacin y las herramientas a utilizar. Se calcul el peso total de cada aplicacin, segn los criterios establecidos. Vale la pena explicar un poco en que consiste la caracterstica de soporte a ms aplicaciones. Bsicamente es que la herramienta no slo se dedica a trabajar en la categora a la cual pertenece sino que tiene otras caractersticas que le permiten estar en otra categora. El criterio de la utilidad para un administrador de red se vio como lo que ms le sirve para el desarrollo de su papel. Se piensa que si se tienen buenas polticas a nivel de IDS y de firewalls (que dan datos en tiempo real), se puede, en cierta, forma proteger contra los virus y spyware, ya que podra llegarse a filtrar ese 62 contenido. Tanto los antivirus como los anti-spyware pueden detectar las cosas un tiempo despus y no sera tan crucial como con los otros.
Tabla 7. Resultados de aplicar criterios a herramientas
Tabla 8. Orden de las herramientas segn su peso
El resultado de haberle puesto el peso a los criterios se observa en la Tabla 8. Segn los criterios, vemos el orden de las herramientas segn los pesos. Llaman la atencin Kerio, IpTables y Avast!. En especial IpTables y Kerio. Las cuales son las herramientas que se utilizarn en el proyecto.
5.1.3 Seleccin de motor de base de datos
Debido a las caractersticas del proyecto se ha pensado en utilizar como motor de bases de datos MySQL. Un motor que nos ofrece muy buenas caractersticas de desempeo, precio, confiabilidad, velocidad y escalabilidad. Es uno de los motores de bases de datos ms populares utilizados. Una de las razones ms importantes por las cuales se decidi utilizar este motor fue para mantener los costos del proyecto muy bajos, permitiendo su utilizacin por cualquier empresa sin importar su capacidad 63 econmica. Vale la pena aclarar que cualquier motor de bases de datos puede ser utilizado en el modelo propuesto.
5.1.4 Anlisis del protocolo syslog
Con el fin de analizar otras posibilidades de comunicacin y de no sesgarse a la utilizacin de solo unos recursos, se mir la posibilidad de utilizar el protocolo syslog como medio de manipulacin de los logs. La idea es centralizar en un servidor todo el reporte de los logs y poner en este un agente SNMP que se encargara de enviar mensajes a la consola de seguridad. De esta forma se creara un adaptador para las herramientas y que reportara por medio del protocolo sucesos que encontrara en los logs. Esta idea debido al funcionamiento del protocolo, fue descartada, ya que no ofrece ningn tipo de seguridad. Lo interesante del protocolo es que muestra un formato de log que se debe seguir y que brinda informacin adecuada de algn evento.
Syslog es un protocolo, definido en el RFC 3164, que permite que una mquina mande mensajes por una red IP a un servidor syslog como se muestra en la Figura 17. Permite que las herramientas puedan reportar sucesos por este medio al servidor, para que este se encargue de su procesamiento y de su almacenamiento. Los mensajes son transportados por el puerto UDP 514.
Figura 17. Funcionamiento de Syslog
La estructura que se define para los mensajes es:
<Prioridad> Fecha Hora Equipo Aplicacin: mensaje
Tiene varios problemas de seguridad y es esto lo que puede traer problemas para nuestra arquitectura. Por el hecho de transportar los mensajes por un puerto UDP, no se garantiza que los mensajes sean entregados a su destinatario. Algo muy grave, ya que alguno de estos mensajes podra tener una gran importancia para la aplicacin. A su vez, no puede garantizar el orden del recibo de los mensajes, tocara disear algn mtodo para lograr esto. Esto puede presentar problemas ya que se pierde tiempo y procesamiento tratando de averiguar el orden de los mensajes.
Al no garantizar la entrega de los mensajes, estos se pueden perder y si el mensaje se pierde, se pierde y nunca ser recibido ni nadie se enterar de que se perdi, ya que el servidor solo se encarga de recibir los mensajes y no de solicitarlos a las aplicaciones. Para los mensajes no se define ningn tipo de encripcin ni de autenticacin, algo que 64 podra ser un punto de inseguridad en la arquitectura propuesta. La falencia de estos aspectos de seguridad, permitira que los mensajes fueran reenviados o duplicados, permitiendo que se recibieran datos errneos o con intenciones malficas. Adicional a todo esto, se tendra un punto de falla muy grande, ya que si por algn motivo el servidor perdiera su disponibilidad, la consola de seguridad se vera con problemas para poder monitorear las herramientas.
Lo que si puede llegar a ser rescatable del protocolo es el formato del mensaje. La idea sera incorporar ese formato dentro de los logs que vaya a crear la consola de seguridad.
5.2 ARQUITECTURA DEL MODELO PROPUESTO
5.2.1 Arquitectura general
En la Figura 18 se puede observar la arquitectura general de la solucin planteada. Nos muestra un diagrama de capas con los respectivos componentes y la forma en que se comunican entre si.
Antes de abordar la arquitectura propuesta es necesario aclarar unos trminos de la arquitectura que son claves y deben quedar bien claros y entendidos para evitar cualquier confusin.
En la arquitectura se mencionan los conceptos de adaptador, herramienta, consola de seguridad, incidentes de seguridad y eventos.
El adaptador es el conjunto de agente SNMP y analizador de logs, que trabajan cooperativamente para lograr la funcionalidad deseada. Hay que aclarar la diferencia entre un agente SNMP proxy y un adaptador: el agente proxy est encargado de traducir del protocolo SNMP a un protocolo de administracin propietario de un dispositivo, mientras que el adaptador traduce instrucciones de un ente no administrable, como son los logs, a SNMP. Por esta razn se habla de adaptador y no de agente SNMP Proxy. Se entiende por herramienta toda aplicacin desarrollada con fines de garantizar la seguridad en la red sea un firewall, IDS, antivirus, etc. La consola de seguridad es el encargado de administrar de manera centralizada los adaptadores y de comunicarse con la consola de gestin.
Los incidentes de seguridad y los eventos son la unidad bsica de informacin utilizada por la consola de seguridad para guardar incidentes de seguridad en la base de datos. Se maneja un incidente por cada una de las mquinas para lograr de esta manera centralizar en un incidente todos los eventos reportados por el (los) 65 adaptador(es) de una mquina. A su vez un incidente de seguridad est compuesto por varios eventos, que son cada uno de los incidentes de seguridad reportados por los adaptadores y que contienen los datos detallados de lo que sucedi. Los eventos e incidentes tienen un procedimiento asociado que permite documentar como fue su solucin. El procedimiento le permite documentar claramente lo que se hizo para solucionar el evento o el incidente, de esta forma se enriquece la base de datos con informacin que puede ser utilizada en un futuro y que tambin podra ayudar a solucionar otro evento de seguridad similar. Los incidentes y los eventos tienen asociado un estado, que indica si el evento o incidente ya fue solucionado o no, y adems posee una fecha de cierre que le permite especificar la fecha de cierre del evento o incidente.
Figura 18. Arquitectura general
Se muestra un diagrama general de arquitectura y es necesario profundizar en la arquitectura del host y de la consola.
El funcionamiento normal del modelo es:
1. El adaptador inicia su ejecucin y manda un Trap informando que ya est monitoreando la herramienta. 2. La consola de seguridad recibe el Trap y registra el adaptador para que pueda ser monitoreado por la consola. 3. El adaptador cada minuto manda un Trap informando que est en ejecucin y monitoreando la aplicacin. 4. La consola de seguridad recibe estos mensajes que le indican que el adaptador an est en ejecucin. 5. Prepara las estadsticas para mandarle un Trap a la consola de gestin.
En general frente a un suceso de seguridad sobre una mquina van a suceder los siguientes pasos:
66 1. La herramienta monitoreada detecta el ataque y genera las entradas correspondientes en el log. 2. El adaptador diseado para monitorear la herramienta va a estar examinando el log y si encuentra un nuevo evento va a mandar un Trap a la consola de seguridad con la informacin necesaria. 3. La consola de seguridad recibe el Trap e indica que en esa mquina estn ocurriendo sucesos de seguridad. 4. Guarda la informacin necesaria en la base de datos y prepara las estadsticas para mandar un Trap a la consola de gestin informndole el nombre de la mquina, la direccin IP, el nmero de incidentes de seguridad abiertos y el ID de cada uno de ellos.
5.2.2 Arquitectura del adaptador
Figura 19. Arquitectura del adaptador
Como se ve en la Figura 19, el adaptador est compuesto por dos componentes: un agente SNMP y un analizador de logs. El adaptador es el que va a permitir monitorear las herramientas de seguridad que no son capaces de reportar o generar mensajes SNMP. Este se encarga de reflejar la informacin y el estado que proviene del log, es decir, reporta lo que escribe la herramienta en el log. Los logs, dependiendo de la herramienta, se generan localmente y es el adaptador instalado en la mquina el que 67 se encarga de leer el log y de actualizar el estado de los objetos definidos en su(s) MIB(s).
Lo interesante de algunas herramientas es que se pueden programar para ejecutarse en ciertos momentos, lo que puede solucionar el hecho de que sea el usuario quien genera la ejecucin del programa. Otras herramientas estn en constante ejecucin monitoreando los eventos y modificando los logs.
Es responsabilidad del adaptador notificar a la consola de seguridad, mediante una operacin Trap, la ocurrencia de un evento. La consola es la encargada de tener la capacidad de determinar la gravedad del reporte.
Previamente se debe analizar la estructura del log (que debe ser de tipo texto, segn el criterio mencionado) y de ella sacar los campos relevantes que podran ser importantes para la consola de seguridad y por ende para el administrador de red. Una vez analizada la estructura del log, se procede a realizar un analizador de logs especfico para la aplicacin y que est en capacidad de leer el log.
Para que el adaptador est en la capacidad de monitorear los logs, se debe crear una MIB para esa herramienta, con los objetos definidos a partir de los campos relevantes del log.
5.2.2.1 Adaptador
5.2.2.1.1 Analizador de logs
Es uno de los componentes vitales para la arquitectura propuesta, ya que es quien se encarga de ir al log y traer los datos para su transporte va SNMP. Es difcil dar una arquitectura general para un analizador de logs, ya que su construccin est muy relacionada con la estructura misma del log. Lo que si se puede hacer es dar algunas pautas que se deben tener en cuenta cuando se planea construir un analizador de logs para determinada herramienta. Para el desarrollo del proyecto se desarrollaron dos adaptadores.
Se recomienda que el analizador de logs sea un programa compuesto de un archivo .c y .h, ya que esto facilita su inclusin en el agente y su uso posterior dentro del cdigo. Como en todos los .h, deben estar los prototipos de las funciones que se van a utilizar para acceder al log, para persistir y leer archivos temporales para el uso del adaptador y la estructura que va a representar los campos importantes del log. Por otro lado, el archivo .c contiene la implementacin de las funciones, la lgica que se encarga de ejecutar esas tareas.
68 Es importante analizar la estructura del log y determinar los campos importantes del log, aquellos que nos brindan ms informacin acerca del evento registrado en el log. Luego de haber analizado el log y de haber extrado los campos importantes, se procede a construir el .h y en especial la estructura que va a utilizarse para representar el log.
Una vez creada la estructura que contendr los campos del log, se puede proceder a implementar las funciones que se definieron en el .h. Para garantizar un mejor funcionamiento del adaptador, se recomienda tener en cuenta los siguientes puntos:
1. Como lo que se est leyendo es un archivo que puede llegar a tener miles de registros, es importante persistir mnimo a un archivo cuatro datos: el primero es un apuntador a la ltima lnea que se ley, para que de esta forma el adaptador pueda continuar leyendo el log desde donde qued. Es importante tener este apuntador en el analizador porque permite controlar que cuando el contenido del log sea borrado, se pueda comenzar a leerlo desde el comienzo. 2. Segundo, se debe llevar un registro de la fecha y hora del ltimo evento ledo en el log. Aqu se encuentran los otros tres datos que nos interesa persistir a un archivo: el mes, el da y la hora del evento ledo del log. Esto permite saber que el evento que vamos a procesar es antiguo o reciente comparado con el ltimo que se ley. 3. Como ya se ha mencionado, se deben persistir estos datos para que el adaptador en una ejecucin posterior no termine reportando un evento que ocurri hace das y slo se enfoque en aquella parte del log que contiene eventos nuevos, que no han sido reportados. 4. Es importante definir bien cuales de los registros en el log van a ser reportados a la consola de seguridad. Estos requerimientos dependen del tipo de herramienta utilizada. Por ejemplo para un firewall se recomienda notificar a la consola de seguridad registros que hayan sido rechazados o denegados por la aplicacin, ya que proveen mayor informacin sobre un posible ataque porque son reglas que el administrador ha definido para filtrar porque permiten bloquear puertas para un eventual ataque.
El analizador de logs construido posee dos funciones que se encargan de manejar el log. Existe una funcin, llamada void readFileK(), para leer el archivo de los datos que se persisten en el disco duro y que permite determinar el lugar en donde se ley por ltima vez el log. La otra funcin utilizada, llamada kerioids *readAllK(), es la que se encarga de traer del log la siguiente lnea que debe ser procesada y retorna la estructura con los datos correspondientes para que el agente SNMP actualice los valores de los objetos.
69 5.2.2.1.2 Consideraciones sobre los logs
Con el fin de determinar la mejor forma de crear el modelo de seguridad, era necesario analizar cual arquitectura era la que ms se adaptaba a nuestras necesidades y que pudiera brindar un mejor soporte y desempeo para futuras aplicaciones del modelo. Los criterios se piensan, no solo en el caso de estudio, sino a una escala mayor, como lo puede ser la implementacin en una empresa.
Estas consideraciones que se tuvieron en cuenta para la construccin del modelo, buscan favorecer el desempeo y confiabilidad de la aplicacin. Ellas tienen relacin con la forma de realizar el analizador de logs y la forma de realizar las MIBs a partir de estos logs. Hay que tener en cuenta un factor que est siempre presente en las decisiones que vamos a tomar: la arquitectura de la herramienta que se va a utilizar para los agentes, el protocolo SNMPv3 (Net-SNMP) y el funcionamiento del protocolo SNMP.
La consideracin que se tuvo que tener en cuenta fue la de crear un analizador de logs genrico para los tipos de logs. Tras una larga investigacin, se pudo determinar que no hay un estndar para los logs que manejen las aplicaciones. Es por esto que la estructura, el formato y el tipo de archivo quedan a disposicin de los desarrolladores de las aplicaciones y es decisin de ellos escoger la mejor aproximacin que les sirva. Esto complica mucho la unificacin de los logs, ya que las empresas desarrolladoras crean los logs como un archivo de soporte para el funcionamiento solo de sus aplicaciones, sin pensar, en la tendencia que tiene hoy la tecnologa de unificar el mundo de gestin y el de seguridad. Hecho que podra llegar a simplificar mucho el proceso de unificacin planteado. Sera interesante la creacin o mejoramiento de seguridad de protocolos, definidos en un RFC como en el caso de Syslog [21], que permitan el reporte estandarizado de mensajes para que los desarrolladores puedan utilizarlo en su estructura de los logs.
En nuestro caso particular, como usuarios e integradores de estos dos mundos, era necesario analizar la posibilidad de crear un analizador de logs estndar. Se pens que como algunos de los logs son archivos de texto, se podra tener la ayuda de un archivo que describe la estructura del log, para que el analizador estndar lo lea y pueda interpretar el log. El problema surge cuando vamos a ver a fondo los campos de los logs y se ve que al tratar de generalizarlos, hay diferencias sustanciales que podran complicar tanto la construccin del analizador como del archivo de la estructura del log. Las herramientas que vamos a utilizar en el caso de estudio, son un vivo ejemplo de la falta de unificacin en cuanto a la estructura de los logs. Tienen una estructura muy particular de los campos.
En la Figura 20 se puede observar dos registros de los logs de estas dos aplicaciones. En la Figura 20 (a) se encuentra el formato del log de la herramienta Kerio y en la Figura 20 (b) est el de la herramienta IpTables. Se pueden observar sutilezas en el 70 registro de los campos de cada log. Por ejemplo, se puede ver el formato de la fecha del registro de la herramienta Kerio y compararla con el de IpTables; el registro de la MAC de IpTables, necesita de un tratamiento especial, ya que ah se encuentran tanto la MAC de destino como la de origen. Es importante mencionar el hecho de que IpTables guarda sus registros en el log info del kernel. Por esta razn se encuentran no solo registros del programa, sino tambin del sistema operativo, para lo cual es necesario implementar un medio de filtrado de los registros para poder proceder a la extraccin de los datos del registro de IpTables. Para esto, se utiliza el prefijo que se puede definir en las reglas del programa como filtrado de paquetes y que al decirle a la aplicacin que escriba un registro en el log para determinada regla, se guardan los datos con el prefijo definido. En este caso se utiliza el prefijo: Shorewall:all2all:REJECT: como medio de filtrado de los registros. Esto tambin impide que se puedan generalizar los logs.
Figura 20. Estructura de los logs
5.2.2.1.3 Consideraciones sobre la MIB
La consideracin que se tuvo que tener en cuenta fue la de crear una MIB general para grupos de programas, esto es, una MIB para firewalls, otra para IDS, etc. El problema de utilizar una MIB para cada grupo viene cuando pensamos en el desempeo del modelo. Analizando la arquitectura propuesta se puede ver que el adaptador va a tener la implementacin de la MIB de cada grupo dentro del cdigo del agente. En el agente, ms especficamente en el mdulo de la MIB incorporada al agente, se define cada cuanto tiempo se va a llamar al analizador de logs. Por esta razn si se tiene un agente que va a monitorear ms de una aplicacin de un determinado grupo, sta en un instante solo puede llamar a un analizador de logs. Esto quiere decir que si se van a monitorear, por ejemplo, 5 aplicaciones de un grupo el agente slo puede monitorear una herramienta a la vez, ya que solo puede llamar a un analizador de logs a la vez y, adems, solo tendra una instancia de cada objeto a monitorear, ver Figura 21 (a). 71
Este hecho puede afectar el tiempo de respuesta del agente, ya que en un instante slo puede monitorear una herramienta. Tambin tendra que implementar cierto algoritmo como puede ser Round Robin, para la seleccin del analizador de logs y la asignacin del orden. Esto implica que el agente tardara en monitorear una aplicacin, lo que se demore el analizador de logs de cada una de las siguientes aplicaciones.
Cabe notar que el analizador de logs va a leer un archivo, el cual puede ser tan pequeo como de unos cuantos KB o hasta de unos cuantos MB o ms. Es por esto que ese tiempo de espera puede ser muy corto o tan largo como sea el tamao del archivo. Aqu aparecera cierta demora en la monitorizacin de una determinada aplicacin y se sacrificara ese anlisis en tiempo real. Elemento que se considera importantsimo en herramientas IDS, firewalls o antivirus.
Lo mencionado anteriormente se puede solucionar implementando una MIB especfica para cada herramienta a monitorear, para que de esta manera se incorpore esa MIB al agente y que esta se encargue de monitorear nicamente el log de esa herramienta, as, incrementando el tiempo de respuesta del agente para esa aplicacin y tambin permitiendo que el anlisis sea mucho mas cercano al tiempo de respuesta de la aplicacin monitoreada, brindado resultados en vivo del estado de la aplicacin, ver Figura 21 (b).
Figura 21. Implementacin de la MIB para la herramienta
Para el caso de estudio se defini la estructura de rbol de las MIBs a implementar (ver Figura 22). Como el caso de estudio es solo con fines de realizar una prueba de concepto, no se registr ni se solicit una asignacin de un nmero bajo la rama enterprises. El nodo principal de nuestro rbol es modSegSNMP (modelo de seguridad con soporte a SNMP). Debajo de esta hay otros dos nodos: agente y consola. Bajo la consola van a estar definidos los objetos que va a exponer a una Adaptador Adaptador 72 herramienta de gestin y esta es la MIB que la herramienta de gestin va a conocer; bajo el agente van a estar las MIBs de las herramientas que vamos a monitorear, para este caso, se encuentra un nodo kerio y otro ipTables. Debajo de estos, se van a encontrar los objetos que van a guardar los datos de los logs. Es aqu donde se reflejan los campos de los logs que son interesantes.
Figura 22. Estructura general de la MIB para el modelo propuesto
5.2.2.1.4 Construccin del adaptador
Ahora es tiempo de definir y construir el analizador de logs para cada herramienta. Para esto es necesario ver la estructura del archivo y sus campos y decidir cuales pueden ser importantes para el administrador de red. Hay que preguntarse: Cules campos brindan informacin pertinente sobre la seguridad? Luego de definir los 73 campos, se debe crear una estructura en C 6 que va a contener variables en donde se van a reflejar los campos del archivo. Por ejemplo en la Figura 23 observamos una estructura (construida a partir de los campos importantes del log) para la herramienta Kerio.
Figura 23. Estructura en C para la herramienta Kerio
A partir de esa estructura, se procede a definir las hojas (objetos) a monitorear de cada aplicacin. Para ver la definicin de los objetos para una las dos herramientas referirse al Anexo 2. Se pueden aadir campos adicionales si se desea guardar datos adicionales. Para nuestro caso se define en ambas MIBs un objeto xStateOfInterface (donde x puede ser k para Kerio o ip para IpTables) que permite tomar acciones sobre la interfaz de red del equipo.
Para adicionar las MIBs desarrolladas en el agente remitirse al Anexo 6.
De esta forma se integra el mdulo creado, segn la MIB definida, al agente. Para que de esta forma el agente pueda mantener las instancias de las variables definidas (que son los objetos definidos en la MIB) y para que as pueda consultar y guardar los datos.
En este punto ya se pueden hacer consultas a las variables definidas en el agente y dependiendo de los permisos, se pueden consultar y/o modificar los valores. Por ejemplo, se puede hacer esta consulta:
Entrando un poco ms en la forma en que se extendi el agente es importante mencionar algunos aspectos relevantes del cdigo. Para el caso de prueba se utiliz la herramienta mib2c para generar la plantilla del cdigo a utilizar para poder extender
6 Lenguaje de programacin C 74 el agente. En estos archivos aparecen funciones que vale la pena mencionar para que sirven.
El archivo creado comienza con una funcin llamada: void init_yy(void) //donde yy es el nombre del archivo generado por mib2c Esta funcin es la encargada de inicializar el mdulo que queremos implementar. En este caso es para ipTables o kerio. Dentro de ella se van a definir las OIDs de cada objeto de manera esttica y en formato de nmeros, ya que se debe guardar durante la ejecucin del agente estos valores para la consulta especfica de las variables. Tambin se encuentra la definicin de las variables que van a estar encargadas de guardar los datos de las variables que vamos a solicitarle al analizador de logs.
Una de las funciones ms importantes es la que se encarga de registrar el objeto escalar y su handler o manejador, que es el que se encarga de administrar como vamos a manejar los datos de la variable. Por ejemplo se tiene que para poder manejar la variable y el dato del objeto ipDate, es necesario definir lo siguiente:
La funcin encargada de registrar el objeto escalar es netsnmp_register_scalar que recibe como parmetro un apuntador a un netsnmp_handler_registration, que tiene el registro y apunta al handler o manejador para ese objeto. La funcin netsnmp_create_handler_registration es la encargada de crear y registrar el handler para ese objeto. Recibe el nombre del handler encargado de llamar a la funcin handle_ipDate para que atienda la solicitud SNMP, para el objeto ipDate_oid. La funcin OID_LENGTH calcula la longitud de dicho objeto. El ltimo parmetro que en este caso es HANDLER_CAN_RONLY indica el nivel de acceso que se tiene, o sea si es de lectura o lectura y escritura.
Ahora se va a ver en detalle la funcin handle_ipDate, encargada de atender solicitudes SNMP para el objeto ipDate. Su implementacin es la siguiente:
El switch sirve para identificar el tipo de solicitud proveniente. En este caso si es de tipo MODE_GET, se va a llamar a la funcin snmp_set_var_typed_value, que est encargada de manejar la obtencin del valor del objeto solicitado. Recibe como parmetros la lista de variables solicitadas (requests->requestvb), el tipo de dato del objeto (ASN_OCTET_STR), un apuntador al dato del objeto y la longitud de los datos en bytes. De esta forma se puede consultar el valor del objeto.
Otra funcin importante, un poco equivalente a la vista para registrar el objeto, es una funcin creada para registrar objetos de tipo enteros, como se ve a continuacin:
La funcin netsnmp_register_int_instance recibe como parmetros el nombre del handler, el objeto (ipStateOfInterface_oid), su longitud, el valor que se va a registrar, y el handler que uno va a utilizar para manejar las solicitudes.
Uno de las funciones bsicas para la actualizacin de los datos del mdulo es una funcin para registrar una alarma, para decirle al agente que cada cierto tiempo vaya por los datos. La funcin es la siguiente:
La funcin snmp_alarm_register registra los callbacks que deben ocurrir cada determinado tiempo en el futuro. Recibe como parmetros cada cuantos segundos se debe llamar al callback, una bandera llamada SA_REPEAT que indica con cuanta frecuencia se debe llamar al callback, en este caso, el callback registrado se va a 76 repetir cada SA_REPEAT segundos, el callback que es un apuntador a SNMPAlarmCallback que es la funcin callback guardada y registrada para el uso cuando ocurra el tiempo, en nuestro caso va a ser call_log_analyzer_iptables, lo que quiere decir que cada que se cumpla el tiempo, se va a llamar al analizador de logs de una determinada herramienta y esta es la encargada de traer los nuevos datos del log, para que los guarde el mdulo. Por ltimo, recibe un apuntador que es usado por la funcin callback, pero en nuestro caso no se va a utilizar, por lo cual se manda como parmetro NULL.
La funcin callback call_log_analyzer_iptables llama al analizador de logs y actualiza los datos que estn actualmente en el mdulo. Adicionalmente se manda un Trap con los datos recibidos mediante la funcin send_ipNotifyTrap_trap, que manda una Trap al lugar especificado en el archivo de configuracin snmpd.conf en la parte donde dice trapsess, de esta forma:
trapsess -v 3 -u nbatest -n "" -l authPriv -a MD5 -A nbaprueba -x DES -X nbaprueba -e 0x0102030406 localhost:162
77 Que especifica que se va a mandar un Trap, con los mismos datos que se usaran en un snmpget con versin tres. Solo que se especifica el equipo que lo va a recibir y por el puerto que lo recibe, que en este caso es el puerto default de 162.
Para mandar el Trap desde el cdigo se debe hacer lo siguiente:
int send_ipNotifyTrap_trap( void ) { netsnmp_variable_list *var_list = NULL; oid ipNotifyTrap_oid[] = { 1,3,6,1,4,1,1,1,2,15,1 }; size_t ipNotifyTrap_oid_len = OID_LENGTH(ipNotifyTrap_oid);
Se crea la lista que va a contener las variables y los datos. Se define el OID que identifica las Traps para la herramienta IpTables. Luego se define el OID de las Traps en general. Luego se definen los tamaos y los OIDs de las variables que va a contener el Trap, luego se asigna a la lista de variables el OID de las Traps en general y posteriormente con los objetos que queremos que contenga la Trap. Por ltimo se manda la Trap que contiene una PDU de versin 2 y se libera la lista.
La funcin snmp_varlist_add_variable adiciona la dupla (objeto, valor) a la lista de variables. Recibe como parmetros la lista de variables, el OID del objeto a adicionar, su longitud, el tipo de dato ASN que es el objeto, el valor del objeto y su longitud.
78 De la misma manera cuando el adaptador inicia su ejecucin se manda una Trap informando que ese adaptador ha iniciado su ejecucin y por tanto el monitoreo de la herramienta. Adicionalmente cada minuto se manda un Trap informando que el adaptador est vivo.
Hay que mencionar que para que se tome una accin tras una solicitud, hay que definir en el handler de ese objeto la accin que se va a realizar, de la siguiente manera:
int handle_ipStateOfInterface(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { if(reqinfo->mode==MODE_SET_ACTION) { if(data_ipStateOfInterface==0) { printf("Bring down interface"); } }
return SNMP_ERR_NOERROR; }
Aqu se verifica si el modo de la solicitud es MODE_SET_ACTION que indica que la solicitud es un snmpset al objeto y luego es necesario verificar si el valor de data_ipStateOfInterface es cero, en tal caso se debe bajar la interfaz de red.
5.2.3 Arquitectura de la consola de seguridad
79
Figura 24. Arquitectura de la consola de seguridad
La Figura 24 nos muestra los componentes generales de los que se compone la consola de seguridad. sta es la encargada de realizar acciones mediante la operacin Set, sobre los adaptadores y tambin recibir Traps provenientes de ellos. Adems muestra al usuario algunos datos relevantes de las herramientas que est monitoreando para que se informe sobre lo que est sucediendo en ellas.
Otras funciones importantes que debe cumplir la consola de seguridad es la de notificar o generar alertas por otros medios que no sean mensajes SNMP como por ejemplo mensajes a un beeper o un celular. Tambin debe ser capaz de escalar notificaciones de mquinas que estn generando muchos problemas importantes y que no han sido atendidos oportunamente en la mquina.
Adicionalmente, a la consola de seguridad se le deben informar las MIBs de las herramientas que va a monitorear, con el fin de que pueda conocer los objetos por los cuales va a indagar en el host. Tambin existe la posibilidad de que descubra estos objetos mediante unas operaciones GetNext o Walk (comando que trae en secuencia ciertos valores en orden lexicogrfico) y as, no solo logra conocer el objeto, sino que conoce su valor.
Como la consola de seguridad debe soportar SNMP, sta incluye un agente SNMP para que pueda exponer objetos monitoreables a una consola de gestin. Al agente se le debe crear una MIB de aquellos objetos que deseamos exponer a la consola de gestin. Adicionalmente cuenta con un receptor de Traps que se encarga de recibir los Traps enviados desde los adaptadores para su posterior anlisis y representacin en la consola de seguridad. 80
La consola de seguridad utiliza una base de datos para guardar informacin referente a los incidentes de seguridad y eventos generados por los adaptadores y es ah donde se guardan los datos reportados del log de la aplicacin monitoreada. En la base de datos es donde se guardan las notificaciones recibidas por los adaptadores y es el repositorio de eventos que las herramientas de seguridad han escrito en sus logs. Desde este punto de vista vemos que en la base de datos se encuentra la informacin escrita en los logs de cada una de las herramientas, lo que permite ver desde la consola una consolidacin de los logs para as poder simplificar el proceso de auditora y anlisis forense, procesos que necesitan de la verificacin manual de los logs de las herramientas. Cada cierto tiempo la consola verifica si es necesario escalar un evento de seguridad que ya ha cumplido la vigencia para ser solucionado. De ser necesario manda un correo a la(s) persona(s) que estn un nivel ms arriba en el organigrama de la empresa.
5.2.3.1 Consola de seguridad
La consola de seguridad, diseada especficamente para los administradores de red u otra persona encargada de administrar el estado de la red, se encuentra compuesta de cuatro subsistemas que complementan la funcionalidad necesaria de la consola como se muestra en la Figura 25. Cada subsistema tiene determinadas tareas que permiten una buena independencia entre ellos y cada uno de ellos tiene una funcin especfica.
Figura 25. Subsistemas de la consola de seguridad
81 5.2.3.1.1 Subsistema de ambiente grfico
Es el encargado de administrar la interfaz con el usuario y de responder a comandos del usuario al igual que mostrarle a l lo que ocurre en la aplicacin. Aqu el usuario puede aadir o eliminar usuarios del sistema tanto para aquellos que acceden va la consola o va Web, editar parmetros de los Traps que entran y de los que salen. Adicionalmente puede interactuar con las mquinas y si lo desea las puede agrupar por subredes diferentes e insertar etiquetas que las identifiquen. Se muestra informacin del estado de las mquinas y si el usuario lo desea puede ver los incidentes de seguridad y eventos de la mquina deseada.
Se encarga de permitir interactuar al usuario con los incidentes y eventos, permitiendo cambiar su estado, editar la fecha de cierre y agregar el procedimiento utilizado para solucionar el incidente y/o evento. Aqu se notifica en la pantalla del usuario el estado actual de cada una de las mquinas monitoreadas. Los estados manejados son: abierto, que indica que un incidente o evento se encuentra sin solucin; cerrado, que indica la clausura y solucin de un incidente o evento y por ltimo, descartado, indicando que el incidente o evento no representa un evento de seguridad relevante. Cuando la mquina se encuentra arriba y se estn recibiendo notificaciones de los agentes diciendo que estn vivos, se muestran los botones en color azul (que indica que la mquina est viva); cuando los botones toman el color blanco quiere decir que no se han vuelto a recibir ningn tipo de notificacin de ese agente; por ltimo, cuando el botn est intermitente entre color azul y rojo, es porque se estn recibiendo notificaciones del agente (que indica que la mquina est siendo atacada).
5.2.3.1.2 Subsistema de control de incidentes de seguridad
Es la parte central de la arquitectura en donde se va a realizar todo el anlisis y administracin de los eventos, incidentes de seguridad, notificaciones y estadsticas necesarias para mantener al usuario informado. En este subsistema se procesan las notificaciones recibidas por el subsistema de recepcin de mensajes SNMP. A partir de estas notificaciones se administran los incidentes y eventos para esa mquina. Cuando llega una notificacin es necesario procesar su informacin y actualizar la base de datos con la informacin necesaria, calcular las estadsticas de las notificaciones recibidas, notificar al subsistema de ambiente grfico que ha llegado un nuevo mensaje para que tome la medida adecuada, tomar la decisin si es necesario el envo de una notificacin va SMTP y por ltimo, cada cierto tiempo preparar un mensaje para el subsistema de envo de mensajes SNMP.
82 5.2.3.1.3 Subsistema de recepcin de mensajes SNMP
Su funcin es la de estar constantemente escuchando notificaciones provenientes de los adaptadores para as notificarlas al subsistema de control de incidentes de seguridad. Al arribo de una notificacin es necesario analizar el contenido del Trap y extraer la informacin relevante para el subsistema de control de incidentes de seguridad. Una vez analizada la informacin se debe armar el mensaje para notificrselo al subsistema de control de incidentes de seguridad y as enviarle la informacin necesaria para que sea procesada.
5.2.3.1.4 Subsistema de envo de mensaje SNMP
Est encargado de mandar Traps informativas a una consola de gestin. Cada cierto tiempo, cuando as lo determine el subsistema de control de incidentes de seguridad, es necesario tomar la informacin estadstica suministrada por ese subsistema y armar un Trap con esa informacin para que as sea enviada esta informacin a la consola de gestin, en donde se reportar que algo ha sucedido. Este subsistema hace uso del agente SNMP y de la MIB para poder exponer la informacin necesaria para una consola de gestin. Esta MIB fue diseada para mostrar informacin que ha sido analizada y filtrada por la consola de seguridad, permitiendo que la consola de gestin vea solo estos datos porque no est dentro de su funcin la de monitorear y recibir informacin acerca de herramientas de seguridad. Por esta razn no se exponen los datos de las MIB de los adaptadores y tambin para evitar que la consola de gestin reciba notificaciones que la consola de seguridad ha recibido. Lo que quebrantara un poco el modelo propuesto y la utilidad de la consola de seguridad, que es la encargada de administrar y gestionar las herramientas.
Para los usuarios autorizados que desean conocer informacin acerca de los incidentes y/o eventos existe un ambiente Web por donde pueden acceder a dicha informacin y consultar el estado de los incidentes y/o eventos de las mquinas. Este ambiente es solamente informativo y no permite ningn tipo de interaccin con la informacin presentada al usuario.
5.2.3.2 Modelo entidad-relacin de la base de datos utilizada
El diagrama de entidad-relacin utilizado en la consola de seguridad se muestra en la Figura 26. Se puede observar que una mquina puede tener varios incidentes de seguridad (en caso que tenga uno o ms vencidos) y que a su vez cada incidente puede tener varios eventos. La tabla usuario es utilizada para guardar los usuarios que van a acceder a la consola de seguridad y al ambiente Web. Por ltimo la tabla datos del programa se utiliza para guardar datos relacionados con la ejecucin de la consola. 83
Figura 26. Diagrama entidad-relacin
5.2.3.3 Diagrama de clases de la consola de seguridad
Referirse al Anexo 9 para los diagramas de clases. 84
6 PRUEBAS
6.1 DESCRIPCIN DE LA PRUEBA
Una vez planteado el modelo de seguridad propuesto, es necesario realizar un protocolo de pruebas para poder validar el modelo y presentar un ambiente de prueba que lo muestre en ejecucin. Por esta razn se construy un ambiente de pruebas que trate de simular lo que puede ser una red corporativa, en donde se pretende que usen el modelo para fortalecer an ms sus niveles de seguridad y brindar una mejor y rpida respuesta ante incidentes en la red. Es necesario aclarar que cuando nos referimos a agente, no debe entenderse como un agente SNMP, sino como un agente de seguridad o adaptador, basado en SNMP para comunicarse. Referirse al Anexo 7 para la instalacin de los componentes.
La Figura 27 muestra la red utilizada para simular una red corporativa y en donde va a correr la implementacin del modelo. Se puede apreciar que se utilizaron dos enrutadores cada uno conectado a una subred diferente. En cada subred hay un IDS y un firewall que pretenden mostrar varias herramientas de seguridad corriendo y como va a ser la alerta de los eventos en la consola de seguridad. Adicionalmente permite ser usada como un punto de referencia ya que podemos comparar el desempeo de la herramienta en ambas subredes y evitar que el resultado sea afectado de alguna manera por las configuraciones en los equipos y programas. En la red aparece una consola de gestin que fue utilizada para validar que efectivamente la consola de seguridad se puede comunicar con una consola de gestin, ya que debe brindar soporte a SNMP para la integracin con una herramienta de gestin.
Las redes cuentan tanto con sistemas operativos Windows como Linux. A continuacin se ve la configuracin que tienen los equipos:
Marca: DELL Procesador: Pentium 4 de 2.66 GHz RAM: 256 MB a 333 MHz Sistema operativo: Windows 2000 o Linux Mandrake 10 Tarjeta de red: 10/100 Mbps
En la mquina del atacante se utiliz un programa llamado GFI LANguard Network Security Scanner, que se encarga de detectar vulnerabilidades en los equipos, provee informacin detallada de las mquinas y permite administrar los parches del sistema operativo y de los programas. Entre las pruebas de vulnerabilidades que hace, se encuentran las siguientes: escaneo e identificacin de puertos, deteccin de parches instalados, deteccin de recursos compartidos, deteccin de usuarios y grupos no 85 utilizados, deteccin de vulnerabilidades CGI, deteccin de vulnerabilidades de RPC y de correo, entre muchas otras vulnerabilidades. Algunas de las detecciones que el enrutador impide que pasen son: descubrimiento de SNMP, escaneo de sesiones nulas, entre otros.
Los switches utilizados son 3Com SuperStack 3 y los enrutadores son Cisco 2500 y 3600. Los concentradores utilizados fueron unos Cisco FastHub 400 series.
Se realizaron las siguientes pruebas con el modelo planteado:
1. Porcentaje de utilizacin de CPU por parte de los agentes 2. Utilizacin de la red de una herramienta comercial de gestin 3. Prueba de funcionalidad de la aplicacin: desempeo y funcionalidad 4. Medicin de la carga de red de la forma siguiente (en ambas subredes): a. Sin agentes ni consola de seguridad en ejecucin b. Con agentes y consola de seguridad en ejecucin, pero sin ataque c. Con agentes y consola de seguridad en ejecucin, pero con ataque d. Sin agentes ni consola de seguridad, pero con ataque 5. Medicin de la carga soportada por la consola de seguridad
6.2 DESARROLLO DE LAS PRUEBAS
Luego de efectuar las mediciones necesarias se obtuvieron los siguientes resultados (las mediciones se realizaron cuatro veces para poder sacar estos resultados):
1) Porcentaje de utilizacin de CPU de los agentes:
1. IDS (Windows 2000): a. Mquina 1 (subred 1): oscila entre 0% y 2%, segn mediciones del sistema operativo b. Mquina 2 (subred 2): oscila entre 0% y 3%, segn mediciones del sistema operativo 2. Firewall (Linux Mandrake 10): a. Mquina 1 (subred 1): utilizacin de 6%, segn mediciones del sistema operativo b. Mquina 2 (subred 2): utilizacin de 9%, segn mediciones del sistema operativo 86
Figura 27. Diagrama de la red de prueba utilizada
87
Las mediciones de la utilizacin de CPU fueron obtenidas mediante el uso de herramientas incorporadas en los sistemas operativos. Se realizaron mediciones cada 30 segundos por in intervalo de 5 minutos. Es importante aclarar que los servicios que se estaban ejecutando en cada uno de los sistemas operativos de cada una de las mquinas, son los que vienen por defecto tras la instalacin de cada uno de los sistemas operativos. Adicionalmente, en las mquinas de Windows 2000 se estaba ejecutando el IDS (Kerio) y el agente. Por otro lado, en las mquinas con Linux se estaba ejecutando Webmin, IpTables y el agente.
2) Utilizacin de la red de una herramienta comercial de gestin:
Antes de entrar a este punto es importante mostrar la carga de la red sin ninguna herramienta de gestin ni de seguridad en ejecucin. La Figura 28 muestra los resultados obtenidos con una duracin de la medida de aproximadamente de 10 minutos (en la subred 1). Teniendo en cuenta la velocidad de la tarjeta de red de la mquina que realiz las mediciones en la subred 1 que es de 100 Mbps se puede calcular la utilizacin (el porcentaje del ancho de banda disponible utilizado). En este caso la utilizacin promedio es de 0.0005% aproximadamente.
Figura 28. Utilizacin de la red en la subred 1
Para esta prueba se utiliz una herramienta que provee la empresa AdventNet llamada SNMP Trap Stormer, la cual se puede configurar para mandar Traps cada cierto tiempo. Para que la herramienta se pueda comparar fcilmente con los agentes utilizados, se configur para que mandara Traps cada minuto (tiempo en el cual el agente nuestro manda un Trap a la consola de seguridad diciendo que est vivo). La herramienta tambin permite configurar los objetos y sus valores (varbinds) que va a contener el Trap que, en este caso, se configur de la misma forma en que lo mandara el agente. En la Figura 29 se puede observar la carga en la red bajo la ejecucin de la herramienta de gestin con una duracin de la medida de aproximadamente de 10 minutos en la misma subred. En este caso la utilizacin promedio es de 0.0006% aproximadamente.
88
Figura 29. Utilizacin de la red en la subred 1
3) Prueba de funcionalidad de la aplicacin: desempeo y funcionalidad
Luego de un ataque se compararon los registros encontrados en el log de las herramientas generados por el ataque contra los eventos almacenados en la base de datos.
a. IDS (Windows 2000): a. Mquina 1: 5 entradas en el log y 5 eventos en la base de datos b. Mquina 2: 5 entradas en el log y 5 eventos en la base de datos b. Firewall (Linux Mandrake 10): c. Mquina 1: 846 entradas en el log y 362 eventos en la base de datos d. Mquina 2: 84 entradas en el log y 66 eventos en la base de datos
Ambos IDS reportaron cinco eventos de cinco entradas en el log, lo que indica un 100% de reportes de eventos desde los IDS. Por otro lado, el firewall de la mquina 1 y de la mquina 2 reportaron el 42.8% y 78.6% de eventos respectivamente.
Se realizaron pruebas adicionales para determinar la causa en la prdida de eventos no notificados. Una de las causas que lo afecta es el tiempo de procesamiento y de notificacin de los eventos, en primer lugar, la velocidad a la que funcionan los lenguajes de programacin utilizados: C y Java, siendo el segundo un poco ms lento por su velocidad de procesamiento. En segundo lugar, se observa que hubo ms prdidas de eventos notificados en las mquinas que deban mandar los Traps de una subred a otra, razn por la cual es muy importante el ancho de banda y la velocidad a la que se comunican los enrutadores. En la mquina 2 hay menos entradas en el log que en la mquina 1, debido a que el atacante est en otra subred y por consiguiente se filtran varios tipos de ataques en los enrutadores. En la Tabla 9 las pruebas 1 y 2 de las mquinas 1 y 2 se hicieron reportando por grupos de notificaciones de 100 eventos; las pruebas 3 y 4 de ambas mquinas se hicieron con grupos de a 50 eventos y, por ltimo, las pruebas 5 y 6 se hicieron con grupos de 25 eventos. Estos resultados indican que el agente est enviando grupos de muchas notificaciones a la consola de seguridad y en cierta manera la satura impidiendo que procese todos los grupos de eventos recibidos. Bajando el nmero de eventos en cada grupo reportado, se logra aumentar la capacidad de la consola de seguridad de procesar y analizar las notificaciones recibidas. Adicionalmente se puede mejorar el envo de notificaciones 89 incluyendo algn tipo de inteligencia en el agente que pudiera decidir que notificar y que no y que decida lo que es relevante aadir al grupo de notificaciones.
4) Medicin de la carga de red en estas condiciones (en ambas subredes):
a. Sin agentes ni consola de seguridad en ejecucin:
Esta prueba se realiz para ver la utilizacin de la red en cada una de las subredes para tener un punto de comparacin con las pruebas siguientes. En la Figura 30 (a) se puede ver la utilizacin en la subred 1, mientras que en la Figura 30 (b) se observa la utilizacin en la subred 2 con una duracin de la medida de aproximadamente de 10 minutos. Teniendo en cuenta la velocidad de la tarjeta de red de la mquina que realiz las mediciones en la subred 2 que es de 10 Mbps se puede calcular la utilizacin (el porcentaje del ancho de banda disponible utilizado). En este caso la utilizacin promedio para la Figura 30 (a) es de 0.0005% aproximadamente y de 0.004% aproximadamente para la otra.
(a) Subred 1
90
(b) Subred 2 Figura 30. Utilizacin de la red
b. Con agentes y consola de seguridad en ejecucin, pero sin ataque:
En esta prueba se puede observar la utilizacin de la red, en ambas subredes, tanto de los agentes como de la consola de seguridad en ausencia de un ataque sobre los equipos. En la Figura 31 (a) se aprecia la utilizacin en la subred 1, mientras que en la Figura 31 (b) se observa la utilizacin en la subred 2 con una duracin de la medida de aproximadamente de 10 minutos. La ltima grfica tiene esos picos que indican la presencia de la consola de seguridad en esa subred, ya que cada uno de los picos muestra cuando llegan los Traps de los agentes. Cada agente, bajo ausencia de un ataque, manda un Trap cada minuto especificando que est en ejecucin y por tanto monitoreando la herramienta. Es por esto que cada minuto un agente pone una carga adicional de aproximadamente 190 bytes en la red. Cada uno de los picos tiene una duracin de aproximadamente 10 segundos. En la Figura 31 (c) podemos observar el trfico generado en la subred 1, que a diferencia de la figura (a), fue medida utilizando un concentrador, para que no tuviramos problemas en la medicin debido a los dominios de colisin de un switch. En este caso la utilizacin promedio aproximada para la Figura 31 (a) es de 0.0005%, de 0.03% para la (b) y de 0.0009% para la (c).
(a) Subred 1
91
(b) Subred 2
(c) Subred 1 Figura 31. Utilizacin de la red
c. Con agentes y consola de seguridad en ejecucin, pero con ataque:
El siguiente paso en las pruebas es probar el desempeo de la red bajo el efecto de un ataque sobre los equipos que estn monitoreando los agentes, utilizando los switches. En la Figura 32 (a) se observa la utilizacin en la subred 1, mientras que en la Figura 32 (b) se muestra la utilizacin en la subred 2 con una duracin de la medida de aproximadamente de 15 minutos. En este caso la utilizacin promedio aproximada durante la duracin del ataque es para la Figura 32 (a) de 0.03% y de 1.5% para la grfica (b). El ataque hacia todos los equipos tuvo una duracin de dos minutos y treinta segundos aproximadamente. La Figura 32 (b) tiene una utilizacin del 1.5% ya que en la subred 2 se encuentra la consola de seguridad lo que genera en esa subred ms trfico que el de un ataque normal, debido a las notificaciones de los eventos por parte de los agentes en ambas subredes.
(a) Subred 1
92
(b) Subred 2 Figura 32. Utilizacin de la red
d. Sin agentes ni consola de seguridad, pero con ataque
Para poder determinar el trfico adicional generado por la consola de seguridad, bajo un ataque, es necesario medir la carga generada por el mismo tipo de ataque que se hace sobre las mquinas con los agentes monitoreando, pero esta vez no van a estar corriendo los agentes para no generar el trfico adicional. En la Figura 33 (a) se puede ver la utilizacin en la subred 1, mientras que en la Figura 33 (b) se observa la utilizacin en la subred 2, resultado que corresponde a una medicin en la mquina donde se tomaron las medidas. La duracin de la medida fue de aproximadamente de 10 minutos. La Figura 33 (c) muestra la utilizacin en la subred 2 utilizando un concentrador, lo que muestra un resultado de medida total de la subred. En este caso la utilizacin promedio aproximada durante el ataque para la Figura 33 (a) es de 0.05%, de 0.004% para la (b) y de 0.15% para la (c).
(a) Subred 1
(b) Subred 2
93
(c) Subred 2 Figura 33. Utilizacin de la red
5) Medicin de la carga soportada por la consola de seguridad:
Esta prueba se realiz con el fin de determinar que tanta carga de informacin (en este caso los Traps generados por los adaptadores) es capaz de soportar la consola de seguridad hasta el punto de saturarse y dejar de funcionar correctamente. La finalidad de la prueba es poder determinar cuntos adaptadores o Traps es capaz de soportar, bajo el funcionamiento en el peor caso, que es cuando se est realizando un ataque sobre las distintas mquinas monitoreadas y por ende se genera un gran nmero de mensajes.
Vale la pena aclarar que la prueba tiene factores adicionales que pueden afectar el umbral de mensajes que puede procesar la consola. Entre estos se encuentra que cada Trap que recibe la consola debe ser procesada y analizada por el subsistema de control de incidentes de seguridad y adems debe ser almacenada la informacin en la base de datos. Otro factor que entra en consideracin es la velocidad con la que se procesan las instrucciones de la aplicacin dada la naturaleza de la herramienta de desarrollo seleccionada, en este caso JAVA.
Para realizar la prueba se cont con una herramienta que genera Traps en rfagas y tiempos definibles. La herramienta a utilizar se llama SNMP Trap Stormer de AdventNet. Permite configurar los Traps de la misma forma y con la misma informacin como si fueran envidos desde los adaptadores.
Es importante mencionar que debido a la implementacin de los adaptadores el mximo nmero de Traps que se pueden a enviar desde los adaptadores desarrollados es de 25 Traps por segundo. La prueba se realiz generando este tipo de trfico desde una estacin hacia la consola de seguridad. Se configuraron los Traps de la misma manera a como los enviara un adaptador.
La Figura 34 muestra el trfico normal de la red.
94
Figura 34. Trfico normal de la red
La prueba se realiz enviando a la consola de seguridad 2000 y 3000 Traps para ver si era capaz de soportar esta cantidad de mensajes. En el primer caso, la consola es capaz de procesar y almacenar en la base de datos la informacin de un total de 1855 mensajes que los recibi en un periodo de 80 segundos, dando como resultado una eficiencia del 92%. Para el ltimo caso, se procesaron y almacenaron un total de 1872 mensajes durante 110 segundos, tiempo en el cual la aplicacin dej de responder. La Figura 35 muestra la carga que recibi la consola de seguridad antes de dejar de funcionar.
(a) 2000 Traps
(b) 3000 Traps Figura 35. Grficas del envo de un gran nmero de Traps a la consola
6.3 RESULTADOS DE LAS PRUEBAS
Como se puede observar, la utilizacin de CPU de los agentes es considerablemente baja, lo cual no causa ninguna interferencia con el desempeo normal de la mquina, ya que no consume recursos significativos.
95 Por otro lado, la carga adicional generada sobre la red debido a la utilizacin de los agentes y de la consola de seguridad es baja. Cada agente pone aproximadamente 190 bytes en la red, en ausencia de un evento de seguridad, cada minuto para notificar que est vivo. Con solo los adaptadores y la consola de seguridad en ejecucin se genera una utilizacin de menos de 0.001%. Que comparado con una herramienta de gestin comercial, que tiene una utilizacin de 0.0006%, es muy similar, lo que nos indica que la utilizacin de la red de la arquitectura desarrollada no es alta.
La carga adicional generada durante un ataque en la red debido a la arquitectura es de aproximadamente un 10% debido a la notificacin de eventos, carga que depende del tipo de ataque realizado y del nmero de mquinas atacadas. Comportamiento esperado durante un ataque.
La ltima prueba realizada permiti determinar el mximo nmero de Traps que la consola de seguridad es capaz de recibir hasta dejar de funcionar. Segn los resultados, es capaz de soportar hasta 2500 Traps aproximadamente recibidos en un periodo de 90 segundos. Un adaptador en el peor caso es capaz de generar hasta 25 mensajes en un segundo, por esta razn se puede decir que la consola soporta hasta 100 adaptadores aproximadamente. Para mejorar estos resultados puede ser necesaria la utilizacin de un balanceador de carga y de un procesamiento distribuido de la informacin que requiere la consola. Esto no quiere decir que se vayan a tener varias consolas, por el contrario se va a tener una sola y el procesamiento de la informacin recibida se va a hacer en forma distribuida. Permitiendo que de esta manera la consola de seguridad consolide toda esta informacin. Recordemos que este anlisis es para el peor caso y se espera que solo suceda en condiciones extremas de ataques similares a DDoS, sin embargo no se podran procesar ms de 2500 Traps.
En las pruebas realizadas se ve la importancia de utilizar switches con contraposicin a los concentradores. La caracterstica principal de los switches es la de separar las mquinas o subredes en dominios de colisin. La idea de los dominios de colisin es separar el trfico entre cada uno de ellos. Es decir que en un dominio de colisin no se va a ver ningn trfico proveniente de otros dominios, disminuyendo la cantidad de trfico que va a estar fluyendo hacia otras mquinas o subredes. Caso que se ve perfectamente ilustrado en las Figuras 31 (a) y 33 (b) donde no se ve el trfico que se genera en los otros dominios y es por esto que no se pudo medir y fue necesario la utilizacin de un concentrador. De aqu surge la importancia de utilizar los switches antes de los concentradores. 96
7 CONCLUSIONES
El modelo de seguridad propuesto puede ser utilizado sin importar el costo de las herramientas de gestin de red (ya que soporta cualquier herramienta para la integracin con la consola de seguridad), que soportan SNMP o de las herramientas de seguridad, que lo verdaderamente importante es que utilicen logs legibles para poder ser interpretados por los adaptadores.
La unificacin de la gestin de red y de seguridad es posible mediante la utilizacin del protocolo de aplicacin SNMP, que, mediante la versin 3 se garantiza confidencialidad, autenticacin, encripcin e integridad en las notificaciones que hagan los agentes de seguridad. La Figura 36 muestra la respuesta de un mensaje SNMPv3 de tipo Get. Como se puede observar, todos los campos correspondientes al OID, valor y otros campos adicionales, se encuentran encriptados lo que garantiza la confidencialidad de las notificaciones que envan los agentes.
Bajo este hecho se logra consolidar un modelo que permite plantear la integracin de la gestin de red y de la seguridad de la red de una manera muy segura y que va a permitir facilitar la administracin de los recursos de red, en ambos niveles, sean elementos de gestin o de seguridad.
Los patrones de ataques identifican que un atacante normalmente accede una serie de mquinas hasta llegar a la vctima, en donde puede tratar de violentar el sistema mediante la explotacin de alguna vulnerabilidad del sistema operativo o de alguna aplicacin que se est ejecutando en el equipo. En este caso es de suma importancia poder detectar de una manera centralizada el patrn que est siguiendo un atacante en nuestra red para ganar acceso a un equipo. Esto se puede realizar de una manera muy simple mirando los logs de cada una de las herramientas de seguridad y/o sistemas operativos de las mquinas o elementos de red utilizados, procedimiento arduo y que consume mucho tiempo del administrador de la red, tiempo que podra ser utilizado en otras actividades. Mediante la utilizacin de un modelo de seguridad como el propuesto, es posible hacer que el proceso de consolidacin y auditoria de logs sea mucho ms sencillo y a tiempo, ya que estamos centralizando en la consola de seguridad todas las notificaciones que se reciben de los adaptadores, o sea, de las herramientas que estamos monitoreando. Disminuyendo drsticamente el tiempo de respuesta ante un incidente distribuido en toda la red monitoreada.
Adicionalmente se provee la utilizacin de procedimientos en los incidentes de seguridad y eventos que permiten detallar exactamente lo sucedido y la accin tomada para su solucin. Se permite guardar un histrico de los hechos que han acontecido en la red, mediante los incidentes de cada una de las mquinas.
97 El uso de los incidentes y eventos le da al modelo una riqueza mayor. A partir de la secuencia de eventos se pueden construir herramientas que analicen esos datos y detecten en ellos nuevos patrones de ataques y hasta nuevas firmas que podran llegar a servirle a un IDS. Los incidentes y eventos le trae a la empresa un valor agregado que le permite hacerle un seguimiento a los eventos y ver que fue lo que pas, facilitando procesos de auditoras e inclusive procesos de anlisis forense. Adicionalmente, los procedimientos para la solucin de los eventos se pueden utilizar para la creacin de documentos que pueden servirle a la empresa como capacitacin, entrenamiento o documentacin a los nuevos empleados.
Se puede minimizar el tiempo de respuesta frente a un nuevo incidente, ya que se cuenta con una base de datos de incidentes anteriores que pueden confrontarse para llegar a la solucin del nuevo incidente.
Para que este modelo sea ms efectivo los proveedores de las herramientas de seguridad deben poner en los logs la mayor cantidad de informacin de un evento para que su aporte sea an ms y permita notificar ms informacin relevante de cada hecho. Con el fin de alcanzar este objetivo, es importante tender a una estandarizacin de los logs, de tal forma que todos los desarrolladores de herramientas de seguridad tiendan a utilizar este estndar y as facilitar la integracin de las herramientas de seguridad. Tambin deben proveer en el log un campo de procesado para poder identificar los registros en el log que fueron procesados por el agente y cuales no, para que se pueda garantizar que no se pierda ningn registro o ninguna notificacin de un evento importante.
Es bien importante que los desarrolladores de las herramientas de seguridad incluyan otros medios de notificacin como por ejemplo va correo, mandando un mensaje a un celular o una PDA, etc. adicionales a las alertas generadas en el entorno de ella misma o inclusive al log mismo, para notificar cualquier evento de seguridad detectado. Se recomienda adicionar a la aplicacin desarrollada un agente SNMP que genere alertas va este protocolo para que de esta forma se pueda integrar con mayor facilidad la gestin de red y de seguridad, seguramente, sin la necesidad de una consola de seguridad. Para lograr esto es necesario guiarse por algn estndar de manera que junto con los otros desarrolladores se cierre con mayor facilidad la brecha entre la gestin de red y seguridad. 98
Figura 36. Estructura de un mensaje SNMPv3 99
8 CONTINUIDAD DEL PROYECTO
8.1 POSIBLES TRABAJOS FUTUROS
1. Plantear un estndar para que la generacin de logs se aplique a las herramientas, mediante la utilizacin de estndares como el de Syslog. Una idea puede ser la de utilizar el formato propuesto por Syslog y definir los campos importantes que pueden ir en el mensaje. Es importante mencionar los separadores de campos y los identificadores de campos, que permiten identificar el campo y su valor.
2. Plantear y crear nuestra arquitectura como una librera a incluir dentro de otro desarrollo para que nuestra arquitectura sirva de plataforma para proyectos futuros y as puedan utilizarla independiente de nuestra implementacin. De esta forma nuestra arquitectura puede ser una capa ms en otra arquitectura.
3. Mediante la integracin de los logs, poder hacerle un seguimiento cronolgico a un atacante que accede a una serie de mquinas hasta ingresar a su objetivo y determinar su patrn de ataque.
4. Poner un tipo de inteligencia en los agentes de seguridad para que puedan tomar decisiones sobre lo que notifican y lo que no es necesario notificar de los logs de cada una de las herramientas de seguridad. De acuerdo a si es trfico normal en la red o si es un rastro o una firma de un ataque.
5. A partir de los datos almacenados en la base de datos, se puede construir una herramienta que analice estos datos y detecte patrones de ataques. Una herramienta que de alguna manera analice los incidentes de seguridad almacenados y sepa detectar lo que quieren decir. Esto debe ser un anlisis con base en las herramientas de seguridad y debe ser capaz de tomar decisiones sobre lo que analiza.
6. Implementar un mtodo de filtrado de mensajes en la consola de seguridad para evitar que se guarden en los incidentes mensajes de tipos de trficos similares a los ya existentes, para evitar que se vean eventos iguales y que la base de datos se sature de informacin duplicada, pero que quede registrado que ha habido eventos subsiguientes. Por ejemplo bajo un ataque DoS.
7. Crear una herramienta que haga el anlisis de datos para determinar estadsticas de ataques. Como por ejemplo la mquina que ms ha sido 100 infectada con virus, los virus ms abundantes en la red, tipos de ataques que ha recibido una mquina, usuarios ms peligrosos, entre otras estadsticas.
8. Desarrollar un mecanismo para manejar la distribucin de la carga en varios puntos de procesamiento de la informacin que necesita la consola de seguridad. De esta forma se puede mejorar el rendimiento y el soporte de ms adaptadores del modelo propuesto. 101
BIBLIOGRAFIA
[1] La proactividad: clave de la gestin de red, disponible en: http://www.redestelecom.com/Actualidad/An%C3%A1lisis/Comunicaciones/Telefon %C3%ADa/20030731011
[2] Herrez, M Blanca. Introduccin a los sistemas de gestin de red, disponible en: http://www.info-ab.uclm.es/asignaturas/42621/transpas/dmrTema1x1.pdf
[3] M Blanca Herrez. Herramientas de gestin de red, disponible en: http://www.info-ab.uclm.es/asignaturas/42621/transpas/dmrTema6x2.pdf
[7] Terplan, Kornel. Communication Networks Management, Prentice Hall, New Jersey, 1992.
[8] Baiba Marti, Antoni. Gestin de red, Edicions OPC, Universita Politcnica de Catalunya, Espaa, 2001
[9] SNMP Tutorial Series: 5 Quick Steps to Understanding SNMP and its Role in Network Alarm Monitoring, tomado de http://www.dpstele.com/layers/l2/snmp_tutorials.html
[10] Stallings, William. SNMP, SNMPv2, SNMPv3, and RMON 1 and 2, 3 edicin, Addison Wesley, 1999.
[11] Perkins, David T. Understanding SNMP MIBs, 1993
[12] How to Eliminate Spyware to Protect Your Business, disponible en: http://ca.com/smb/howcani/eliminate_spyware.pdf
[13] Information Security 101: Security for Newbies, disponible en: http://www.sans.org/rr/whitepapers/basics/444.php
Various copyrights apply to this package, listed in various separate parts below. Please make sure that you read all the parts. Up until 2001, the project was based at UC Davis, and the first part covers all code written during this time. From 2001 onwards, the project has been based at SourceForge, and Networks Associates Technology, Inc hold the copyright on behalf of the wider Net-SNMP community, covering all derivative work done since then. An additional copyright section has been added as Part 3 below also under a BSD license for the work contributed by Cambridge Broadband Ltd. to the project since 2001. An additional copyright section has been added as Part 4 below also under a BSD license for the work contributed by Sun Microsystems, Inc. to the project since 2003.
Code has been contributed to this project by many people over the years it has been in development, and a full list of contributors can be found in the README file under the THANKS section.
---- Part 1: CMU/UCD copyright notice: (BSD like) -----
Copyright 1989, 1991, 1992 by Carnegie Mellon University
Derivative Work - 1996, 1998-2000 Copyright 1996, 1998-2000 The Regents of the University of California
All Rights Reserved
Permission to use, copy, modify and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of CMU and The Regents of the University of California not be used in advertising or publicity pertaining to distribution of the software without specific written permission.
CMU AND THE REGENTS OF THE UNIVERSITY OF CALIFORNIA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL CMU OR 104 THE REGENTS OF THE UNIVERSITY OF CALIFORNIA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Copyright (c) 2001-2003, Networks Associates Technology, Inc All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of the Networks Associates Technology, Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 105 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---- Part 3: Cambridge Broadband Ltd. copyright notice (BSD) -----
Portions of this code are copyright (c) 2001-2003, Cambridge Broadband Ltd. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* The name of Cambridge Broadband Ltd. may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---- Part 4: Sun Microsystems, Inc. copyright notice (BSD) -----
Copyright 2003 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved.
Use is subject to license terms below.
This distribution may include materials developed by third parties.
106 Sun, Sun Microsystems, the Sun logo and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of the Sun Microsystems, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---- Part 5: Sparta, Inc copyright notice (BSD) -----
Copyright (c) 2003-2004, Sparta, Inc All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
107 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Sparta, Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---- Part 6: Cisco/BUPTNIC copyright notice (BSD) -----
Copyright (c) 2004, Cisco, Inc and Information Network Center of Beijing University of Posts and Telecommunications. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 108
* Neither the name of Cisco, Inc, Beijing University of Posts and Telecommunications, nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
109
ANEXO 2: ESTRUCTURA DE UNA MIB
APPLICATION-MIB DEFINITIONS ::= BEGIN
IMPORTS DisplayString FROM RFC1213-MIB MODULE-IDENTITY, OBJECT-TYPE, enterprises FROM SNMPv2-SMI;
modSeg MODULE-IDENTITY LAST-UPDATED "0502031400Z" ORGANIZATION "Proyecto de Investigacin" CONTACT-INFO " Nicols Botero A.
Director: Enrique Ruiz.
Pontificia Universidad Javeriana Ingeniera de sistemas
e-mail: nbotero@javeriana.edu.co" DESCRIPTION "Modulo MIB que contendra las MIB's de las herramientas a monitorear." REVISION "0502031400Z" DESCRIPTION "Definicin de la estructura en el rbol." ::= { modSegSNMP 3 }
IMPORTS DisplayString FROM RFC1213-MIB MODULE-IDENTITY, OBJECT-TYPE, enterprises FROM SNMPv2-SMI agente FROM APPLICATION-MIB;
modSeg MODULE-IDENTITY LAST-UPDATED "0502031400Z" ORGANIZATION "Proyecto de Investigacin" CONTACT-INFO " Nicols Botero A.
Pontificia Universidad Javeriana Ingeniera de sistemas
e-mail: nbotero@javeriana.edu.co" DESCRIPTION "Modulo MIB para monitorear el IDS de la aplicacin Kerio." REVISION "0502031400Z" DESCRIPTION "Implementacin de los objetos que se van a monitorear de la aplicacin Kerio." ::= { enterprises 1 } 110
kerio OBJECT IDENTIFIER ::= { agente 1 }
kDate OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "La fecha del registro en el log de la aplicacin." ::= { kerio 1 }
kTime OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "La hora del registro en el log de la aplicacin." ::= { kerio 2 }
kHost OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "El nombre del equipo en donde se est ejecutando la aplicacin." ::= { kerio 3 }
kActionTaken OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "La accin que tom la aplicacin cuando sucedi el evento registrado en el log." ::= { kerio 4 }
kRemoteAddress OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "Direccin remota desde donde se origin el evento registrado en el log." ::= { kerio 5 }
kMessage OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "Mensaje que describe cual fue el evento ocurrido en la aplicacin." ::= { kerio 6 }
kDirection OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "Direccin que tuvo el evento registrado en el log. Puede ser originada hacia el equipo o desde el equipo." ::= { kerio 7 }
kClassification OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION 111 "La clasificacin que le asign la aplicacin al evento ocurrido. Es el nombre bajo el que se clasific el evento. Normalmente y segn el tipo de ataque, se puede clasificar en determinadas categoras." ::= { kerio 8 }
kPriority OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "La prioridad (importancia o relevancia) que le asign la palicacin al evento." ::= { kerio 9 }
kStateOfInterface OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DEFVAL { 1 } DESCRIPTION "El estado en el que se encuentra la interface que conecta el equipo a la red. Arriba (1) y abajo (0)." ::= { kerio 10 }
Referirse al Anexo 7 para la instalacin de los adaptadores y la ejecucin de la consola de seguridad.
1. CONSOLA DE SEGURIDAD
La consola de seguridad no requiere de ningn proceso de instalacin.
Para ejecutar la consola de seguridad solo basta con hacer dos cosas: primero editar el archivo ConfigurationParameters.properties que se encuentra en la raz de la carpeta <ruta>\consola en donde se debe colocar la direccin del servidor MySQL y del servidor SMTP; segundo ejecutar el archivo run.bat que sube la aplicacin.
Luego de ejecutar la aplicacin aparece la imagen de la Figura 1 que indica que se est cargando la aplicacin.
Figura 1
123 Una vez termina de cargarse la aplicacin aparece la siguiente pantalla en donde el usuario debe validarse frente al sistema e ingresar su usuario y contrasea como lo indica la Figura 2.
Figura 2
Una vez ingresado el usuario y la contrasea, se procede a darle clic en el botn login. Proceso que permite ingresar a la aplicacin y ver la pantalla principal del programa. Por defecto existe un usuario para ingresar a la aplicacin, cuyo nombre de usuario es modseg y su contrasea es modseg.
124
Figura 3
En la Figura 3 se muestra la pantalla principal de la consola de seguridad. En el rea (a) aparecen las mquinas que se estn monitoreando (las cuales se pueden arrastrar y colocar en el sitio deseado, para agruparlas segn la subred a la que pertenecen). Cuando se da clic a una de las mquinas se muestran los incidentes de seguridad activos, representados en el rea (b) y si se hace clic a uno de los incidentes activos nos despliega en el rea (c) los eventos asociados a ese incidente. Si se deja el cursor encima de la mquina se pude apreciar su direccin IP. Las mquinas aparecen en color azul si el adaptador de esa mquina est en ejecucin y enviando mensajes correctamente. Si por algn motivo la consola de seguridad deja de recibir mensajes de ese adaptador la aplicacin cambia la mquina a color blanco indicando que el adaptador no est reportando mensajes a la consola de seguridad. Cuando el adaptador de una mquina est detectando incidentes de seguridad y se encuentra enviando los Traps a la consola de seguridad, se va a observar que la mquina generando las notificaciones intermitir entre rojo y azul. Una mquina que ha tenido sucesos de seguridad aparece en color naranja en la consola y una vez se hace clic en esa mquina cambia a color azul, proceso que indica que se han analizado los eventos, ya que ha habido nuevos eventos que se han recibido. En la Figura 4 (a) rea de mquinas (b) rea de incidentes de seguridad (c) rea de eventos 125 aparecen dos mquinas siendo monitoreadas y una de ellas tiene un incidente abierto con un evento asociado.
Figura 4
Si se desean ver los detalles de uno de los eventos debemos hacer clic en la columna que dice datos del evento y se despliegan los datos como se muestra en la Figura 5.
126
Figura 5
La Figura 5, permite observar los datos especficos de un evento. Se puede ver el programa que lo origin, la accin tomada, entre otros campos adicionales. Se puede navegar entre los otros eventos de ese incidente mediante los botones siguiente y atrs o cerrar la ventana con su respectivo botn.
En la lista de incidentes de seguridad y en la de eventos es posible cambiar los siguientes campos: fecha de cierre, procedimiento y estado. El campo estado sirve para indicar el estado en el que se encuentra el evento o incidente, que puede ser activo, cerrado o descartado (el primero indica que est abierto y el segundo que ha sido solucionado). El ltimo estado sirve para informar que el administrador luego de haber analizado el incidente o el evento determin que puede ser descartado ya que no corresponde a un incidente de seguridad. Cuando el estado se pone en cerrado se recomienda llenar la fecha de cierre y el procedimiento asociado a la solucin de dicho evento o incidente.
Datos del evento Navegar entre eventos 127 En la barra de men aparecen tres categoras que corresponden a archivo, insertar y ayuda. En la barra de men archivo podemos apreciar las opciones que se muestran en la Figura 6.
Figura 6
La primera permite editar los parmetros para enviar y recibir Traps v3.
Figura 7
En la Figura 7 se pueden editar los parmetros necesarios para recibir Traps y se puede editar el usuario, la clave MD5 y DES a utilizar y el puerto en el cual se van a escuchar los Traps que provienen de los adaptadores. En la Figura 8 se muestran los parmetros de los Traps que se van a enviar a una consola de gestin. Estos son el usuario, las claves MD5 y DES, la direccin IP de la mquina que tiene la consola de gestin y el puerto por el cual va a escuchar esa consola los Traps enviados por la consola de seguridad. Para cambiar los valores de cada uno de los Traps basta con modificar los campos necesarios y darle clic en ingresar.
128
Figura 8
La siguiente opcin en el men nos permite administrar los usuarios que van a acceder a la aplicacin como se muestra en la Figura 9.
129
Figura 9
Para adicionar un usuario basta con llenar sus datos: nombre, apellido, login, contrasea, el rol (que puede ser un usuario o administrador), el cargo, la direccin de correo y por ltimo el nivel que ocupa en la empresa (donde el nivel 1 corresponde al nivel ms bajo que puede ocupar el empleado). El rol de Usuario est destinado nicamente a los usuarios que van a utilizar el programa va Web, mientras que el Administrador es el usuario que va a ingresar a esta aplicacin. Para ingresar el usuario basta con hacer clic en ingresar.
Tambin se puede editar la clave de un usuario ya creado como se muestra en la Figura 10, donde se presenta la opcin de borrar el usuario seleccionado haciendo clic en el botn borrar o cambiar la clave de un usuario ingresando la nueva clave y haciendo clic en ingresar.
130
Figura 10
En el men insertar, como se muestra en la Figura 11, se presenta la opcin de insertar un texto en el rea de mquinas para identificar y agrupar las mquinas grficamente por subredes u otro criterio deseado.
Figura 11
131
Figura 12
La Figura 12 muestra la pantalla para ingresar la etiqueta. Para ingresarla basta con escribir el texto deseado y hacer clic en insertar, luego se debe hacer un clic en el rea de las mquinas para que aparezca la etiqueta. Esta etiqueta se puede arrastrar y poner en el sitio deseado.
De esta forma se pueden agrupar las mquinas como se muestra en la Figura 13. Adicionalmente si se hace clic derecho sobre una etiqueta aparece la opcin de borrar la etiqueta deseada.
Figura 13
El men ayuda, como se ve en la Figura 14, permite obtener informacin de contacto de la aplicacin como se muestra en la Figura 15.
Figura 14
132
Figura 15
2. PGINA WEB
Para aquellos usuarios que desean conocer informacin acerca de los incidentes de seguridad y/o eventos se les da la opcin de ingresar a una pgina Web donde pueden consultar dicha informacin. Pueden ser los usuarios a los que les llega una notificacin de la consola de seguridad, como un correo, informando que se ha vencido el plazo de solucionar un incidente. La primera pgina se encarga de validar al usuario frente al sistema como se observa en la Figura 16. El usuario solo va a ver informacin de los incidentes y eventos y no puede modificar ningn dato mostrado, labor delegada a los administradores de red.
133
Figura 16
Se deben llenar el login del usuario y su contrasea y luego hacer clic en el botn login para validar el usuario. Por defecto hay un usuario con login pruusu y contrasea 1234567. Una vez validado se presentan siguientes opciones: consultar todos los incidentes abiertos o cerrados, consultar incidentes por rango de fecha y obtener los detalles de un incidente como lo indica la Figura 17.
134
Figura 17
Al hacer clic en el botn consultar todos los incidentes abiertos y cerrados aparece una lista de los incidentes abiertos y cerrados de todas las mquinas almacenadas en la base de datos (ver Figura 18).
135
Figura 18
En la opcin de consultar incidentes por rango de fecha, se pueden ver los incidentes en un rango de fecha seleccionando la fecha de inicio y de fin, opcin que se permite haciendo clic en el calendario al lado derecho de cada fecha y seleccionando la fecha deseada segn la Figura 19. Luego se hace clic en consultar para que aparezca una lista de incidentes de seguridad en ese rango de fechas como se muestra en la Figura 20. 136
Figura 19
Seleccin de fecha 137
Figura 20
Por ltimo, en la opcin de seleccionar los detalles de un incidente de seguridad se pueden consultar todos los eventos que corresponden a ese incidente, ingresando el ID del incidente (ver Figura 21). Para consultar los detalles se da clic en consultar y a continuacin se despliegan los detalles del incidente indicado como se observa en la Figura 22.
138
Figura 21
139
Figura 22
140
ANEXO 5: INSTALACIN DEL PROGRAMA NET-SNMP
Para instalar el programa en Windows (Win32): Antes de instalar el programa se debe tener Active Perl instalado para el funcionamiento de todos los scripts de Perl que necesita el programa. Descargar el ejecutable de la pgina ejecutarlo y seguir las instrucciones que se indican all. El programa por default se instala en c:\usr y ah se encuentran los archivos relacionados con el programa. En la carpeta bin, se encuentran los ejecutables del programa. El agente que proveen ellos, se puede registrar como un servicio (ver los archivos registeragent.bat y unregisteragent.bat para registrar y quitar el servicio). Es recomendable correr el siguiente comando para generar el archivo de configuracin para el agente: snmpconf -g basic_setup, el cual gua para la configuracin del agente. El archivo queda en la carpeta c:\usr y se debe copiar a la carpeta c:\usr\etc\snmp, luego se debe reiniciar el servicio para que lea el archivo. Este archivo (snmpd.conf), permite configurar el comportamiento del agente. Se puede definir comunidades de escritura y/o lectura, definir usuarios para SNMPv3, entre muchas otras opciones. Aqu vamos a ver las ms bsicas (se asume que el lector ya ha ejecutado el comando mencionado anteriormente y el archivo ya se encuentra en su ubicacin).
Configurar una comunidad: el archivo debe incluir al menos una de las dos lneas siguientes para crear una comunidad y poder hacer operaciones segn el tipo de comunidad definido:
rwcommunity <comunidad> rocommunity <comunidad>
donde <comunidad> es el nombre de la comunidad que queremos definir para un acceso de lectura y escritura (rwcommunity) o de solo lectura (rocommunity). De esta forma el agente puede responder a un comando generado con SNMPv1 y SNMPv2, que utilizan el concepto de comunidad. Veamos un ejemplo:
Definimos una comunidad de lectura y escritura, llamada privada: rwcommunity privada Que nos permite consultar y modificar valores de los objetos monitoreados. Luego, ya podramos hacer la siguiente consulta al agente (utilizando el programa snmpget): snmpget -v 2c -c privada localhost system.sysName.0 Que nos retorna el nombre del sistema que estamos solicitando. En este caso nos retorna el nombre del sistema localhost. Adicionalmente, aqu estamos utilizando SNMPv2 (especificado por el comando -v 2c); la comunidad privada (especificada por el comando -c privada) y estamos solicitando la variable sysName que pertenece al grupo system (especificado por el 141 parmetro system.sysName.0; recordemos que el .0 se refiere a una instancia en particular).
Para que funcione con soporte a encripcin, es necesario indicarle al agente que use encripcin. Se debe instalar una distribucin de OpenSSL en la ruta C:\OpenSSL. Se debe copiar la carpeta openssl (C:\OpenSSL\include) a la carpeta de VC++ (C:\Program Files\Microsoft Visual Studio\VC98\include). Tambin se debe copiar la librera libeay32.lib (C:\OpenSSL\lib\VC) a la carpeta de VC++ (C:\Program Files\Microsoft Visual Studio\VC98\lib).
Luego se debe editar el archivo de encabezado net-snmp-config.h (<instalacin del cdigo>\win32\net-snmp) y aadir la siguiente lnea para indicarle que use OpenSSL: #define USE_OPENSSL 1. A continuacin es necesario abrir VC++ y abrir el proyecto win32.dsw. Seleccionar en la barra de men Proyecto-> Configuracin. Se deben seleccionar todos los proyectos excepto libsnmp, libagent, libhelpers, libnetsnmptrapd y netsnmpmibs. Luego en la opcin de Enlace, se debe adicionar la librera libeay32.lib en la parte que dice objetos/libreras mdulos. Esto se debe hacer tanto para las versiones Debug como Release.
A partir de aqu lo nico que queda por hacer es compilar de nuevo todas las aplicaciones. Se debe hacer de la siguiente manera: abrir el proyecto win32.dsw, en la opcin del men Build seleccionar Batch Build. En la lista que aparece, seleccionar si se desea la versin release y/o debug de los proyectos. Por ltimo hay que darle ReBuild All. Los archivos ejecutables quedan en la carpeta Release o Debug, dependiendo de lo que se haya seleccionado en la lista (<carpeta de cdigo fuente>\win32\bin) los cuales deben ser copiados a la carpeta C:\usr.
Por otro lado, para utilizar SNMPv3 se debe incluir en el archivo un usuario del cual se quiere clonar los otros usuarios, como se encuentra especificado en el RFC. En el archivo deben encontrarse las siguientes lneas (los comentarios se hacen con el carcter #):
# se crea el usuario initial para lectura y escritura rwuser initial # ponemos el nuevo usuario que vamos a crear para lectura y escritura rwuser nuevo_usuario # damos una configuracin inicial al usuario initial que va a utilizar MD5 y DES createUser initial MD5 clave_usuario DES
As se crea el usuario initial y se define un nuevo_usuario(an no creado totalmente), pero el cual debemos terminar de configurar de la siguiente manera:
142 snmpusm -v 3 -u initial -n "" -l authPriv -a MD5 -A clave_usuario x DES -X clave_usuario -l authPriv localhost create nuevo_usuario initial
Se utiliza el programa snmpusm. Se especifica que se va a trabajar con el protocolo SNMPv3 (usando -v 3); se va a usar el usuario initial como la base de clonacin (el parmetro -u initial); el contexto default (usando el parmetro -n ); el nivel de seguridad deseado, en este caso, autenticacin y privacidad (utilizando el parmetro -l authPriv); se va a utilizar como algoritmo de autenticacin MD5 (usando -a MD5) y se define la clave asociada (usando -A clave_usuario); se especifica el uso del algoritmo DES para encripcin (con el parmetro -x DES) y su clave (usando -X clave_usuario); en el agente localhost y se va a crear el usuario nuevo_usuario clonado del usuario initial.
Adicional a esto, se debe cambiar la clave, ya que el nuevo usuario tiene las claves del usuario base. Esto se hace de la siguiente manera:
snmpusm -v 3 -u nuevo_usuario -n "" -l authPriv -a MD5 -A clave_usuario -x DES -X clave_usuario localhost passwd clave_usuario nuevaClave
Esta vez, se utiliza el parmetro passwd para cambiar la clave y se debe digitar la clave anterior y luego la nueva clave. Ahora se puede hacer la consulta de un valor de un objeto, de esta manera:
snmpget -v 3 -u nbatest -n "" -l authPriv -a MD5 -A nbaprueba -x DES -X nbaprueba localhost system.sysName.0
Especificando la versin, el usuario, los protocolos y las claves y el nombre de la variable que se va a utilizar.
Para instalarlo en Linux desde el cdigo fuente, se debe hacer lo siguiente:
Ejecutar los siguientes comandos: ./ configure --with-openssl Si se desea obtener informacin sobre los parmetros que recibe escribir: ./configure --help. make make install (esto se debe hacer como root) configurar el agente con el archivo snmpd.conf
El programa queda instalado en la ruta /usr/local.
Para incluir las MIBs desarrolladas en el agente: luego de haber definido el rbol y la ubicacin de los nodos y hojas en el rbol, se procede a incluir las MIBs dentro de 143 las MIBs del programa a utilizar (Net-SNMP). Es necesario copiar los archivos a la carpeta C:\usr\share\snmp\mibs, junto con los otros archivos. Luego se debe reiniciar el agente (snmpd) para que lea las MIBs. Se debe probar que el agente reconozca las MIBs de la siguiente manera utilizando el comando snmptranslate y los parmetros m (para decirle que utilice todas las MIBs), -Tp (para que imprima en forma de rbol), -IR (para hacer un acceso aleatorio al rbol) y la parte del rbol a consultar, en este caso ipTables:
Y tambin se puede realizar la siguiente consulta con el mismo comando y los parmetros Td (imprimir todos los detalles).
Luego se debe utilizar la herramienta mib2c, para compilar las MIBs y para que as nos genere una plantilla en cdigo C. Genera un archivo .c y uno .h. Esta plantilla se debe modificar para definir de donde vienen los datos y que hacer con esos datos. De 144 la siguiente manera con los parmetros c (para indicar la plantilla a utilizar) y la MIB a compilar: para ver un ejemplo del archivo que genera ver el Anexo 3 (ya muestra las modificaciones que se le deben hacer al archivo)
Paso siguiente, hay que modificar el archivo mib_module_includes.h (<directorio cdigo fuente>\win32) y aadirle una lnea para que incluya los mdulos creados: #include "mibgroup/yy.h" (donde yy es en nombre del .h que gener mib2c) y modificar el archivo mib_module_inits.h (<directorio cdigo fuente>\win32) y aadirle una lnea para que inicialize el mdulo: if (should_init("yy")) init_yy(); (donde yy es en nombre del .h que gener mib2c)
Despus se deben copiar estos dos archivos a la carpeta donde se descomprimi el cdigo fuente de la aplicacin. Por lo general se debe copiare a: <carpeta de cdigo fuente>\agent\mibgroup. Luego abrir VC++ y abrir el proyecto win32.dsw (en la carpeta <carpeta de cdigo fuente>\win32). En la barra de la mano izquierda sale una lista de proyectos y es necesario aadir los dos archivos al proyecto netsnmpmibs. Luego se deben compilar los proyectos libagent, libhelpers y libsnmp para luego poder compilar el agente con los nuevos mdulos (compilar snmpd). 145
ANEXO 6: MANUAL DE INSTALACIN
1. Adaptadores
En Windows se debe instalar el programa Net-SNMP y reemplazar la carpeta C:\usr por la carpeta <cd>\Windows\Adaptador\usr que se encuentra en el CD, para reemplazar el agente normal por el adaptador desarrollado y poner los archivos de configuracin necesarios. Adicionalmente toca instalar OpenSSL para poder utilizar las libreras en el proceso de encripcin. Luego se debe instalar Kerio para que el adaptador monitoree ese programa.
En Linux es necesario descomprimir los archivos fuente del programa Net-SNMP, ubicado en la ruta <cd>/Linux/Net-SNMP/net-snmp-5.2.1.tar.gz, y copiar la carpeta <cd>/Linux/modsegsnmp a <ruta de archivo descomprimido>/agent/mibgroup luego proceder con la instalacin normal ya descrita en el Anexo 6. Luego se deben copiar los archivos de configuracin en la ruta <cd>/Linux/conf a la ruta /usr/local/share/snmp y las MIBs en la ruta <cd>/Linux/mibs a la ruta /usr/local/share/snmp/mibs. Es necesario verificar que se tenga instalado IpTables en el equipo.
2. Consola de seguridad
Debe estar instalado MySQL en un equipo y se debe correr el script de la base de datos ubicado en la ruta <cd>\Base de datos\backup_all.sql. Para este proceso es necesario ejecutar el programa mysql, ubicado en <ruta de instalacin de Mysql>\bin\mysql, de esta forma: mysql -u root -p < backup_all.sql. A continuacin se pide la contrasea del usuario root (indicada al instalar MySQL).
Instalar el JDK de Java y luego copiar la carpeta de la consola a la carpeta deseada en el computador. Modificar los parmetros del archivo de configuracin ConfigurationParameters.properties ubicado en la ruta <ruta carpeta consola>\Consola| para que quede con la direccin IP del servidor MySQL y SMTP.
Para habilitar el ingreso va Web es necesario instalar Tomcat en un equipo y copiar el archivo webUser.war ubicado en la carpeta <cd>\Consola\Webuser\Deploy\ a la carpeta <ruta donde est Tomcat>/webapps. Posteriormente se debe editar el archivo de configuracin que se encuentra adentro del archivo webUser.war para poner la direccin IP del servidor de MySQL. Para hacer esto es necesario abrir el archivo con Winzip (seleccionar el archivo, darle clic derecho y seleccionar la opcin abrir con y en la lista que aparece seleccionar Winzip). Luego aparece la pantalla del programa con la lista de los archivos contenidos en webUser.war. Editar el archivo ConfigurationParameters.properties. 146
ANEXO 7: CONTENIDO DEL CD
La Figura 23 muestra la estructura de rbol del CD con sus respectivas carpetas y archivos. En la derecha se muestra una descripcin de que es cada archivo o carpeta.
Figura 23 147
ANEXO 8: DIAGRAMA DE CLASES GENERAL
La figura 24 muestra el diagrama de clases que permite el acceso a la base de datos. La clase DBAccess se encarga de acceder a la base de datos. Utiliza un patrn singleton ya que solo puede haber una instancia de acceso a la base de datos. Las clases ConfigurationParametersManager y PropertiesReader se encargan de leer el archivo de configuracin ConfigurationParameters.properties.
El diagrama de clases para la gestin y administracin de los incidentes de seguridad se muestra en la Figura 25. La clase ControlCasos se encarga del proceso de creacin, gestin y administracin de los incidentes y eventos utilizados por la consola de seguridad. Se apoya en la clase SendMail para mandar las notificaciones va correo.
En la Figura 26 se observa el diagrama de la parte grfica de la consola de seguridad. Al iniciar la consola se ejecuta la clase SplashScreen que se encarga de iniciar el programa. Luego se ejecuta la clase Login que se encarga de validar al usuario. La clase que administra todo el funcionamiento de la parte grfica de la consola es consoleTest.