Facultad de Ingeniería Eléctrica Departamento de Electrónica y Telecomunicaciones TRABAJO DE DIPLOMA Aplicación de un sistema de detección de anomalía basado en el modelo de allanamiento exponencial. Autor: Raulier Yedian Morell Kin Tutor: Dr. Vitalio Alfonso Reguera Santa Clara 2008 “Año 50 de la Revolución” Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Electrónica y Telecomunicaciones TRABAJO DE DIPLOMA Aplicación de un sistema de detección de anomalía basado en modelo de allanamiento exponencial. Autor: Raulier Yedian Morell Kin E-mail: [email protected] Tutor: Dr. Vitalio Alfonso Reguera Profesor, Dpto de Electrónica y Telecomunicaciones E-mail: [email protected] Santa Clara 2008 "Año 50 de la Revolución" Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios de la especialidad de Ingeniería en Telecomunicaciones y Electrónica, autorizando a que el mismo sea utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos, ni publicados sin autorización de la Universidad. Firma del Autor Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada. Firma del Tutor Firma del Jefe de Departamento donde se defiende el trabajo Firma del Responsable de Información Científico-Técnica i PENSAMIENTO El deseo de hacer realidad un sueño es lo que torna la vida interesante. Pablo Coelho ii DEDICATORIA A mis padres por sus sacrificios y confianza. A mis hermanos por crecer a mi lado. A mi novia y ahijado, como inspiración en la vida. iii AGRADECIMIENTOS A Dios por haberme dado la posibilidad de llegar hasta aquí. A mi tutor Vitalio Alfonso Reguera por su tiempo. A mis padrinos casi padres J. Carlos y Miriam. A mis suegros Rebeca y Nilo. A los viejos, Pedro, Yany y Dayneris por estar conmigo en aquellos momentos difíciles. A Ochoa, Carolina, Dariel, Elaine y Giselle. A mis ex compañeros de cuarto Rubén, Halder y Erisdel. A mis compañeros de aula. Y a todos aquellos que de una forma u otra aportaron su granito de arena, sencillamente decir, Muchas Gracias. iv TAREA TÉCNICA 1. Buscar información relacionada con la medición de tráfico y la detección de anomalías. 2. Estudiar la documentación de la herramienta RRDtool y manuales del lenguaje de programación Perl Script. 3. Instalar y configurar un sistema piloto de monitoreo de tráfico utilizando la herramienta RRDtool, que nos permita almacenar datos seleccionadas a partir de las MIB de los router. 4. Seleccionar los algoritmos a utilizar para la detección de anomalías. 5. Programar los algoritmos para la detección de anomalías de manera que funcionen de forma integrada con la aplicaciones de monitoreo de tráfico. 6. Validar el desempeño de la propuesta. Firma del Autor Firma del Tutor v RESUMEN El presente trabajo contiene una aplicación del modelo de allanamiento exponencial, con la ayuda del lenguaje de programación Perl Script, para crear un sistema que permite detectar posibles anomalías en el tráfico de redes IP. Los valores de tráfico, se capturan a través del software MRTG en combinación con la herramienta RRDtool y posteriormente son procesados estadísticamente para detectar variaciones abruptas en el volumen de tráfico. Los resultados son mostrados en forma de gráficas que pueden ser acezadas mediante interfaces Web. Los experimentos realizados demuestran que seleccionando adecuadamente los parámetros de configuración el sistema funciona satisfactoriamente. vi TABLA DE CONTENIDOS PENSAMIENTO .....................................................................................................................i DEDICATORIA .................................................................................................................... ii AGRADECIMIENTOS ........................................................................................................ iii TAREA TÉCNICA................................................................................................................iv RESUMEN .............................................................................................................................v TABLA DE CONTENIDOS .................................................................................................vi INTRODUCCIÓN ..................................................................................................................1 Capítulo 1. La Detección de Anomalía..................................................................................4 1.1 Surgimiento y aproximaciones más empleadas en la detección de anomalías .......4 1.2 Premisa de la detección de anomalía. .....................................................................5 1.2.1 Métodos de detección de anomalías basados en estadísticas..........................5 1.2.1.1 Técnicas basadas en aprendizaje automático.................................................7 1.2.1.2 Análisis secuencial basado en llamada al sistema. ........................................8 1.2.1.3 Método de la ventana deslizante....................................................................8 1.2.1.4 Redes Bayesianas...........................................................................................9 1.2.1.5 Análisis de los componentes principales. ....................................................10 1.2.1.6 Modelos de Markov. ....................................................................................11 1.2.2 Método de detección de anomalía basados en especificaciones...................11 vii 1.2.2.1 Detección de anomalías basado en minería de datos. ..................................12 TU UT 1.2.2.2 Detección de intrusos basado en clasificación. ............................................12 TU UT 1.2.2.3 Agrupamiento y detección de objetos aislados. ...........................................14 TU UT 1.2.2.4 Descubrimiento de reglas de asociación. .....................................................15 TU 1.3 UT Anomalías más comunes. .....................................................................................16 TU UT TU UT Capítulo 2. Software de medición de tráfico. .......................................................................17 TU UT 2.1 Software MRTG. ...................................................................................................17 TU UT TU UT 2.1.1 Desarrollo de MRTG. ...........................................................................................17 TU UT 2.2 Técnica Round Robind. .........................................................................................18 TU UT TU UT 2.2.1 TU Herramienta RRDtool. ..................................................................................18 UT UT 2.2.2 TU TU Proyectos venideros con la herramienta RRDtool. .......................................18 UT 2.3 TU UT Condiciones para instalar y configurar MRTG exitosamente. ..............................19 TU UT TU UT 2.3.1 TU Instalación del software MRTG. ...................................................................19 UT UT 2.3.2 TU TU Configuración del software MRTG. ..............................................................20 UT UT 2.3.3 TU TU MRTG como un demonio. ............................................................................21 UT 2.4 TU UT MRTG acoplado a RRDtool. ................................................................................22 TU UT TU 2.5 UT Descripción de algunas funciones de RRDtool. ...................................................23 TU UT TU 2.6 UT Modelo de allanamiento exponencial. ..................................................................23 TU UT TU UT Capítulo 3. Diseño del sistema y ajuste de las constantes. ...................................................25 TU UT 3.1 Lenguaje de programación seleccionado. .............................................................25 TU UT TU UT 3.1.1 TU Descripción del sistema. ...............................................................................25 UT UT 3.1.2 TU TU Descripción de las subrutinas. ......................................................................26 UT 3.2 TU UT Ajustes del sistema................................................................................................27 UT TU UT 3.2.1 TU TU UT Metodología para el ajuste de las constantes α y γ. ......................................27 TU UT viii 3.3 Resultados.............................................................................................................28 CONCLUSIONES Y RECOMENDACIONES ...................................................................32 Conclusiones.....................................................................................................................32 Recomendaciones .............................................................................................................32 REFERENCIAS BIBLIOGRÁFICAS .................................................................................33 ANEXOS ..............................................................................................................................38 Anexo I Valores de tráfico almacenados en una base de datos. ........................................38 Anexo II Pronóstico del sistema. ........................................................................................39 Anexo III Número total de anomalías detectadas por el sistema.........................................39 Anexo IV Diagrama en bloque del sistema. ........................................................................40 Anexo V Script realizado....................................................................................................41 GLOSARIO TÉCNICO........................................................................................................51 Introdución 1 INTRODUCCIÓN Tan necesaria resulta hoy día las Telecomunicaciones para el hombre, que históricamente grandes compañías, universidades e instituciones trabajan en lograr un objetivo común, no solo desarrollar los sistemas y medios de comunicaciones, sino hacerlos más seguros y fiables. Es por eso que en la década de los ’80 del siglo pasado, surgen los primeros vestigios por parte de los investigadores sobre la seguridad de las redes. Presentando su interés en el tema y con vista a que otros se interesen por la seguridad, James P. Anderson lanza sus primeros aportes, donde anuncia la detección de anomalía como un método valido para detectar intrusiones en los servicios informáticos. A partir de aquí, la seguridad logra gran simpatía entre los investigadores y son empleados grandes Modelos como el de Markov o técnicas como el Aprendizaje Automático (Machine Learnig) por solo nombrar algunos, que aplican las aproximaciones más comunes para la detección de anomalía. Muchas de estas técnicas, modelos y algoritmos son puestos en práctica en las redes de computadoras, gracias a los lenguajes de programación y a su evolución. Por esta razón muchos programadores interesados también en la temática, han hecho sus aportes creando softwares, que aunque no implementan en si un sistema de detección de anomalías, se usan como herramientas para la administración de las redes. Como una alternativa para mejorar la seguridad de su red TCP-IP, la Universidad Central “Marta Abreu” de Las Villas, emplea un software llamado MRTG, cuyo principal objetivo es mostrar gráficamente a los administradores el tráfico que es cursado a través de las interfaces de redes. A pesar de poseer el software una ventaja como esta, se le pueden Introdución 2 atribuir algunas deficiencias, no hace uso de un mecanismo que permita detectar anomalías, debido a esto las anomalías deben ser detectadas mediante la inspección visual y sus bases de datos necesitan del mantenimiento esporádico, por utilizar gran cantidad de memoria que incrementa con el pasar del tiempo. Como resultado de esta última deficiencia, el creador de MRTG, ha desarrollado una nueva herramienta que utiliza una técnica que permite mantener el mismo espacio de memoria en las bases de datos. A consecuencia de estas deficiencias, surgen las siguientes interrogantes científicas: ¿Cómo utilizar las bases de datos circulares que nos brinda el RRDtool, para poder implementar algoritmos de detección de anomalías a partir de los cuales se pueda automatizar el proceso de gestión de la red? ¿Qué pruebas son necesarias para validar los resultados de la implementación propuesta? Por consiguiente este trabajo se presenta con vista a mejorar la gestión de la red, posibilitando incrementar las prestaciones de la misma y su recuperación en los procesos que hacen uso de esta. Para dar cumplimiento a las tareas e interrogantes científicas, se trazan los siguientes objetivos: Objetivo general Elevar el desempeño de la red haciendo uso de novedosos algoritmos para la detección de anomalías. Objetivos específicos 1. Implementar algoritmos de detección de anomalías en combinación con el software MRTG y la herramienta RRDtool que permitan automatizar el proceso de gestión de red. 2. Montar un sistema de prueba y evaluar su desempeño generando de forma simulada diferentes alteraciones en el tráfico de la red. Introdución 3 La estructura del trabajo la conforman tres capítulos: Capítulo 1. Contiene el surgimiento y aproximaciones más empleadas para la detección de anomalía. También presenta el estado del arte de algunos modelos construidos por los investigadores para esta tarea. Capítulo 2. Aborda el acople de la herramienta RRDtool con el software MRTG y los pasos que se siguen para la instalación y configuración de este último. Además de mostrar el modelo seleccionado para detección de anomalías. Capítulo 3. El tercer y último capítulo, presenta una descripción del sistema realizado y los resultados obtenidos a partir del ajuste de las constantes. CAPĺTULO 1. La detección de anomalía 4 Capítulo 1. La Detección de Anomalía. En este capítulo se recogen las principales aproximaciones empleadas para la detección de anomalías y se describen algunos métodos, algoritmos y técnicas que hacen uso de estas. 1.1 Surgimiento y aproximaciones más empleadas en la detección de anomalías La detección de anomalía fue propuesta por James P. Anderson en 1980, como un método válido para detectar intrusiones en sistemas informáticos [1]. La idea es a priori muy interesante, estos modelos de detección conocen lo que es “normal” en redes o en máquinas a lo largo del tiempo, desarrollando y actualizando conjuntos de patrones contra los que comparar los eventos que se producen en los sistemas. Si uno de esos eventos (por ejemplo, una trama procedente de una máquina desconocida) se sale del conjunto de normalidad, automáticamente se cataloga como sospechosa. Existen dos grandes aproximaciones que se basan en la detección de anomalías [2]: o es el sistema el que es capaz de aprenderlo por sí mismo (basándose por ejemplo en el comportamiento de los usuarios, de sus procesos, del tráfico de la red etc.) o bien se le especifica al sistema dicho comportamiento mediante un conjunto de reglas. La primera de estas aproximaciones utiliza básicamente métodos estadísticos (medias, varianzas etc.), aunque también existen modelos en los que se aplican algoritmos de aprendizaje automático. La segunda aproximación consiste en especificar mediante un conjunto de reglas los perfiles de comportamiento habitual basándose en determinados parámetros de los sistemas (con la dificultad añadida de decidir cuáles de esos parámetros que con mayor precisión delimitan los comportamientos). CAPĺTULO 1. La detección de anomalía 5 1.2 Premisa de la detección de anomalía. La premisa central de la detección de anomalía, es una actividad intrusa que abarca un subconjunto de actividades anómalas. Si se considera a un intruso, como alguien que no tiene idea de los modelos de actividad del usuario legítimo, hay una probabilidad fuerte que la actividad del intruso se descubrirá como anómala. En el caso ideal, el conjunto de actividades anómalas será igual al conjunto de actividades intrusas. En tales casos, marcando todas las actividades como actividades intrusas resultan en falso no positivo y falso no negativo. Sin embargo, las actividades intrusas no siempre coinciden con actividades anómalas. Se sugieren cuatros grupos posibles, cada una con probabilidad diferente de cero [3]. • Intruso pero no anómalo: Estos son falso negativo, porque el sistema de descubrimiento de intrusión falsamente reporta la ausencia de intrusiones. • No intruso pero anómalos: Esto es un falso positivo, porque un sistema de detección de intruso falsamente reporta instrucciones. • No intruso y no anómalo: estos son verdaderos negativos, la actividad no es intrusa y no es reportada como intrusa. • Intruso y anómala: Estos son verdaderos positivos, la actividad es intrusa y es reportada como tal. Cuando se necesita minimizar los falsos negativos, se bajan los umbrales que definen una actividad anómala. Esto da como resultado varios falsos positivos y reducen la eficiencia del mecanismo automático para la detección de intrusos. Esto crea una sobrecarga para el administrador de seguridad, igualmente para el que debe investigar cada incidente y excluir eventuales falsos positivos. 1.2.1 Métodos de detección de anomalías basados en estadísticas. El detector observa las actividades de los elementos del sistema, activos - sujetos -, pasivos - objetos - o ambos, y genera para cada uno de ellos un perfil que define su comportamiento; dicho perfil es almacenado en el sistema, y se actualiza con determinada frecuencia envejeciendo la información más antigua y priorizando la más fresca. El CAPĺTULO 1. La detección de anomalía 6 comportamiento del usuario en un determinado momento se guarda temporalmente en otro perfil, denominado perfil actual (current profile), y a intervalos regulares se compara con el almacenado previamente en busca de desviaciones que puedan indicar una anomalía. En [4], se definen diferentes tipos de datos o medidas que pueden ser útiles en la elaboración de estos perfiles: Intensidad de la actividad: Reflejan la razón del progreso de la actividad en el sistema, para lo cual recogen datos a intervalos muy pequeños típicamente entre un minuto y una hora. Estas medidas detectan ráfagas de comportamiento (por ejemplo, una excesiva generación de peticiones de entrada/salida en un cierto intervalo) que en espacios de tiempo más amplios no podrían ser detectadas. Numéricas: Se trata de medidas de la actividad cuyo resultado se puede representar en forma de valor numérico, como el número de ficheros leídos por cierto usuario en una sesión o la cantidad de veces que ese usuario se ha equivocado al teclear su contraseña de acceso al sistema. Categóricas: Las medidas categóricas son aquellas cuyo resultado es una categoría individual, y miden la frecuencia relativa o la distribución de una actividad determinada con respecto a otras actividades o categorías; por ejemplo, cual es la relación entre la frecuencia de acceso a un determinado directorio del sistema en comparación con la de acceso a otro. Seguramente la palabra “categoría” no es la más apropiada (por lo menos, no la más clara), ya que bajo este término se pueden englobar tantos objetos (por ejemplo, ficheros) como eventos (por ejemplo, llamadas a la función crypt()) del sistema; esta T T definición genérica puede resultar más sencilla si distinguimos entre categorías globales e individuales: en castellano plano, podemos entender las categorías globales como acciones muy genéricas dentro de un entorno, mientras que las categorías individuales serían la particularización para un elemento determinado del sistema. Así, una categoría global puede ser la formada por el conjunto de accesos remotos a la máquina, mientras que una individual sería la formada por los accesos desde una determinada ubicación física. Distribución de registros de auditoría: Esta medida analiza la distribución de las actividades generadas en un pasado reciente basándose en los logs generados por las mismas; dicho análisis se realiza de forma ponderada, teniendo más peso las actividades CAPĺTULO 1. La detección de anomalía 7 más recientes, y es comparado con un perfil de actividades “habituales” previamente almacenado, de forma que permite detectar si en un pasado reciente se han generado eventos inusuales. Estos métodos estadísticos para la detección de anomalías poseen un gran número de ventajas. Estos sistemas como la mayoría de los sistemas de detección, no requieren un conocimiento previo de las banderas de seguridad y/o de los propios ataques. Como resultado, tales sistemas tienen la capacidad de detectar los ataques más recientes. En adición a esto, los métodos estadísticos pueden proveer notificaciones exactas de actividades maliciosas que típicamente ocurren durante períodos de tiempo prolongados que son buenos indicadores del inminente ataque de DoS. No obstante estos métodos estadísticos tienen ciertas desventajas, debido a que hacen un tanto trabajosa la determinación de un umbral que logre un balance entre las posibilidades de falsos positivos y falsos negativos. De hecho, la mayoría de estas técnicas estadísticas de detección de anomalías requieren la asunción de un proceso cuasi-estacionario, el cuál no puede ser asumido para la mayoría de los datos procesados. Uno de los primeros sistemas de detección de intrusos basado en la detección estadística de anomalías fue el denominado Haystack [5]. 1.2.1.1 Técnicas basadas en aprendizaje automático. Este aprendizaje de máquina puede ser definido como la habilidad de un programa y/o sistema para aprender y mejorar su funcionamiento en el desempeño de una tarea o un grupo de tareas en el tiempo. Sin embargo, a diferencia de los métodos estadísticos los cuales tienden a fijar su atención a la comprensión de los procesos que generan los datos, las técnicas basadas en aprendizaje de máquinas fijan su atención a la construcción de un sistema que mejore su funcionamiento basado en los resultados previos. En otras palabras, un sistema que se base en el paradigma del aprendizaje automático tiene la habilidad de cambiar su estrategia de ejecución en la base de la nueva información adquirida. CAPĺTULO 1. La detección de anomalía 8 1.2.1.2 Análisis secuencial basado en llamada al sistema. Este método es una de las técnicas basadas en aprendizaje de máquina más ampliamente usada para la detección de anomalías, que involucra conocer el comportamiento de un programa y reconocer desviaciones significantes de lo “normal”. Uno de los investigadores del tema [1], establece que la correlación en secuencias de longitud fija de llamada al sistema [6], podría ser usada para elaborar un perfil normal de un programa. Por consiguiente, los programas que muestren secuencias que están desviadas del perfil de secuencia normal podrían ser considerados como víctimas de un ataque. Otro investigador [7] hizo una extensión del trabajo, en el que se elaboró una base de datos del comportamiento normal para cada programa de interés. Una vez elaborada una base de datos estable para un programa dado en condiciones particulares, la base de datos es entonces usada para monitorear el comportamiento del programa. Las secuencias de llamada al sistema forman un conjunto de patrones normales para la base de datos, y las secuencias no encontradas en esta, son entonces indicadores de anomalías. 1.2.1.3 Método de la ventana deslizante. Este es otro método que ha sido frecuentemente usado en el entorno que nos encontramos. Es una metodología de aprendizaje secuencial, que convierte el problema de aprendizaje secuencial en el clásico problema de aprendizaje. Construye una ventana clasificadora hw B B que mapeo una ventana de entrada de ancho w dentro de un valor individual y de salida. Específicamente, tenemos que d = (w - 1)/2 que es la mitad del ancho de la ventana. Entonces hw predice yi ,t usando la ventana B B B B (xi,t _ d ,xi, t _ d+1, . . .,xi, t, . . .,xi, t + d_1,xi, t + d). La ventana clasificadora hw es preparada para la B B B B B B B B B B B B conversión de cada ejemplo secuencial de entrenamiento (xi, yi) dentro de la ventana y B B B B entonces aplicar un algoritmo de aprendizaje de máquina estándar. Una nueva secuencia x es clasificada convirtiéndola en una ventana, aplicando hw para predecir cada yt y luego B B B B concatenar los yt para formar las secuencias y predichas. B B La ventaja evidente de este método de la ventana deslizante es que permite que sea aplicado a cualquier algoritmo clásico de aprendizaje supervisado. Si bien, el método de ventana CAPĺTULO 1. La detección de anomalía 9 deslizante da suficiente rendimiento en muchas aplicaciones, en este no se aprovechan las correlaciones entre valores cercanos de yt .Específicamente, la única relación entre valores B B cercanos de yt que se capturan, es que son previsibles de los valores cercanos de xt. B B B B Si hay correlación entre los valores de yt que son independientes de los valores xt, entonces B B B B estos no son capturados. El método de la ventana deslizante ha sido utilizado con éxito en una serie de técnicas de aprendizaje automático basados en la detección de anomalía [8, 9]. Existen dos métodos más que mejoran el método tradicional de la ventana deslizante, uno utiliza ventanas deslizantes para crear una base de datos de secuencias normales para la realización de pruebas en contra de los casos de prueba [8], y el otro propone una metodología de modelado dinámico que utiliza la longitud de una ventana deslizante dependiente del contexto de la secuencia de llamada al sistema [9]. 1.2.1.4 Redes Bayesianas. Una red Bayesiana codifica las relaciones probabilísticas entre variables de interés. Cuando se usa en ejecución con técnicas estáticas, las redes Bayesianas tienen una serie de ventajas para el análisis de datos [10]. Primeramente porque estas codifican las interdependencias entre variables, que pueden manejar la situación donde hayan pérdidas de datos. En segundo lugar, las redes Bayesianas tienen la habilidad de representar relaciones causales, por consiguiente, ellas pueden ser usadas para predecir las consecuencias de una acción. Por último tienen ambas relaciones, causales y probabilísticas, por lo que pueden ser usados para modelar problemas donde se necesite combinar conocimientos previos con datos. Algunas personas pretenden adaptar las estadísticas bayesianas para crear modelos de detección de anomalías [11, 12]. Otros investigadores [13] desarrollaron un sistema de detección de anomalías que emplea redes bayesianas ingenuas (bayesianas naives) [14]. Este modelo que es parte de EMERALD [15], ha sido capaz de potenciar la detección de ataques distribuidos en los cuales cada ataque individual a una sesión no es lo suficientemente sospechoso como para generar una alerta. Sin embargo, este esquema también tiene desventajas; primeramente como se señala en [11]. Otra área dentro del CAPĺTULO 1. La detección de anomalía 10 dominio de la detección de anomalías, donde las técnicas bayesianas han sido frecuentemente usadas, es en la clasificación y supresión de falsas alarmas [11]. Aunque el uso de redes bayesianas para la detección de intrusos o la predicción del comportamiento de intrusos puede ser efectiva en determinadas aplicaciones, sus límites deben considerarse en la aplicación real. Dado que la precisión de este método es dependiente de ciertas suposiciones que son típicamente basadas en el modelo de comportamiento del sistema de destino, y desviándose de esas suposiciones se reducirá su exactitud. Seleccionando un modelo inexacto dará lugar a un sistema de detección inexacto. Por lo tanto, la selección de un modelo preciso es el primer paso para la solución del problema. Lamentablemente la selección de un modelo de comportamiento exacto no es una tarea fácil porque estas redes y/o sistemas típicos son complejos. 1.2.1.5 Análisis de los componentes principales. Las bases de datos para los sistemas de detección de intrusos, típicamente son muy largas y multidimensionales. Con el continuo aumento de la velocidad en las redes y redes distribuidas basadas en el almacenamiento intensivo de aplicaciones de datos, como la elaboración, transmisión, visualización y comprensión de los datos se torna cada vez más compleja y costosa. Para enfrentar el problema de la alta dimensionalidad de las bases de datos, investigadores han desarrollado una técnica de reducción de dimensionalidad conocida como PCA [16, 17]. Una de las mayores desventajas de muchas de las técnicas de aprendizaje automático, así como la llamada al sistema basado en el método del análisis de secuencia y el modelo oculto de Markov, es que estos son recursos muy costosos. Por ejemplo, una técnica de detección de anomalías que esté basada en el modelo de Markov es computacionalmente muy cara porque ésta usa técnicas de estimación paramétricas basadas en los algoritmos de Bayes para el entrenamiento del perfil normal de los anfitriones/red considerados. Si se considera una larga cifra de datos auditados y una frecuencia relativamente alta de eventos que ocurren en computadoras y redes de hoy día, tales técnicas para la detección de anomalías no son escalables para la operación en tiempo real. CAPĺTULO 1. La detección de anomalía 11 1.2.1.6 Modelos de Markov. Los modelos de Markov han sido usados también extensivamente para la detección de anomalías. Existe el llamado modelo de Markov oculto, como otra técnica popular de Markov, es un modelo estadístico donde el sistema modelado es asumido como un proceso de Markov con parámetros desconocidos. El reto es la determinación de los parámetros ocultos desde los parámetros observables. A diferencia del modelo regular de Markov, donde las probabilidades de transición de estado son solamente parámetros y el estado del sistema es directamente observable. En un modelo de Markov oculto, el único elemento visible son las variables del sistema que son influenciadas por el estado del sistema, el cual está propiamente oculto. Un estado oculto de este modelo representa algunas condiciones no visibles del sistema modelado. En cada estado, existe una probabilidad certera de producir alguna de las salidas del sistema visible y una probabilidad separada indicando la probabilidad del próximo estado. Considerando las diferentes distribuciones de probabilidad de salida en cada estado y la autorización del sistema a cambiar su estado sobre el tiempo, el modelo es capaz de representar secuencias no estacionarias. 1.2.2 Método de detección de anomalía basados en especificaciones. La segunda aproximación a la que antes se ha hecho referencia, es la consistente en indicar mediante un conjunto de reglas el comportamiento habitual del sistema. Suele ser denominada detección de anomalías basada en especificaciones (specification-based anomaly detection). Fue propuesta y desarrollada inicialmente por Calvin Check Wang Ko y otros investigadores de la Universidad de California en Davis, durante la segunda mitad de los noventa [18,19]. La idea en la que se sustentan los sistemas de detección de anomalías basados en especificaciones, es que se puede describir el comportamiento “deseable” (entendiendo por “deseable” el comportamiento “normal”) de cualquier programa cuya seguridad sea crítica. Esta descripción se realiza en base a una especificación de seguridad mediante gramáticas, y se considera una violación de seguridad, al menos en principio, a las ejecuciones de dichos programas que violen su respectiva especificación. CAPĺTULO 1. La detección de anomalía 12 1.2.2.1 Detección de anomalías basado en minería de datos. Para eliminar los elementos manuales y temporales del proceso de construcción de un sistema de detección de intrusos, los investigadores apuestan cada vez más por el uso de las técnicas de minería de datos (data mining) para la detección de anomalías [20, 21]. Grosman [22] define “minería de datos” como; “el descubrimiento de patrones, asociaciones, cambios, anomalías, estructuras estadísticas significantes y eventos en datos”. Simplemente, minería de datos es la habilidad de tomar datos como entradas, y extraer de estos, patrones o desviaciones que puedan no ser distinguidas fácilmente a simple vista. La minería de datos puede ayudar a mejorar los procesos de detección de intrusos, adicionando un nivel de enfoque en la detección de anomalías. Identificando saltos para actividades validas de la red, la minería de datos ayudará a distinguir actividades de ataques del tráfico diario en la red. 1.2.2.2 Detección de intrusos basado en clasificación. Un sistema de detección de intrusos que clasifica los datos auditados como normales o anómalos basados en un conjunto de reglas, patrones y otras técnicas afiliadas puede ser ampliamente definido como un sistema de detección de intrusos basado en clasificación. Este proceso de clasificación típicamente implica los siguientes pasos: 1. Identificar atributos de clases y clases de los datos de entrenamiento. 2. Identificar atributos para la clasificación. 3. Adquirir un modelo usando los datos de entrenamiento. 4. Usar el modelo adquirido para clasificar las muestras de datos desconocidos. Una variedad de técnicas de clasificación han sido propuestas en la literatura. Estas incluyen técnicas inductivas de generación de reglas, lógica difusa (logic fuzzy), algoritmos genéticos y técnicas basadas en redes neuronales. Algoritmos inductivos de generación de reglas, típicamente implica la aplicación de un conjunto de reglas de asociación y patrones de eventos frecuentes, para clasificar los datos revisados. En este contexto, si una regla declara que: “si el evento X ocurre, entonces el evento Y es probable que ocurra”, estos eventos X y Y pueden ser descritos como un CAPĺTULO 1. La detección de anomalía 13 conjunto de pares (variable, valor) donde el objetivo es encontrar los conjuntos X y Y tal que X implique Y. En el dominio de la clasificación, se fija Y y se intenta encontrar un conjunto de X el cual sea buen preeditor para la clasificación correcta. Mientras que la clasificación supervisada deriva solamente reglas para un solo atributo, las técnicas inductivas de generación de reglas las cuales son por lo general no supervisadas, derivan reglas relacionadas con alguno o todos los atributos. Las técnicas de lógica difusa, han estado en uso en el área de redes y computadoras desde la pasada década del 1990. Estas técnicas se han empleado para la detección de intrusos por dos razones primarias [23]. Primeramente, por varios parámetros cuantitativos que son usados en el contexto de la detección de intrusos, Ej. Tiempo de uso de la CPU, intervalos de conexión, entre otros, que pueden ser potencialmente vistos como variables difusas. En segundo lugar, el concepto de seguridad es propiamente difuso [23]. En otras palabras, el concepto de difuso contribuye a allanar la separación abrupta del comportamiento normal y el anormal. Es decir, un determinado punto de datos que quedan fuera dentro de un intervalo ''normal'' definido, se considerará anómalo normal en el mismo grado, independientemente de su distancia desde el intervalo. Algoritmos genéticos, es una técnica de búsqueda que se utiliza para encontrar soluciones aproximadas a los problemas de optimización y búsqueda, también ha sido ampliamente empleada en el ámbito de la detección de intrusos para diferenciar el tráfico normal de la red del tráfico de conexiones anómalas. La mayor ventaja de los algoritmos genéticos es su flexibilidad y robustez como un método de búsqueda global. Un algoritmo genético converge a la búsqueda de una solución desde múltiples direcciones, y se basa en reglas probabilísticas en lugar de deterministas. En el ámbito de la detección de intrusos en la red, los algoritmos genéticos se han utilizado de diversas maneras. Algunos enfoques [24, 25], han utilizado algoritmos genéticos directamente para obtener las reglas de clasificación, en tanto otros [23, 26], hacen uso de algoritmos genéticos para seleccionar las características apropiadas o determinar los parámetros óptimos de las funciones relacionadas, mientras que diferentes técnicas de minería de datos se utilizan para adquirir las reglas. El primer intento de aplicar los algoritmos genéticos para el problema de la detección de intrusos fue realizado en 1995 [27], cuando se aplicó la tecnología de múltiples agentes para la CAPĺTULO 1. La detección de anomalía 14 detección de anomalías de red. La ventaja principal, fue el empleo de un gran número de agentes, utilizados para controlar una serie de parámetros en la red. Redes neuronales, constituyendo la base de un sistema de detección de intrusos son tradicionalmente sistemas basados en anfitriones que se centran en la detección de desviaciones en el comportamiento de programas como una señal de anomalía. En el enfoque de redes neuronales para la detección de intrusos, estas aprenden a predecir el comportamiento de los distintos usuarios y de los demonios del sistema. La principal ventaja consiste en su tolerancia para los datos imprecisos e información dudosa, y su habilidad para inferir soluciones desde los datos sin tener previo conocimiento de la regularidad de estos. Todo esto en combinación con su habilidad de generalización a partir de los datos de entrenamiento muestra un enfoque apropiado para la detección de intrusos. Sin embargo, las soluciones basadas en las redes neuronales tienen varias desventajas. Primeramente, estos pueden fallar en encontrar una solución satisfactoria por carecer de datos suficientes o por ser una función no adiestrable. En segundo lugar, las redes neuronales pueden ser lentas y caras en el entrenamiento. La carencia de velocidad es en parte por la necesidad de recolectar y analizar los datos entrenados o porque las redes neuronales han de manipular los pesos de las neuronas individuales para llegar a la solución correcta. ANDSOM [28] es el módulo para la detección de anomalías de red basado en el sistema de detección de intrusos, llamado INBOUNDS, que se desarrolló en la Universidad de Ohio. 1.2.2.3 Agrupamiento y detección de objetos aislados. El agrupamiento (clustering) es una técnica para encontrar patrones en los datos multidimensionales sin revisar. Clustering ha despertado el interés en los investigadores en el contexto de la detección de intrusos [29, 30]. La principal ventaja que ofrece Clustering es la capacidad de detectar y aprender de intrusiones en los datos revisados, en tanto que no requieren del administrador del sistema para proporcionar descripciones explícitas de los diversos clases/tipos de ataques. CAPĺTULO 1. La detección de anomalía 15 Detección por agrupamiento, y por objetos aislados (outliers) están estrechamente relacionados. Desde el punto de vista de un algoritmo de clustering, los outliers son objetos que no se encuentran en los grupos del conjunto de datos; y en el contexto de la detección de anomalías, pueden representar intrusiones y ataques. La comunidad estadística ha estudiado ampliamente el concepto de “objetos aislados” [31]. Los algoritmos de detección por objetos aislados más recientes [32, 33, 34] se basan en las distancias dimensionales completas entre los puntos, así como las densidades de las vecindades locales. El MINDS [35] es otro método de detección de anomalías en red que utiliza técnicas de minería de datos. El módulo de detección de anomalías MINDS asigna un grado de aislamiento a cada punto de datos, nombrados como LOF [34]. El LOF toma en consideración la densidad de la vecindad alrededor del punto en observación para determinar estos aislamientos. En este esquema, los objetos aislados tienden a tener altos valores de LOF. La ventaja del algoritmo de LOF es su habilidad para detectar todas las formas de aislamientos, incluyendo aquellas que no pueden ser detectadas por los algoritmos basados en distancias. 1.2.2.4 Descubrimiento de reglas de asociación. Las reglas de asociación son una de las varias técnicas de minería de datos que describen eventos que tienden a ocurrir a la vez. El concepto de estas puede ser comprendido como; dada una base de datos D de transacciones donde cada transacción T ∈ D denota un conjunto de ítems en la base de datos., una regla de asociación de la forma X =>Y, donde X ⊂ D , Y ⊂ D y X ∩ Y = φ . La regla X =>Y sostiene en el conjunto de transacción con certidumbre c si c% de transacción en X también contiene a Y. Dos importantes conceptos cuando se trabaja con reglas de asociación son certidumbre de regla y soporte de reglas. La probabilidad de la certidumbre de regla es definida como la probabilidad condicional P (Y ⊆ T X ⊆ T ) . La regla X =>Y tiene soporte s en la base de datos de transacción D si s% de transacción en D contiene X ∪ Y . Las reglas de Asociación han sido exitosamente usadas en la minería de datos auditados para encontrar patrones normales para la detección de anomalías [36, 37, 38]. Ellas están particularmente en el dominio de la detección de CAPĺTULO 1. La detección de anomalía 16 anomalías porque pueden ser usadas para construir un sumario de conexiones anómalas detectadas por el sistema de detección de intrusos. 1.3 Anomalías más comunes. Hay diferentes formas de anomalías, el desafío es cubrir todas estas formas de anomalías de la manera más eficiente posible, como en el caso de un ataque que altera un protocolo de red volviéndolo incompatible con su RFC. Una anomalía puede ser un programa que cuando se ejecuta invade otras áreas de memoria o captura datos para enviarlos por Internet. Puede ser además un tráfico aparentemente verdadero en la red, que envía comandos al servidor Web o inclusive a un servidor de datos que interactúa con el sitio Web, una red cuyo volumen de tráfico se mantiene estable todos los días y que se reduce abruptamente o aumenta. O una computadora que misteriosamente aparece en la red, comunicándose con Internet y que nadie sabe de quién es o dónde está. Todos estos ejemplos son anomalías, sin embargo, cada uno de ellos exige un método diferente de detección. Pero hay muchas otras anomalías en nuestro mundo digital, como la congestión de una red, la corrupción de datos, errores en la secuencia o duplicación de datos, así como paquetes retrasados o perdidos. CAPĺTULO 2. Software de medición de tráfico 17 Capítulo 2. Software de medición de tráfico. Para abordar la instalación y configuración del software MRTG y su trabajo en conjunto con la herramienta RRDtool, se ha dedicado el presente capítulo. En aras de terminar su estructura se describe el modelo de allanamiento exponencial y algunas funciones de RRDtool. 2.1 Software MRTG. MRTG es un software o herramienta, escrita en C y Perl por Tobias Oetiker y Dave Rand, que se utiliza para supervisar la carga de tráfico de interfaces de red. MRTG genera páginas HTML con gráficos que proveen una representación visual de este tráfico. MRTG utiliza SNMP [39] para recolectar los datos de tráfico de un determinado dispositivo (ruteadores o servidores), por tanto es requisito contar con al menos un sistema con SNMP funcionando y correctamente configurado. SNMP manda peticiones con dos OIDs al anfitrión. Una base de control de información MIB [40] controla las especificaciones de los OIDs. Después de recoger la información la manda sin procesar mediante el protocolo SNMP. 2.1.1 Desarrollo de MRTG. Es importante señalar que unos de los proyectos en los que se trabaja, es en el mejoramiento del software MRTG y uno de los que lo afirma es su propio creador [41], cuando asegura que un gran por ciento de la nueva versión más específicamente MRTG CAPĺTULO 2. Software de medición de tráfico 18 versión 3 estará basada en RRDtool, debido a la baja capacidad, la reutilización de memoria en sus ficheros .rrd y su gran flexibilidad con la generación de gráficos. 2.2 Técnica Round Robind. Round Robin es una técnica empleada por la herramienta RRDtool. Esta técnica brinda la posibilidad de mantener siempre el mismo espacio de memoria, el cual no se afecta al introducirle grandes cantidades de valores y mucho menos con el pasar del tiempo, para lograrlo, se sobrescribe o se desecha el primer elemento almacenado en la base de datos por el valor más reciente y así sucesivamente hasta repetirse nuevamente el ciclo, esto ocurre cuando ya se ha utilizado todo el espacio de memoria disponible en la base de datos. De esta forma, la base de datos no requiere de ningún mantenimiento. 2.2.1 Herramienta RRDtool. RRDtool se deriva de MRTG. MRTG empezó como un pequeño script para poder graficar el uso de una conexión a Internet. Luego evolucionó, permitiendo graficar otras fuentes de datos, como temperatura, velocidad, voltajes, cantidad de páginas impresas, etc. Actualmente lo más usado es RRDtool para guardar y procesar datos conseguidos a través de SNMP, y que los datos sean el número de bytes (o bits) transferidos desde y hacia una red u ordenador. RRDtool te permite crear una base de datos, guardar los datos en ellas, recuperarlos y crear gráficos en formato GIF o PNG, para mostrarlos en un navegador Web. Esas imágenes dependen de los datos que se hayan guardado y pueden, por ejemplo, ser un sumario del promedio del uso de la red, o los picos de tráfico que ocurrieron etc. Los valores necesariamente no tienen porque ser enteros, también puedes almacenar flotantes, algo con lo cual no trabaja MRTG. 2.2.2 Proyectos venideros con la herramienta RRDtool. Existen proyectos ambiciosos con RRDtool, los cuales están orientados ha crear nuevos gráficos que muestren el contenido de una base de datos RRDtool. Se pretende usar nuevas CAPĺTULO 2. Software de medición de tráfico 19 extensiones de gráficos en vista a mejorar los detalles en las imágenes. Para esto, se trabaja en la implementación de extensiones más poderosas como la EPS, PDF y SVD. 2.3 Condiciones para instalar y configurar MRTG exitosamente. Existen cuatros requisitos fundamentales que se deben tener presente para la exitosa configuración de MRTG.: 1. Contar con un sistema SNMP correctamente configurado. 2. Emplear correctamente la comunidad (community) SNMP. 3. Conocer la dirección IP del anfitrión que se va a gestionar. 4. Tener instalado una versión del lenguaje de programación Perl Script que sea como mínimo la 5.8.x.x 2.3.1 Instalación del software MRTG. MRTG es un software que puede ser instalado en diversos sistemas operativos. Para realizar dicha acción se debe escoger el sistema operativo con el cual se desea trabajar, para luego proceder a su descarga [41], de esta manera queda instalado MRTG en el directorio descompactado. Para ver si MRTG ha sido instalado correctamente en Windows, se ubica el Command Prompt en el directorio bin de MRTG y se escribe el siguiente código: perl mrtg Esto genera un mensaje de error como el que se muestra en la figura 2.1, alertando la falta del fichero de configuración. Figura 2.1 MRTG instalado en Windows CAPĺTULO 2. Software de medición de tráfico 20 2.3.2 Configuración del software MRTG. Configurar MRTG en Windows es muy rápido, para esto solo se hace uso del fichero cfgmaker y de tres opciones, global, WorkDir y output [41]. cfgmaker: es un fichero que viene por defecto en la versión MRTG-2.16.1, a él se le asigna la tarea de crear el fichero de configuración con las opciones encomendadas. global: esta opción se emplea para agregar opciones al fichero de configuración generado o que se va a generar. WorkDir: path donde MRTG coloca los datos luego de realizar cada consulta. output: le indica a MRTG como se va ha llamar su fichero de configuración. Para configurar el software MRTG, se accede a través del Command Prompt al directorio donde se encuentra el bin de MRTG. Ubicado en él, se procede con el siguiente comando: perl cfgmaker comunidad@direccion_IP - -global “WorkDir: directorio seleccionado” - output nombre.cfg Luego de haber sido instalado y configurado satisfactoriamente MRTG, se debe orientar su arranque de la siguiente manera: perl mrtg mrtg.cfg La figura 2.2 contiene un ejemplo real donde se emplea el fichero y todas las opciones anteriormente mencionadas. Las precauciones (warning) que aparecen cuando se le indica a MRTG que arranque, son generadas, porque no existe todavía ningún fichero .log y MRTG los tiene que crear. Esto también aparece la segunda vez, pero indicando que el fichero ahora se está actualizando. Figura 2.2 Configuración de MRTG. CAPĺTULO 2. Software de medición de tráfico 21 2.3.3 MRTG como un demonio. Correr MRTG como un demonio (deamon) proporciona la ventaja de que él por sí solo arranque cada 5 minutos, respondiendo así a su configuración por defecto. Para esto, se escribe la siguiente opción en el fichero de configuración creado con anterioridad (mrtg.cfg). RunAsDaemon: yes Posteriormente ubicado en el directorio bin, se coloca el siguiente código de línea en el Command Prompt: wperl mrtg - - logging = eventlog mrtg.cfg Para visualizar un ejemplo real de la aplicación del comando se muestra la figura 2.3. Figura. 2.3 Comando de línea que corre a MRTG como un demonio A partir de aquí MRTG trabaja solo. Para comprobar que esté corriendo el proceso, se abre una ventana Administrador de Tarea de Windows (Windows Task Manager) y se supervisa que este wperl.exe en los procesos. En la figura 2.4 se puede observar. Figura 2.4 Proceso wperl corriendo. CAPĺTULO 2. Software de medición de tráfico 22 2.4 MRTG acoplado a RRDtool. Para que MRTG comience a trabajar con RRDtool, este tiene que conocer el path de dos ficheros, el ejecutable RRDtool y del modulo, ellos presenta extensión .exe y .pm. El fichero ejecutable puede ser creado, descargando los códigos fuentes y compilándolos o simplemente ser encontrado en algunas de las versiones liberadas. Esto es posible debido a que, la herramienta se encuentra cubierta por la licencia GNU GPL de software libre (free software). En la versión rrdtool-1.2.15-win32-perl58 se pueden localizar dichos ficheros, sin necesidad de llegar a un proceso de compilación. Existen tres opciones que se emplean para que MRTG trabaje con RRDtool, ellos son nombrados Logformat, PathAdd y LibAdd [41]. 1. LogFormat: habilita a MRTG al trabajo con RRDtool. 2. PathAdd: se emplea para decirle al MRTG el path del ejecutable RRDtool. 3. LibAdd: le orienta a MRTG el path del modulo Perl. Estas opciones son escritas en el orden anteriormente mencionado en el fichero de configuración de MRTG. En la figura 2.4 se encuentran habilitadas todas estas opciones para que MRTG inicie su trabajo con RRDtool. Figura 2.5. Opciones que habilitan a MRTG al trabajo con RRDtool Cuando se hacen modificaciones como estas en el fichero mrtg.cfg, ocurren cambios en el directorio donde MRTG guarda sus datos e imágenes. CAPĺTULO 2. Software de medición de tráfico 23 1. A partir de aquí MRTG convertirá los ficheros viejos con extensión .log a .rrd. Pero estos ficheros .log no se tocan en el proceso, por si ocurre algún percance los datos recogidos hasta el momento prevalezcan. 2. MRTG solamente se encargara de la entrega de los datos a RRDtool, para que este actualice sus bases de datos, es decir los ficheros que contengan extensiones .rrd, pero si se abre algún fichero de estos, no se podrá entender su contenido porque tienen un formato diferente al .log de MRTG. 3. MRTG ya no genera más gráficos, solo se encarga de la encuesta. Ahora MRTG es un 20% más rápido [41], porque no se encarga de actualizar los ficheros inicialmente creados por él. 2.5 Descripción de algunas funciones de RRDtool. Como a partir de ahora la información recogida del tráfico por mediación de MRTG estará almacenada en bases de datos RRD [42], se necesita una descripción de las funciones posibles para la interacción con las bases de datos correspondientes. Para dar respuesta a esta incógnita, a continuación se describen brevemente algunas funciones. • RRDs::create(): permite crear un base de datos RRD. • RRDs::error(): devuelve los errores que ocurren cuando no se está empleando correctamente una función. • RRDs::fetch(): función que permite obtener los datos almacenados en una RRD. • RRDs::graph(): es usada para generar los ficheros de imágenes de una RRD. • RRDs::info(): función que imprime todos los datos de cabecera de una RRD. • RRDs::update(): función que almacena los nuevos valores dentro de una base de datos o en otras palabras actualiza la RRD. 2.6 Modelo de allanamiento exponencial. El objetivo que persigue el modelo de allanamiento exponencial (exponential smoothing model), es determinar posibles fallas y congestionamientos de tráfico en redes de computadoras, catalogándolas como anómalas. CAPĺTULO 2. Software de medición de tráfico 24 Para realizar dicha acción se emplea y se analizan flujos de datos manejados por la interfaz de algún router o swicth. Por ende, puede ser empleado por un sistema para la detección de anomalía en tiempo real. La ventaja principal del modelo es su bajo costo computacional, por emplear tres expresiones en las cuales no existe complejidad matemática. Las palabras allanamiento exponencial le son atribuidas producto a que, en aquellos espacios de tiempo donde la curva (Ej. hecha a partir del tráfico actual) presenta abruptas pendientes (decreciente o creciente) son allanadas o suavizadas, eliminando así el efecto visual de pico en el gráfico [43]. Para lograr esto, se hace uso de un valor Yt+1, valor del tráfico que se B B pronostica en el próximo intervalo de tiempo t+1, y se calcula a partir de Xt y Yt, valor B B B B actual de tráfico y valor del tráfico pronosticado en el tiempo anterior respectivamente, para el primer cálculo de Yt+1, Xt = Yt. También existen dos variables α y γ, denominadas B B B B B B constantes de allanamiento y un factor MADt que es el promedio de la desviación. Las B B expresiones del modelo son presentadas a continuación: Yt+1 = Xt* α + (1- α)* Yt B B B B B (2.1) B 0 < α ≤1, donde Yt = Xt B B B MADt = ∑ ( │Et│/n) =│Et│* γ+ (1- γ)* MADt-1 B B (2.2) B B donde al MADt-1 inicialmente se le asigna un valor, Et =│Yt -Xt│ B B B (Yt+1 – n* MADt ) ≤ Xt+1 ≤ ( Yt+1 + n*MADt ) B B B B B B B B B B B B B B B B B (2.3) CAPÍTULO 3. Diseño del sistema y ajuste de las constantes 25 Capítulo 3. Diseño del sistema y ajuste de las constantes. Este capítulo recoge, una descripción del script, la metodología llevada acabo en la selección de los valores para las constantes del modelo de allanamiento exponencial y los resultados alcanzados con el sistema desarrollado para la detección de anomalías. 3.1 Lenguaje de programación seleccionado. El script que se describe, fue realizado en el lenguaje de programación Perl Script, debido a que la herramienta RRDtool en muchas de sus versión, en especial la mencionada en el capítulo anterior presenta un modulo que le permite a Perl Script hacer uso de las funciones hecha para RRDtool. Aunque, también existen versiones de RRDtool que traen ataduras a otros lenguajes de programación como Python, Ruby, TcL y PHP. 3.1.1 Descripción del sistema. Como en muchos lenguajes de programación, Perl Script permite crear funciones o subrutinas, como también se le conocen. Para hacer un uso más eficiente de la programación, la declaración de las subrutinas se realiza al inicio o al final del programa, pero no durante su cuerpo. Es por esto, que en el script antes de adentrarse al programa principal (main) se declaran todas las subrutinas que se van a emplear. Básicamente las subrutinas son creadas para implementar las ecuaciones del modelo de allanamiento exponencial que constantemente necesitan ser llamadas al igual que algunas funciones de RRDtool. Para habilitar a Perl Script de las funciones de RRDtool, se hace uso del modulo o biblioteca RRDs, y para iniciar su validación se emplea la función que permite recoger los CAPÍTULO 3. Diseño del sistema y ajuste de las constantes 26 datos de una base de datos, luego se visualizan los valores y la hora en la que fueron capturado. Como las bases de datos RRDtool creadas por defecto para cada interfaz contienen dos DS [42], declaradas como ds0 y ds1, las cuales no son más que los valores de entrada y salida del tráfico respectivamente, se proceden a dividirlas para almacenar los valores de entrada y de salida del tráfico en arreglos (array) por separado. Posteriormente se crean algunas bases de datos, las cuales se actualizarán en la medida que se calcule cada valor Yt+1 y MADt B B B B correspondiente a la entrada y salida. Para el cálculo y la actualización de las bases de datos se llaman algunas subrutinas. El siguiente bloque de código contiene la toma de decisiones para generar alarmas, anunciando la posible anomalía detectada. En la última parte del script, se crean los ficheros de imagen que contiene los gráficos de entrada y salida del tráfico de la interfaz con la desviación promedio. Además de dar la cantidad de anomalías detectas en el intervalo de tiempo seleccionado. 3.1.2 • Descripción de las subrutinas. Subrutina actualizar{}: como su nombre la indica esta subrutina es creada para actualizar las bases de datos. • Subrutina for0{}: subrutina que realiza la suma entre el valor que se pronostica y la desviación promedio. • Subrutina for1{}: realiza la operación matemática opuesta a la anterior subrutina. • Subrutina grafico{}: subrutina encargada de generar los ficheros de imagen. • Subrutina MAD{}: subrutina que calcula el pronóstico de la desviación promedio. • Subrutina pronostico{}: subrutina que retorna el valor que se pronostica en el próximo intervalo de tiempo. CAPÍTULO 3. Diseño del sistema y ajuste de las constantes 27 3.2 Ajustes del sistema. A consecuencia de que el modelo de allanamiento exponencial contiene algunas constantes que presentan un intervalo de variación, se necesitan hacer algunas pruebas que permita ver como se comporta el sistema en la detección de anomalías a medida que estas constantes varían. 3.2.1 Metodología para el ajuste de las constantes α y γ. Antes de comenzar la búsqueda de los valores para las constantes α y γ, se debe inicializar la constante MADt-1, para esto se escoge el valor 0, por las siguientes razones, los valores Yt B B B B y Xt inicialmente son iguales y esto proporciona que el resultado sea el propio valor MADt-1. B B B B Lo anterior hace que se deba esperar por algunas muestras de tráfico antes considerar como validos los resultados del modelo. La constante α es la que más peso presenta en el modelo, porque de ella va a depender cuan certero va a comportarse el sistema en detectar las anomalías generadas. Esta constante determina el peso que se le da a la muestra actual y a las muestras anteriores (historia). Se debe seleccionar un valor de α que le permita al sistema generar la mayor cantidad de verdaderos positivos y negativos, para cumplir con el principio de todo sistema de detección de anomalía. Para la determinación de este valor, se barrió cada valor de α con su respectivo valor en la constante γ, en busca de ver el comportamiento del sistema con cada variación realizada. Pero para esto, se tuvieron que generar algunas anomalías en un intervalo de tiempo determinado, en la tabla 3.1 se muestran las anomalías generadas con su respectiva hora y en la figura 3.1 el tráfico recogido en el mismo intervalo de tiempo. Tabla 3.1. Anomalías generadas. Anomalías generadas* Hora Envió de paquetes 8:40 AM Estado normal 9:05 AM Desconexión de la red 9:50 AM CAPÍTULO 3. Diseño del sistema y ajuste de las constantes 28 Conexión de la red 10:20 AM Envió de paquetes 10:45 AM Estado normal 11:10 AM Envió de paquetes 11:50 AM Desconexión de la red 12:10 PM Envió de paquetes 12:40 PM Estado normal 13:00 PM Envío de paquetes 13:10 PM Desconexión de la red 13:25 PM * La anomalía Envió de paquetes se realiza con un sistema operativo Unix, haciendo uso del ping de la muerte (ping of death) para generar grandes volúmenes de flujos de datos, variando el tamaño del paquete. La Desconexión de la red se realiza interrumpiendo físicamente la conexión. Figura 3.1 Tráfico de entrada y salida recogido durante la generación de anomalías. 3.3 Resultados. Los resultados obtenidos fueron relevantes y son mostrados en la tabla 3.2. Donde se puede apreciar que el valor de α = 0.9 produce la menos cantidad de falsos negativos y falsos positivos para todos los valores de n. Esto significa que debido a la gran variabilidad del CAPÍTULO 3. Diseño del sistema y ajuste de las constantes 29 tráfico, para obtener resultados confiables se debe dar una mayor ponderación a los valores actuales de la muestra. Tabla 3.2. Anomalías detectadas para γ = α variando n. Valor para γ= α 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 Valores de n 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 Total de anomalías detectadas 8 6 0 7 7 3 8 7 6 8 7 6 8 7 7 7 Total de falsos positivos 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 Total de falsos negativos 1 3 8 2 1 4 2 2 2 2 2 2 1 2 1 2 2 3 1 2 3 1 2 3 1 2 3 7 6 6 7 6 7 7 7 9 7 7 1 0 2 0 0 2 0 0 2 0 0 1 1 1 1 2 1 1 1 0 1 1 De la figuras 3.3 a la figura 3.5 se aprecia el comportamiento del tráfico de salida con sus respectivas desviaciones donde el sistema tuvo mejores detecciones. CAPÍTULO 3. Diseño del sistema y ajuste de las constantes 30 Figura 3.3. Para n =1 y γ=α= 0.3. Figura 3.2 Para n=1 y γ=α= 0.5. Figura 3.4. Para n=1 y γ=α= 0.9. CAPÍTULO 3. Diseño del sistema y ajuste de las constantes 31 En la práctica la selección correcta de los parámetros del modelo estará determinada por el comportamiento de las variables, por tales motivos los resultados aquí obtenidos no se pueden extrapolar a cualquier escenario. Sin embargo el método utilizado si puede ser aplicado para ayudar en la selección de las constantes. Conclusiones y Recomendaciones 32 CONCLUSIONES Y RECOMENDACIONES Conclusiones La información recolectada por las herramientas de medición de tráfico MRTG y RRDtool contienen información suficiente para el desarrollo de sistemas de detección de anomalía de volumen de tráfico IP. Por lo antes expuesto, se propone un sistema, aunque simple, permite detectar con adecuada certeza la ocurrencia de varios tipos de anomalías en la red y puede ser aplicado a cualquier escenario. Además las herramientas de software desarrolladas como parte de este trabajo son de fácil configuración y se integran perfectamente con los sistemas de monitoreo de tráfico soportados en MRTG y RRDtool. Recomendaciones • Mejorar la recogida de datos con el surgimiento de nuevas versiones de MRTG. • Hacer uso del rrdcgi de RRDtool para generar de forma automática páginas Wed donde se muestren las imágenes creadas. • Aplicar el sistema de detección de anomalías como una herramienta de gestión en la red de la universidad. Referencia bibliográfica 33 REFERENCIAS BIBLIOGRÁFICAS [1] J.P. Anderson, Computer security threat monitoring and surveillance, James P Anderson Co., Fort, Washington, PA, USA, Reporte Técnico 98-17, Abril 1980. [2]R. Büschkes, M. Borning, Transaction-based Anomaly Detection, in: Proceedings of Workshop on Intrusion Detection and Network Monitoring. The USENIX Association, Abril 1999. [3] H.S. Javitz, A. Valdes, The NIDES Statistical Component: Description and Justification. Reporte Técnico, SRI Internacional, Marzo 1993. [4] S.E. Smaha, Haystack: An intrusion detection system, Proceedings of the IEEE Fourth Aerospace Computer Security Applications Conference, Orlando, FL, pp. 37–44, 1988. [5] S. Forrest, S.A. Hofmeyr, A. Somayaji, T.A. Longstaff, A sense of self for unix processes, in: Proceedings of the IEEE Symposium on Research in Security and Privacy, Oakland, CA, USA, pp. 120–128, 1996. [6] S.A. Hofmeyr, S. Forrest, A. Somayaji, Intrusion detection using sequences of system calls, Journal of Computer Security 6, 1998. [7] W.W. Cohen, Fast effective rule induction, in: Proceedings of the 12th International Conference on Machine Learning, Tahoe City, CA, pp. 115–123, 1995. [8] C. Warrender, S. Forrest, B. Pearlmutter, Detecting intrusions using system calls: alternative data models, in: Proceedings of the IEEE Symposium on Security and Privacy, Oakland, CA, USA, pp. 133–145, 1999. [9] E. Eskin, S.J. Stolfo, Modeling system calls for intrusion detection with dynamic window sizes, in: Proceedings of the DARPA Information Survivability Conference & Exposition II, Anaheim, pp. 165–175, 2001. Referencia bibliográfica 34 [10] D. Heckerman, A Tutorial on Learning With Bayesian Networks, Microsoft Research, Reporte Técnico MSRTR-95-06, Marzo 1995. [11] C. Kruegel, D. Mutz, Bayesian event classification for intrusion detection, in: Proceedings of the 19th Annual Computer Security Applications Conference, Las Vegas, NV, 2003. [12] N. Ye, M. Xu, S.M. Emran, Probabilistic networks with undirected links for anomaly detection, in: Proceedings of the IEEE Systems, Man, and Cybernetics Information Assurance and Security Workshop, West Point, NY, 2000. [13] A. Valdes, K. Skinner, Adaptive model-based monitoring for cyber attack detection, in: Recent Advances in Intrusion Detection Toulouse, France, pp. 80–92, 2000. [14] A. Patcha, J.-M. Park, An overview of anomaly detection techniques: Existing solutions and latest technological trends, Bradley Department of Electrical and Computer Engineering, Virginia Polytechnic Institute and State University, Blacksburg, VA 24061, United States, Febrero del 2006. [15] P.A. Porras, P.G. Neumann, EMERALD: event monitoring enabling responses to anomalous live disturbances, in: Proceedings of the 20th NIST-NCSC National Information Systems Security Conference, Baltimore, MD, USA, pp. 353–365, 1997. [16] R.A Calvo., M. Partridge., M.A. Jabri., A comparative study of principal component analysis techniques, in: Proceedings of the Ninth Australian Conference on Neural Networks, Brisbane, Qld, Australia,1998. [17] W. Wang, R. Battiti, Identifying intrusions in computer networks with principal component analysis, in: The First International Conference on Availability, Reliability and Security, Vienna, Austria, pp. 270–279, 2006. [18] C. Ko, Execution Monitoring of Security-Critical Programs in a Distributed System: A Specification-Based Approach, PhD thesis, University of California at Davis, 1996. [19] M Ruschitzka., C. Ko, K. Levitt, Execution monitoring of security-critical programs in distributed systems: A specification-based approach, in: Proceedings of the 1997 IEEE Symposium on Security and Privacy, IEEE Computer Society. pp. 175-187, Mayo 1997. Referencia bibliográfica 35 [20] W. Lee, R.A Nimbalkar, A data mining and CIDF based approach for detecting novel and distributed intrusions, in: Proceedings of the 3rd International Workshop on Recent Advances in Intrusion Detection (RAID 2000), Toulouse, France, pp. 49–65, 2000. [21] W. Lee., S.J. Stolfo, K.W. Mok, Adaptive intrusion detection: a data mining approach, Artificial Intelligence Review 14 533–567.2000. [22] R. Grossman, Data Mining: Challenges and Opportunities for Data Mining During the Next Decade. 1997. [23] S.M. Bridges, R.B Vaughn., Fuzzy data mining and genetic algorithms applied to intrusion detection, in: Proceedings of the National Information Systems Security Conference, Baltimore, MD, 2000. [24] W. Li , Using Genetic Algorithm for Network Intrusion Detection, C.S.G. Department of Energy, pp. 1–8, 2004. [25] M.M., Pillai, J.H.P Eloff., H.S. Venter, An approach to implement a network intrusion detection system using genetic algorithms, in: Proceedings of the 2004 Annual Research Conference of the South African Institute of Computer Scientists and Information Technologists on IT Research in Developing Countries, Stellenbosch, Western Cape, South Africa, pp. 221–228, 2004. [26] Gomez J., D. Dasgupta, Evolving fuzzy classifiers for intrusion detection, in: IEEE Workshop on Information Assurance, United States Military Academy, NY, 2001. [27] M. Crosbie, G. Spafford, Applying genetic programming to ntrusion detection, in: Working Notes for the AAAI Symposium on Genetic Programming, Cambridge, MA, pp. 1–8, 1995. [28] M. Ramadas, S.O.B. Tjaden, Detecting anomalous network traffic with self-organizing maps, in: Proceedings of the 6th International Symposium on Recent Advances in Intrusion Detection, Pittsburgh, PA, USA, pp. 36–54, 2003. [29] L. Portnoy, E. Eskin, S.J. Stolfo, Intrusion detection with unlabeled data using clustering, in: Proceedings of the ACM Workshop on Data Mining Applied to Security, Philadelphia, PA, 2001. [30] K. Sequeira, M. Zaki, ADMIT: Anomaly-based data mining for intrusions, in: Proceedings of the 8th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, Edmonton, Alberta, Canada, pp. 386–395, 2002. Referencia bibliográfica 36 [31] V. Barnett, T. Lewis, Outliers in Statistical Data, Wiley, 1994. [32] S. Ramaswamy, R. Rastogi, K. Shim, Efficient algorithms for mining outliers from large data sets, in: Proceedings of the ACM SIGMOD International Conference on Management of Data, Dallas, TX, USA, pp. 427–438, 2000. [33] M. Breunig, H.-P. Kriegel & R.T. Ng, LOF: identifying density-based local outliers, in: Proceedings of the ACM SIGMOD International Conference on Management of Data, Dallas, TX, pp. 93–104, 2000. [34] E.M. Knorr, R.T. Ng, Algorithms for mining distancebased outliers in large datasets, in: Proceedings of the 24th International Conference on Very Large Data Bases, New York, NY, USA, pp. 392–403, 1998. [35] L. Ertöz, E. Eilertson, The MINDS - Minnesota intrusion detection system, in: Next Generation Data Mining, MIT Press, Boston, 2004. [36] W. Lee, S.J. Stolfo, Data mining approaches for intrusion detection, in: Proceedings of the 7th USENIX Security Symposium (SECURITY-98), Berkeley, CA, USA, pp. 79–94, 1998. [37] W. Lee, S.J. Stolfo, K.W. Mok, A data mining framework for building intrusion detection models, in: Proceedings of the IEEE Symposium on Security and Privacy, Oakland, CA, pp. 120–132, 1999. [38] D. Barbará, J. Couto, ADAM: a testbed for exploring the use of data mining in intrusion detection, ACM SIGMOD Record: SPECIAL ISSUE: Special section on data mining for intrusion detection and threat analysis 30 (2001) 15–24. [39] J. Case, M. Fedor, RFC 1157 - Simple Network Management Protocol (SNMP), [en Internet] disponible en: http://www.faqs.org/rfcs/rfc1157.html, accedido en: Mayo 2008. [40] K. McCloghrie, M. Rose, RFC 1156 - Management Information Base for network management of TCP/IP-based internets, [en Internet] disponible en: http://www.faqs.org/rfcs/rfc1156.html, accedido en: Mayo 2008. [41] T. Oetiker, Tobi Oetiker's MRTG - The Multi Router Traffic Grapher [en Internet] disponible en: http://oss.oetiker.ch/mrtg/doc/index.en.html, accedido en: Abril del 2008. Referencia bibliográfica 37 [42] T. Oetiker, About RRDtool, [en Internet] disponible en: http://oss.oetiker.ch/rrdtool/, accedido en: Abril 2008. [43] H. J. Kim, J. C. Na, J. S. Jang, Network Traffic Anomaly Detection based on Ratio and Volume Analysis, International Journal of Computer Science and Network Security, VOL.6 No.5B, Mayo 2000. Anexos 38 ANEXOS Anexo I Valores de tráfico almacenados en una base de datos. Anexos 39 Anexo II Pronóstico del sistema. Anexo III Número total de anomalías detectadas por el sistema. Anexos 40 Anexo IV Diagrama en bloque del sistema. Declaración de subrutinas Obtención de los valores de la base de datos, y se guardan en @valores Creación de bases de datos Si @entrada; índice ++; No Índice de @valores es par. Conteo de las anomalías; Generación de gráficos; Resultados de las anomalías encontradas @salida; índice ++; Anexos 41 Anexo V Script realizado. #!/usr/bin/perl use POSIX qw / strftime /; use RRDs; ####SUBRUTINAS CREADAS#### sub pronostico #devuelve el valor de Yt+n { $Yt=$_[0]*0.5+(1-0.5)*$_[1]; #$_[0] es Xt; $_[1] es Yt; 0.5 es alfa } sub MAD #devuelve valor de MADt+n { $MAD=abs($_[0]-$_[1])*0.5+(1-0.5)*$_[2]; #$_[0] es Xt; $_[1] es Yt; $_[2] es valor inicial de MAD; } sub for0 { $suma=$_[0]+1*$_[1]; #$_[0] es IN; $_[1] es MADt+n; n=1 } sub for1 { $resta=$_[0]-1*$_[1]; #$_[0] es IN; $_[1] es MADt+n; n=1 } sub actualizar #subrutina para actualizar las bases de datos { RRDs::update("entrada.rrd","$_[0]:$_[1]"); if ($err=RRDs::error) {print "problema actualizado la base de datos: $err\n";} RRDs::update("salida.rrd","$_[0]:$_[2]"); if ($err=RRDs::error) {print "problema actualizado la base de datos: $err\n";} Anexos 42 RRDs::update("dpsin.rrd","$_[0]:$_[3]"); if ($err=RRDs::error) {print "problema actualizado la base de datos: $err\n";} RRDs::update("dpiin.rrd","$_[0]:$_[4]"); if ($err=RRDs::error) {print "problema actualizado la base de datos: $err\n";} RRDs::update("dpsout.rrd","$_[0]:$_[5]"); if ($err=RRDs::error) {print "problema actualizado la base de datos: $err\n";} RRDs::update("dpiout.rrd","$_[0]:$_[6]"); if ($err=RRDs::error) {print "problema actualizado la base de datos: $err\n";} } sub graficos { RRDs::graph("trafico.png","--start=1213877100","--color","BACK#CCCCCC","-color","CANVAS#FFFFFF","--color","SHADEB#9999CC","--height","125","--upperlimit","100000000","--lower-limit","0","--rigid","-base","1024","DEF:in_bytes=10.12.24.254_25.rrd:ds0:AVERAGE","CDEF:in_bits=in_byt es,8,*","LINE:in_bits#00FF00:Tráfico de entrada","DEF:out_bytes=10.12.24.254_25.rrd:ds1:AVERAGE","CDEF:out_bits=out_byte s,8,*","LINE:out_bits#0000FF:Trafico de salida","--title=Tráfico de entrada y salida","-vertical-label=bit/s"); if ($err=RRDs::error) {print "problema generando el grafico:$err\n";} RRDs::graph("desviacionin.png","--start=1213877100","--end=1213897800","-color","BACK#CCCCCC","--color","CANVAS#FFFFFF","-color","SHADEB#9999CC","--height","125","--upper-limit","100000000","--lowerlimit","0","--rigid","-base","1024","DEF:in_bytes=10.12.24.254_25.rrd:ds0:AVERAGE","CDEF:in_bits=in_byt es,8,*","LINE:in_bits#00FF00:Tráfico de entrada","DEF:dpsin_bytes=dpsin.rrd:ds0:AVERAGE","CDEF:dpsin_bits=dpsin_bytes,8,* ","LINE:dpsin_bits#FF0000:Desviación superior","DEF:dpiin_bytes=dpiin.rrd:ds0:AVERAGE","CDEF:dpiin_bits=dpiin_bytes,8,* ","LINE:dpiin_bits#0000FF:Desviación inferior","--title= Tráfico de entrada con su desviación","--vertical-label=bit/s"); Anexos 43 if ($err=RRDs::error) {print "problema generando el grafico:$err\n";} RRDs::graph("desviacionout.png","--start=1213877100","--end=1213897800","-color","BACK#CCCCCC","--color","CANVAS#FFFFFF","-color","SHADEB#9999CC","--height","125","--upper-limit","100000000","--lowerlimit","0","--rigid","-base","1024","DEF:in_bytes=10.12.24.254_25.rrd:ds1:AVERAGE","CDEF:in_bits=in_byt es,8,*","LINE:in_bits#FF0000:Tráfico de salida","DEF:dpsout_bytes=dpsout.rrd:ds0:AVERAGE","CDEF:dpsout_bits=dpsout_bytes, 8,*","LINE:dpsout_bits#00FF00:Desviación superior","DEF:dpiout_bytes=dpiout.rrd:ds0:AVERAGE","CDEF:dpiout_bits=dpiout_byte s,8,*","LINE:dpiout_bits#0000FF:Desviación inferior","--title= Tráfico de salida con su desviación","--vertical-label=bit/s",”VRULE:$_[0]:FFFFFF”,”VRULE:$_[1]:FFFFFF”); if ($err=RRDs::error) {print "problema generando el grafico:$err\n";} } my $i=0; my $j=0; my $start_time=time()-27000; ####OBTENIENDO LOS DATOS DE UNA BASE DE DATOS#### my ($start,$step,$names,$data) = RRDs::fetch("10.12.24.254_25.rrd","AVERAGE","s","1213877100","-e","1213897800"); if ($err=RRDs::error) {print "problema obteniendo los datos: $err\n";} print "Start: ", scalar localtime($start), " ($start)\n"; print "Step size: $step seconds\n"; print "DS names: ", join (", ", @$names)."\n"; print "Data points: ", $#$data + 1, "\n"; print "Data:\n"; $graph_start=$start; foreach my $line (@$data) { print "$j"; print " ", scalar localtime($start), " ($start) "; Anexos 44 $start += $step; foreach my $val (@$line) { $valores[$i]=$val; printf "%12.1f ", $val; $i++; } print "\n"; $j++; } ####DIVIDIENDO LOS DATOS DE ENTRADA Y SALIDA#### my $j=0; for ($i=0;$i<=$#valores;$i++) { if (($i%2)==0) { $entrada[$j]=$valores[$i]; } else { $salida[$j]=$valores[$i]; $j++; } } ###OPCIÓN PARA COMPROBAR LOS VALORES ALMACEBADOS####. #for ($i=0;$i<=$#entrada;$i++) #{ #print "$i valores en la salida $entrada[$i]\n"; #} sleep(5); Anexos 45 ####CREANDO LAS BASE DE DATOS#### RRDs::create("entrada.rrd","-b","$graph_start","s","300","DS:ds0:GAUGE:600:0:U","RRA:AVERAGE:0.5:1:24","RRA:AVERAGE:0.5:1 :288","RRA:AVERAGE:0.5:1:2016","RRA:AVERAGE:0.5:1:8928"); if ($err=RRDs::error) {print "problema creando la base de dato: $err\n";} RRDs::create("salida.rrd","-b","$graph_start","s","300","DS:ds1:GAUGE:600:0:U","RRA:AVERAGE:0.5:1:24","RRA:AVERAGE:0.5:1, 288","RRA:AVERAGE:0.5:1:2016","RRA:AVERAGE:0.5:1:8928"); if ($err=RRDs::error) {print "problema creando la base de dato: $err\n";} RRDs::create("dpsin.rrd","-b","$graph_start","s","300","DS:ds0:GAUGE:600:0:U","RRA:AVERAGE:0.5:1:24","RRA:AVERAGE:0.5:1 :288","RRA:AVERAGE:0.5:1:2016","RRA:AVERAGE:0.5:1:8928"); if ($err=RRDs::error) {print "problema creando la base de dato: $err\n";} RRDs::create("dpiin.rrd","-b","$graph_start","s","300","DS:ds0:GAUGE:600:0:U","RRA:AVERAGE:0.5:1:24","RRA:AVERAGE:0.5:1 :288","RRA:AVERAGE:0.5:1:2016","RRA:AVERAGE:0.5:1:8928"); if ($err=RRDs::error) {print "problema creando la base de dato: $err\n";} RRDs::create("dpsout.rrd","-b","$graph_start","s","300","DS:ds0:GAUGE:600:0:U","RRA:AVERAGE:0.5:1:24","RRA:AVERAGE:0.5:1 :288","RRA:AVERAGE:0.5:1:2016","RRA:AVERAGE:0.5:1:8928"); if ($err=RRDs::error) {print "problema creando la base de dato: $err\n";} RRDs::create("dpiout.rrd","-b","$graph_start","s","300","DS:ds0:GAUGE:600:0:U","RRA:AVERAGE:0.5:1:24","RRA:AVERAGE:0.5:1 :288","RRA:AVERAGE:0.5:1:2016","RRA:AVERAGE:0.5:1:8928"); if ($err=RRDs::error) {print "problema creando la base de dato: $err\n";} ####LLAMADAS DE LAS SUBRUTINAS#### $in=$entrada[0]; $out=$salida[0]; $const_entrada=0; $const_salida=0; # valor iniciales de MAD Anexos 46 ####CONTADORES DE ANOMALÍAS Y ACTULIZACIÓN DE LAS BASES#### my $k=0; my $l=0; my $n=0; my $m=0; $tiempo= POSIX::floor(time()/300)*300-105300; #inicialización del tiempo de la base de datos de almacenamiento for($i=0;$i<=$#entrada;$i++) { if ($entrada[$i]== 0.0) { $entrada[$i]=0; } if ($salida[$i]==0.0) { $salida[$i]=0; } $j=$i+1; print "tiempo: ", scalar localtime($tiempo), " ($tiempo)\n"; print "tiempo: ", scalar localtime($graph_start), " ($graph_start)\n"; print "####VALORES INICIALES###\n"; print " Yt+$i Xt+$i print "entrada: $in $entrada[$i] print "salida: $out $salida[$i] MADt+$i\n"; $const_entrada\n"; $const_salida\n"; $MAD_entrada[$i]=&MAD($entrada[$i],$in,$const_entrada); $const_entrada=$MAD_entrada[$i]; $MAD_salida[$i]=&MAD($salida[$i],$out,$const_salida); $const_salida=$MAD_salida[$i]; $valor_entrada[$i]=&pronostico($entrada[$i],$in); $in=$valor_entrada[$i]; $valor_salida[$i]=&pronostico($salida[$i],$out); Anexos 47 $out=$valor_salida[$i]; print " print " ###Pronosticos###\n"; Yt+$j print "entrada: $in print "salida: $out MADt+$j\n"; $MAD_entrada[$i]\n"; $MAD_salida[$i]\n"; $dpsin=&for0($in,$const_entrada); $dpiin=&for1($in,$const_entrada); $dpsout=&for0($out,$const_salida); $dpiout=&for1($out,$const_salida); &actualizar($tiempo,$in,$out,$dpsin,$dpiin,$dpsout,$dpiout); if ((&for1($in,$const_entrada)) <= $entrada[$j] && (&for0($in,$const_entrada)) <=$entrada[$j] ) { print "anomalia detectada por el aumento del trafico\n"; $anomalia_in_aumento[$k]=$graph_start; $k++; } if ((&for0($in,$const_entrada)) >= $entrada[$j] && (&for1($in,$const_entrada)) >= $entrada[$j]) { print "anomalia detectada por la disminucion del trafico\n"; $anomalia_in_disminucion[$l]=$graph_start; $l++; } if ((&for1($in,$const_entrada)) <=$entrada[$j] && &for0($in,$const_entrada)>=$entrada[$j] ) { print "el valor esta en rango\n"; } Anexos 48 if ((&for1($out,$const_salida)) <= $salida[$j] && (&for0($out,$const_salida)) <=$salida[$j] ) { print "anomalia detectada por el aumento del trafico\n"; $anomalia_out_aumento[$n]=$graph_start; $n++; } if ((&for0($out,$const_salida)) >= $salida[$j] && (&for1($out,$const_salida)) >= $salida[$j]) { print "anomalia detectada por la disminucion del trafico\n"; $anomalia_out_disminucion[$m]=$graph_start; $m++; } if ((&for1($out,$const_salida)) <=$salida[$j] && &for0($out,$const_salida)>=$salida[$j] ) { print "el valor esta en rango\n"; } $tiempo+=300; $graph_start+=300; sleep(2); } &graficos (@anomalia_out_aumento, @anomalia_out_disminucion); ####OPCIÓN PARA VISUALIZAR LOS DATOS ALMACEBADOS#### #my $start_time=time()-18000; #print "\n"; #my ($start,$step,$names,$data) = RRDs::fetch("dpsin.rrd","AVERAGE","s","$start_time"); #if ($err=RRDs::error) {print "problema obteniendo los datos: $err\n";} #print "Start: ", scalar localtime($start), " ($start)\n"; Anexos 49 #print "Step size: $step seconds\n"; #print "DS names: ", join (", ", @$names)."\n"; #print "Data points: ", $#$data + 1, "\n"; #print "Data:\n"; #foreach my $line (@$data) #{ #print " ", scalar localtime($start), " ($start) "; #$start += $step; #foreach my $val (@$line) #{ #$valores[$i]=$val; #printf "%12.1f ", $val; #$i++; #} print "\n"; } print"\n"; ####RESULTADO#### print "anomalías detectadas a la entrada por el aumento del tráfico\n"; for ($i=0;$i<=$#anomalia_in_aumento;$i++) { print "",scalar localtime($anomalia_in_aumento[$i]), "\n"; } print "\nanomalías detectadas en la entrada por la disminución del tráfico\n"; for ($i=0;$i<=$#anomalia_in_disminucion;$i++) { print "",scalar localtime($anomalia_in_disminucion[$i]), "\n"; } print "\nanomalías detectadas a la salida por el aumento del tráfico\n"; for ($i=0;$i<=$#anomalia_out_aumento;$i++) { Anexos 50 print "",scalar localtime($anomalia_out_aumento[$i]), "\n"; } print "\nanomalías detectadas en la salida por la disminución del tráfico\n"; for ($i=0;$i<=$#anomalia_out_disminucion;$i++) { print "",scalar localtime($anomalia_out_disminucion[$i]), "\n"; } $total=$#anomalia_in_aumento+$#anomalia_in_disminucion+$#anomalia_out_disminucio n+$#anomalia_out_aumento+4; print "\npara un total de $total anomalías detectadas"; Glosario técnico 51 GLOSARIO TÉCNICO ANDSOM Anomalous Network-Traffic Detection with Self Organizing Maps. CPU Unidad Central de Procesamiento (Central Processing Unit). DoS Denegación de Servicios (Denial of Service). DS Dato Fuente (Data Source). EPS PostScript Encapsulado (Encapsulated PostScript). FIRE Fuzzy Instrusion Recognition Engine. GIF Formato Grafico de Intercambio (Graphics Interchange Format). GNU GPL Licencia Pública General de GNU (GNU General Public License). HTML Lenguaje de Marcado de Hipertexto (HyperText Markup Language). INTERNET Red de Redes (International Net). IP Protocolo de Internet (Internet Protocol). LOF Factor Local de Aislamiento (Local Factor Outlier). MIB Bases de Información de Administración (Management Information Base). MINDS Sistema de Detección de Intrusos Minnesota. (Minnesota Intrusion Detection System) MRTG Graficado de Tráfico de Múltiples Enrutadores (Multi Router Traffic Grapher). OID Identificador de Objetos (Object IDentifier). PCA Análisis de Componentes Principales (Principal Components Analysis). PDF Formato de Documento Portátil (Portable Document Format). Glosario técnico PERL 52 Lenguaje Práctico para la Extracción e Informe. (Practical Extraction and Report Language). PHP Pre-procesador de Hipertexto (Hypertext Pre-processor) PNG Gráficos Portables de Red (Portable Network Graphics). RFC Petición de Comentarios (Request For Comments). RRDtool Herramienta de Base de Datos Circulares (Round Robin Database tool). SNMP Protocolo Simple de Administración de Red (Simple Network Management Protocol). SVD Descomposición de Valor Singular (Singular Value Decomposition). TcL Lenguaje de Herramienta de Comando (Tool Command Language) TCP Protocolo de Transmisión de Control (Transmission Control Protocol).