Por:Eliseo Ortiz Valdez OSSIM en Fedora Core 4 Este documento puede ser modificado copiado o distribuido bajo los términos de la libre documentación GNU en cualquier versión publicada por la fundación de Software Libre. Este documento fue creado por Software Libre. I. Introducción. OSSIM fue creado básicamente para solucionar un escenario como: “En el evento de que una intrusión se lleve acabo, una vez que los perímetros de defensa han sido superados por máquinas comprometidas. Existe una corriente de una conexión permanente y duradera por bastantes horas o un tiempo considerado, conexiones anomalías, Procesos externos que crean un puente entre la red interna, donde se encuentran las máquinas comprometidas, una de la otra, encontrando cada vez mas y mas anomalías en los paths del sistema. El usuario y los administradores en este caso nunca notan nada extraño en la red, y raramente identifican un ataque, nunca se dieron cuenta que se encontraron comprometidos... Analógicamente se puede poner a una persona que llega a la oficina, busca la información que se le hace importante, se la lleva obteniendo así copia, siguiendo las personas siguen con sus labores cotidianos sin percatarse de la penetración, uno puede decirse, en mi empresa no se maneja información importante, lo cual es completamente absurda puesto que no siempre es información empresarial, si no transacciones bancarias u otras que nos puedan afectar o mas aún pudiendo utilizar la empresa como puente para atacar otros sitios vulnerables” Esta tecnología tiene la ventaja detectar eventos extremamente específicos, mas sin embargo no es posible monitorear todas las alertas que se encuentren en el marco del exceso de volumen y poca viabilidad (FALSE POSITIVES = F) de otra manera no es posible detectar conexiones de un estado complejo (FALSE NEGATIVES = V). Lo cual este ultimo de mi punto mas humilde de pensamiento digo que si lograron entrar a tu red o sistema de la manera mas compleja no conocida, se lo merecieron y no hay objeción alguna. Es decir en palabras mundanas ni tan bajo para detectar malas configuraciones ni tan inteligente para detectar ataques muy eficientes y originales. II. OK Pero que es OSSIM? OSSIM es una distribución basado en la filosofía del open source, la cual esta integrada para proveer una infraestructura de monitoreo de seguridad. (Perteneciente a la característica S del modelo FCAPS). Su objetivo es proveer de un framework para centralizar, organizar, detectar e implementar un sistema de monitoreo y despliegue de eventos. Básicamente el sistema incluye las siguientes herramientas de monitoreo: a. Panel de control para un despliegue de alto nivel b. Monitoreo de medio nivel para riesgos y actividades c. Monitoreo para bajo nivel y consola de análisis forense ci. Estas herramientas utilizan nuevas habilidades desarrolladas en SIM post-procesamiento, del cual el objetivo es implementar detección de sensibilidad y reabilidad: a. Correalización b. Priorización c. Asignación de Riesgos Post-procesamiento es un numero de detectores y monitores ya conocidos como el mejor tipo de administración conocida en esta distribución a. IDS b. Detector de Anomalias c. Firewalls d. Muchos mas tipos de monitoreos Para configurar todos los modulos tenemos el Framework, el cual nos permite manejar de manera inventaria para definir: topología, políticas de seguridad, reglas de correlación, y enlazarnos para varios sistemas de integración. III. FUNCIONABILIDAD Para entender de que es lo que OSSIM nos ofrece debemos de definir funcionabilidad usando una forma de gráfico simplificado con los siguientes niveles. Fig. 1. Diagrama de funcionabilidad Las siguientes funcionabilidades se citan de manera general acontinuación: a. Detector de Patrones. Ejemplo de un sistema de detección de intrusos (IDS) , el cual es capaz de detectar patrones definidos usando reglas de asignación b. Detector de Anomalias. Tiene la habilidad de detectar anomalias mas reciendtes que los patrones . Este aprende automáticamente acorde a las situaciones dadas y nos puede dar una alerta cuando un modo de ser se desvia mucho de lo que el reconoce como “normal” c. Centralización y Normalización. Estos proporcionan una unificación de eventos de seguridad para un sistema crítico a través de una organización en un único formato o solamente desde una consola d. Asignamiento de prioridades. La prioridad de una alerta debe de depender de la topología y de los sistemas de organización que se hayan determinado. La razón de esto se muestra mas claramente en estos ejemplos. i. Si una máquina esta corriendo sistema operativo UNIX con Apache Web Server recibe una alerta acerca un ataque que le corresponde a Microsoft IIS, la alerta debe de ser despreciada, ii. Si un usuario tiene una sospechosa conexión a un servidor, el sistema deberá de ser: 1. Dando una máxima prioridad si la persona es externa al servidor 2. Dando baja prioridad si el usuario es un interno y esta atacando un servidor de impresión... jajajaja que tipo mas nefasto 3. Descartar si el usuario es alguien que normalmente checa el desarrollo de un servidor, ej. sysadmin e. Asignamiento de riesgos. La importancia de darle o no a un evento se da dependiendo de los siguientes tres valores: i. El valor de tener configuraciones con el evento ii. El trato que representa para el evento iii. La probabilidad de que el evento ocurra f. Correlación. Este se define como un algoritmo que ejecuta una operación de entrada de datos y regresa una salida de datos. El cual trabaja recolectando información y la monitorea de manera parcial, posteriormente este ilumina pequeñas areas a través del espectro de toda la información que realmente nos interesa. g. Monitores. Este checa las siguientes anomalías: i. Monitoreo de riesgos. Despliega información dado por el algoritmo CALM . El cual mide los niveles de riesgos de Compromiso y Ataques ii. Uso de sesión y control de políticas. Provee información como numero de bytes transmitidos al día (IPTRAF), actividad de los usuarios, y monitoreo de sesiones en la red iii. Monitor de Paths. Monitorea los paths que son usados en la red por diferentes máquinas. Identificando ataques de varias máquinas (DOS) o identificando mapeo de puertos o redes por medio de protocolos (TCP, ICMP, UDP) h. Consola de Análisis forense. Este nos provee acceso generada y guardada por el colector de eventos. Esta consola es un buscador que opera en la base de datos, permitiendo al administrador analizar los eventos en relación a elementos críticos de la red a posteriori de una manera centralizada i. Panel de Control. Nos permite visualizar una situación de seguridad de alto nivel . Este monitorea una seria de undicaciones que manejan el estado de organización en reñación a la seguridad. IV. ARQUITECTURA Los sitesmas de procesamiento se dividen en dos pasos básicos, cada uno corresponde a una parte de la arquitectura: i. Pre-Procesamiento. Llevado a cabo por los monitores y detectores ii. Post-Procesamiento. Ejecutado en una consola centralizada El siguiente diagrama es una manera general de esquematizar la arquitectura: fig. 2. Arquitectura ossim V. FLUJO DE DATOS Este proporciona un mejor entendimiento de como cada producto es integrado, OSSIM ofrece una descripción paso por paso de un flujo de dato empezando por la generación de un evento. La siguiente gráfica nos muestra el flujo de datos: fig.3. Diagrama de flujo del OSSIM VI. DISTRIBUCION DE LA ARQUITECTURA La distribución de OSSIM es mas que un producto, significa la integración que toma precedencia a través de un desarrollo, La arquitectura de OSSIM se encuentra en dos niveles: Nivel de Kernel: a) Define la estructura de datos, b) Provee una interfaz para hablar con diferentes productos c) Trabaja en lo que comúnmente se llama Pre-Procesamiento d) Implementa un panel de control Productos “Third-Party” a) Productos Open Source el cual puede ser modificado o parcheado por propia voluntad b) “Four-Pay-Products” . El cual no es incluido en la distribución y no puede ser parcheado o modificado...$$$ VII. Instalación y configuración OSSIM Crear un archivo para los repositorios de ossim en in /etc/yum.repos.d/ que se llame ossim.repo !"##$%& '(%)*+,,-.!/01 2(#)345*67789::;)#<(7"%$=4"=>)773475)<="%:(7"%$=?7)#7$'@:"##$%:A4)5)(#)B)4: )'(25)C*D @8@=6)=>*E Deberiamos de tener habilitados los repositorios fedora-extras en la configuración del Yum. Instalando ossim-mysql: F!G3%!$'#7(55!"##$%?%G#H5 Inicializar el demonio mysqld: F!:)7=:$'$7<C:%G#H5C!#7(47 Configurar la base de datos como root: F!%G#H5(C%$'!?3!4""7!8(##I"4C!G"34J#)=4)7J8(##I"4C Crear las siguientes bases de datoss: F!%G#H5!?3!4""7!?8 %G#H5K!=4)(7)!C(7(2(#)!"##$%L %G#H5K!=4)(7)!C(7(2(#)!"##$%J(=5L %G#H5K!=4)(7)!C(7(2(#)!#'"47L %G#H5K!)M$7L Crear las siguientes tablas en las siguientes bases de datos: F!=(7!:3#4:#6(4):"##$%:C2:=4)(7)J%G#H5<#H5!N !!!!:3#4:#6(4):"##$%:C2:"##$%J="'O$@<#H5!N !!!!:3#4:#6(4):"##$%:C2:"##$%JC(7(<#H5!N !!!!:3#4:#6(4):"##$%:C2:4)(5#)=34)<#H5!P!N !!!!%G#H5!?3!4""7!"##$%!?8 F!=(7!:3#4:#6(4):"##$%:C2:=4)(7)J#'"47J725#J%G#H5<#H5!N !!!!:3#4:#6(4):"##$%:C2:=4)(7)J(=$CJ725#J%G#H5<#H5!N !!!!P!%G#H5!?3!4""7!#'"47!?8 VII.I. Install Ossim Server Instalación del paquete ossim-server y sus dependencias : F!G3%!$'#7(55!"##$%?#)4B)4 Editar /etc/ossim/server/config.xml para dar de alta las propiedades en las bases de datos: !!??!:)7=:"##$%:#)4B)4:="'O$@<M%5!??!& << Q#)'#"4!'(%)*R6)4)J@")#JG"34J#)'#"4J'(%)R!$8*R#)'#"4J$8R!$'7)4O(=)*R)76ER:K << QC(7(#"34=)!'(%)*R"##$%S,R!84"B$C)4*R.G,TUR !C#'*RV+WX*;;EYLZ,[W*4""7LV\,,]+WS*G"348(##I"4CLS\X\^\,[*"##$%L_+,X*5"=(56"#7R:K QC(7(#"34=)!'(%)*R#'"47S,R!84"B$C)4*R.G,TUR !C#'*RV+WX*;;EYLZ,[W*4""7LV\,,]+WS*G"348(##I"4CLS\X\^\,[*#'"47L_+,X*5"=(56"#7R:K Inicializar el servidor Ossim : F!"##$%?#)4B)4!?C!?=!:)7=:"##$%:#)4B)4:="'O$@<M%5 VII.II. Install Ossim agent: Instalar el paquete de Ossim agent y sus dependencias: F!G3%!$'#7(55!"##$%?(@)'7!"##$%?37$5# Dar de alta el agente de configuración y editar el archivo /etc/ossim/agent/config.xml: !!??!:)7=:"##$%:(@)'7:="'O$@<M%5!??!& Q`??!W)85(=)!Dab<E<E<D!I$76!G"34!#)'#"4!-8!??K Q`[cX-Xd!!!#)'#"4!!!!!RDab<E<E<DR!K Q`??!S)O(357!')7I"4>!$'7)4O(=)!??K Q`[cX-Xd!!!!$'7)4O(=)!!R)76ER!K Q`??!S)O(357!+,,-.!C(7(2(#)!="'')=7$"'!eC296"#79C2'(%)93#)498(##f!??K Q`[cX-Xd!!!!"##$%JC2!!!R%G#H595"=(56"#79"##$%94""79G"34"##$%C28(##R!K Q`??!W)85(=)!5"=(56"#7!I$76!G"34!#)4B)4!-8!??K Q`[cX-Xd!!!!#)4B)4$8!!!R5"=(56"#7R!K Inicializar el agente Ossim: F!"##$%?(@)'7!?C!?=!:)7=:"##$%:(@)'7:="'O$@<M%5 VII.III. Install Ossim agent plugins Snort. Instalación del Snort: F!G3%!$'#7(55!#'"47?"##$%?%G#H5 Editar el archivo /etc/snort/snort.conf y configurar los siguientes valores: !!??!:)7=:#'"47:#'"47<="'O!??& << B(4!_+.[Jc[X!!Dga<DYh<E<E:DY& B(4![iX[Wc\UJc[X!`A_+.[Jc[X << F!#85$77)C!$'!7I"!5$')#!O"4!4)(C(2$5$7G "37837!C(7(2(#)9!(5)47j!%G#H5j!3#)4*4""7!8(##I"4C*G"34C28(##!C2'(%)*#'"47 6"#7*G"34C26"#7!#)'#"4J'(%)*G"34J#)'#"4J$8!5"@O$5)*O(#7<5"@ << F!!#$!#)!H3$)4)!7)')4!)5!#"8"47)!C)!3'!(4=6$B"!B(5$C"!#8(C)!"27)')4!3'!(4=6$B" F!!BJ5$C"!#8(C)<="'O!O$5) F!!e8"4!)k)%85"$!C)#C)!5(#!O3)'7)#!C)!5(!="'74$23=$J'!C)!5"#!8(H3)7)#!"##$%f $'=53C)!#8(C)<="'O Comentar la linea que contiene ALERTMODE= fast en el archivo /etc/sysconfig/snort Checar el Bleeding edge de snort de la pagina oficial y actualizare. El rango falso positivo es extremadamente bajo para pequeños signos que hayan sido probados y son bastantes utilespara nosotros: F!=C!:)7=:#'"47:435)#: F!I@)7!67789::III<25))C$'@#'"47<="%:25))C$'@?(55<435)# F!)=6"!R$'=53C)!NAWZU[JV\X_:25))C$'@?(55<435)#R!KK!:)7=:#'"47:#'"47<="'O Inicializar el demonio de snort: F!:)7=:$'$7<C:#'"47C!#7(47 F!=6>="'O$@!??5)B)5!;1l!#'"47C!"' Ntop Instalar Ntop: F!G3%!$'#7(55!'7"8?"##$% Define los passwords del usuario de administrador: F!'7"8!?3!'7"8 KK!V5)(#)!)'7)4!76)!8(##I"4C!O"4!76)!(C%$'!3#)49 F!m0 F!:)7=:$'$7<C:'7"8!#7(47 F!=6>="'O$@!??5)B)5!;1l!'7"8!"' Ir a http://localhost:3000/ para ver Ntop en acción. Activar el plugin rrdPlugin en Admin_plugins. Dar click en Host en Data Dump y especificar la mascara de red en el filtro de hosts. Otros plugins As simple as: F!G3%!$'#7(55!8EO!(48I(7=6!8(C#!7=874(=> VII.IV. Install Ossim framework Instalar el paquete phpgacl: F!G3%!$'#7(55!868@(=5 La ultima versión de phpgacl incluyephpgacl/gacl.ini.php en vez dephpgacl/admin/gacl_admin.inc.php. De la misma manera editar el archivo que se encuentra en /usr/share/phpgacl/gacl.ini.php Para jalarlo: ossim-server -d -c /etc/ossim/server/config.xml /usr/bin/python /usr/bin/ossim-framework -d Editar el archivo phpgacl/gacl.class.php !!??!:3#4:#6(4):868@(=5:@(=5<=5(##<868!??!& << B(4!AJC2J7G8)!*!n%G#H5nL << B(4!AJC2J3#)4!*!n4""7nL << B(4!AJC2J8(##I"4C!*!nG"34C28(##I"4CL << B(4!AJC2J'(%)!*!n"##$%J(=5nL << B(4!AJC2J7(25)J84)O$M!*!nnL Ahora editart /usr/share/phpgacl/admin/gacl_admin.inc.php: !!??!:3#4:#6(4):868@(=5:(C%$':@(=5J(C%$'<$'=<868!??!& << nC2J7G8)n!*K!n%G#H5nj nC2J6"#7n!*K!n5"=(56"#7nj nC2J3#)4n!*K!n4""7nj nC2J8(##I"4Cn!*K!nG"34C28(##I"4Cnj nC2J'(%)n!*K!n"##$%J(=5nj Crear el directorio y darle permisos de escritura para el servidor web phpgacl/admin/templates_c: F!%>C$4!:3#4:#6(4):868@(=5:(C%$':7)%85(7)#J= F!=6"I'!?W!(8(=6)9(8(=6)!:3#4:#6(4):868@(=5:(C%$':7)%85(7)#J= Inicializar httpd: F!:)7=:$'$7<C:6778C!#7(47 F!=6>="'O$@!?5)B)5!;1l!6778C!"' Ir a http://tuhost/phpgacl/setup.php y checar si tiene la configuración correcta. Fig. 4. Vista de la configuración phpgacl Instalar las dependencias del paquete Install ossim-framework: F!G3%!$'#7(55!"##$%?O4(%)I"4> Configurar el archivo de configuración del framework y editar el archivo: /etc/ossim/framework/ossim.conf: !!??!:)7=:"##$%:O4(%)I"4>:"##$%<="'O!??!& << (C"C2J8(76*:3#4:#6(4):(C"C2: << "##$%J8(##*"##$%C28(## << 868@(=5J8(##*868@(=58(## Editar /etc/php.ini y configurar el include_path, configurar de la misma manera los tipos de errores que sean desplegados: Aproximadamente en la linea 491 se encuentra algo asi: ; UNIX: "/path1:/path2" ;include_path = ".:/php/includes" ; ; Windows: "\path1;\path2" ;include_path = ".;c:\php\includes" se pone algo asi: [ -- /etc/php.ini -- ] .. include_path = "/usr/share/ossim/include" ... Configurar la base usando el programa de configuración en http://tu host/base/ Inicializar el Framework Start ossim-framework y reiniciar httpd: F!"##$%?O4(%)I"4>!?C F!:)7=:$'$7<C:6778C!4)#7(47 fig. 6. Primera parte de la configuración base fig.7. Segunda parte configuración base fig. 7. Tercera parte configuración base fig. 8. Cuarta parte configuración base Accesar el framework [ http://tu host/ossim/ ] e ir a la configuración Configuration_Main para dar de alta todos los passwords de configuración. También se debe de tener configurado la base para evitar la configuración básica en vez del acid. Fig.9. Inicio OSSIM En dado caso que se quieran reiniciar los servicios manualmente, una vez configurando base , phpgacl y ntop introducir los siguientes comandos a consola: [root@localhost ~]# service snortd start Starting snort: [ OK ] [root@localhost ~]# service ntop start Starting ntop: Processing file /etc/ntop.conf for parameters... Fri Mar 31 20:00:08 2006 NOTE: Interface merge enabled by default Fri Mar 31 20:00:08 2006 Initializing gdbm databases NOTE: --use-syslog, no facility specified, using default value. Did you forget the =? [ OK ] [root@localhost ~]# ossim-framework -d OSSIM Framework: Forking into background... [root@localhost ~]# ossim-server -d -c /etc/ossim/server/config.xml /usr/bin/python /usr/bin/ossim-framework -d [root@localhost ~]# service httpd restart Stopping httpd: Starting httpd: [ OK ] [ OK ] VII.V. Install OSSIM utils El paquete de ossim-framework depende de las uilidades, por lo tanto si tienes instaldo el paquete ossim-framework se debe de tener instalado. Si se quiere instalarlo de otro host: F!G3%!$'#7(55!"##$%?37$5# VII.VI. Install OSSIM contrib (optional) El paquete de ossim-contrib contiene un set de parches,ejemplos de archivos de configuración usados por la distribución de ossim. Este paquete es solamente usado por propositos de desarrollo. Sin embargo si se quiere instalar: F!G3%!$'#7(55!"##$%?="'74$2 VIII. El OSSIM en acción fig. 10. El OSSIM en acción