UNIVERSIDAD DE LA HABANA

Anuncio
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: raulier_yedian@uclv.edu.cu
Tutor: Dr. Vitalio Alfonso Reguera
Profesor, Dpto de Electrónica y Telecomunicaciones
E-mail: vitalio@uclv.edu.cu
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).
Descargar