monitoreo de redes linux capítulo 08
TRANSCRIPT
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 2
Capítulo 08 - OSSEC
ÍNDICE
HIDS o Host IDS 3Instalación de Ossec 5Procesos 8Instalación de la interfaz gráfica 8Eliminación de alarmas innecesarias y testing 10Configurar alertas por mail 11Configurando Ossec para que almacene MySQL 12Configuración de Ossec como servidor con agentes 15Configurando el agente en el equipo monitoreado 16
Suscribite a nuestro Twitter:twitter.com/CarreraLinuxAr
Suscribite a nuestro Facebook:www.facebook.com/carreralinuxar
Suscribite a nuestro Blog:blog.carreralinux.com.ar
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 3
Capítulo 08 - OSSEC
HIDS o Host IDS
En la clase anterior pudimos ver un ejemplo de NIDS, que como anticipamos, nos
cuida “de puertas afuera del host”. Durante esta clase vamos a ver un HIDS y como
ejemplo de HIDS vamos a utilizar el OSSEC.
La principal función es controlar la in-
tegridad de los archivos del sistema para
detectar cambios en los mismos, controlar
los logs del sistema para avisar cuando está
ocurriendo algo que no es común como, por
ejemplo, intentos fallidos de login en al-
guna cuenta de usuarios.
Aparte, OSSEC puede configurarse para almacenar estos eventos y logs en una base
MySQL, para luego setear ciertos comandos como respuestas y transformarlo en un
Intrusion Prevention System. Esto significa que ejecutará funciones ante la detección
de ciertas amenazas.
OSSEC es multiplataforma. ¿Qué significa esto? Que puede correr en Linux, AIX,
BSD. También en OS como Mac OSX y Windows. Aparte de esto nos permitirá rea-
lizar controles sobre máquinas virtuales.
Suscribite a nuestro Twitter:twitter.com/CarreraLinuxAr
Suscribite a nuestro Facebook:www.facebook.com/carreralinuxar
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 4
Ossec se va a componer de dos elementos principales: un servidor y agentes.
Este servidor recibirá los eventos que generarán los clientes, existen clientes para
plataformas Mac, Windows y Linux.
Esto es importante porque los HIDS los veremos ejecutados
bastante en lo que son máquinas de usuarios finales.
Al momento de instalar tenemos diferentes modos de instalación OSSEC:
· Local, tanto agente como servidor se encontrarán en la misma máquina.
· Agente, que es un pequeño programa o programas que va a estar instalado en el
sistema que queremos monitorear y colecta información en tiempo real para forwar-
dearsela al manager para análisis. Este es el que instalaremos en los clientes Linux
que abordaremos más adelante.
· Agentless, es para sistemas donde no se puede instalar un agente, OSSEC permite
chequear la integridad de los archivos. Es muy útil para chequear, por ejemplo, fi-
rewalls o routes donde no se puede instalar OSSEC.
· Server, o una instalación del servidor para luego conectar este con los distintos
agentes que estén corriendo en los equipos que hay en la red. Esta es la pieza funda-
mental porque chequea la integridad de los archivos, base de datos, eventos, etc. La
mayoría de la configuración se conserva centralizada en el manager. Esto deriva en
una más fácil administración.
Suscribite a nuestro Twitter:twitter.com/CarreraLinuxAr
Suscribite a nuestro Facebook:www.facebook.com/carreralinuxar
Suscribite a nuestro Blog:blog.carreralinux.com.ar
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 5
Básicamente, así sería el diagrama completo:
Instalación de Ossec
Instalaremos en dos partes. La primera parte hace referencia
a la instalación del server y la segunda a lo que son los
clientes.
Primero vamos a tener que descargar el código fuente desde la página:
# cd /opt
# wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.2.tar.
gz
# tar -zxvf ossec-hids-2.8.2.tar.gz
# mv ossec-hids-2.8.2 ossec-hids
Ingresamos al directorio, instalamos las dependencias necesarias para des-
pués correr el script de instalación:
# cd ossec-hids
# apt-get install -y make gcc
# ./install.sh
01
02
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 6
Seleccionamos el idioma.
Luego, el modo de instalación. Seleccionamos server.
Seteamos el directorio de trabajo e instalación de OSSEC, dejaremos el que
viene por defecto /var/ossec.
Configuramos parámetros de envío de alertas por mail. Por ahora pongamos
que NO.
Agregamos el servidor de integridad.
Agregamos check de rootkit.
Activamos la respuesta activa.
Desactivamos respuesta de firewall.
No agregamos IP a la lista blanca.
Habilitamos syslog.
En este punto iniciará la compilación e instalación.
03
05
06
07
08
09
10
11
12
04
Suscribite a nuestro Twitter:twitter.com/CarreraLinuxAr
Suscribite a nuestro Facebook:www.facebook.com/carreralinuxar
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 7
Los directorios que componen la instalación de OSSEC son los siguientes:
1.- /var/ossec/bin Binarios usados por OSSEC.
2.- /var/ossec/etc Archivos de configuración.
3.- ossec.conf El archivo principal de configuración.
4.- internal_options.conf Configuraciones adicionales.
5.- decoders.xml Decoders usados para normalizar los logs de OSSEC.
6.- client.keys Claves de autenticación entre cliente y servidor.
7.- /var/ossec/logs Logs relacionados con OSSEC.
8.- ossec.log Archivo principal de log de OSSEC.
9.- alerts/alerts.log Logs de alerta de OSSEC.
10.- active-responses.log Logs del módulo de respuesta activa de OSSEC.
11.- /var/ossec/queue Archivos de cola de operaciones de OSSEC.
12.- agent-info Información específica de los agentes.
13.- syscheck Chequeos de integridad de los archivos monitoreados por OSSEC.
14.- rootcheck Información de políticas y rootkits de OSSEC.
15.- rids ID’s de mensajes de los agentes.
16.- /var/ossec/stats Información estadística de OSSEC.
17.- var/ossec/rules Directorio que contiene las reglas usadas por OSSEC.
Las reglas matchean con algún patrón de log especificado en un decoder.
Suscribite a nuestro Twitter:twitter.com/CarreraLinuxAr
Suscribite a nuestro Facebook:www.facebook.com/carreralinuxar
Suscribite a nuestro Blog:blog.carreralinux.com.ar
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 8
Procesos
Ossec no es un solo proceso sino que son
varios procesos que controlan distintos as-
pectos de Ossec.
Los procesos que corren Ossec son los siguientes:
1.- Analysisd proceso principal, hace todo el análisis. atiende en udp1514
2.- Remoted recibe logs remotos desde los agentes
3.- logcollector lee los archivos de logs (syslog, win event log, etc)
4.- agentd reenvía los logs locales al server
5.- maild envía mails con alertas
6.- execd encargado de las respuestas activas
7.- monitord monitorea el estado del agente
8.- dbd gestor de bases de datos usado por o/ssec.
Una vez hecho esto, iniciemos OSSEC:
# ln -s /opt/ossec-hids /opt/ossec
# /etc/init.d/ossec start
Instalación de la interfaz gráfica
Como veníamos viendo hasta ahora, lo que es interfaz gráfica es una web que se
encuentra separada del motor de base de datos. O sea, vamos a tener un frontend
completamente aparte de lo que es el backend que hace funcionar a OSSEC.
Instalamos el apache:
# apt-get install apache2 libapache2-mod-php5
Luego vamos a descargar la aplicación:
# cd /tmp
# wget -U ossec http://www.ossec.net/files/ossec-wui-0.3.tar.gz
01
02
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 9
Luego vamos a copiarlo, descomprimirlo y hacer un link simbólico para que la
URL sea más fácil de recordar:
# cp /tmp/ossec-wui-0.3.tar.gz /var/www/html
# cd /var/www/html
# tar -zxvf ossec-wui-0.3.tar.gz
# ln -s ossec-wui-0.3 /var/www/html/ossec
Ahora vamos a correr el script de instalación:
# cd /var/www/html/ossec
# ./setup.sh
Nos pedirá un usuario y contraseña de administración. En mi caso coloco ad-
min y linux. Luego agregamos el usuario www-data al grupo Ossec para que
tenga privilegios sobre los archivos de Ossec:
# usermod -aG ossec www-data
Después vamos a corregir algunos permisos sobre el directorio tmp de la ins-
talación de la wui, y vamos a cambiarle también el grupo de pertenencia para
que el servidor Apache pueda tener acceso:
# chmod 770 /var/www/html/ossec
# chgrp -R www-data /var/www/html/ossec/
Vamos a configurar el PHP del server para aumentar un poco más el tiempo
de ejecución de un script y el límite de memoria. Esto lo hacemos porque estos
parámetros son los mínimos que nos exige la interfaz gráfica de Ossec:
# vi /etc/php5/apache2/php.ini
03
04
05
06
07
Suscribite a nuestro Twitter:twitter.com/CarreraLinuxAr
Suscribite a nuestro Facebook:www.facebook.com/carreralinuxar
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 10
Una vez dentro, seteamos los siguientes valores:
max_execution_time = 180
max_input_time = 180
memory_limit = 128M
Y reiniciamos el server para que tome los cambios:
/etc/init.d/apache2 restart
Ahora deberíamos ser capaces de acceder desde un browser a la interfaz web
de ossec-wui:
http://ip_server/ossec
Eliminación de alarmas innecesarias y testing
Una vez que nos aseguramos que tenemos corriendo Ossec debemos empe-
zar a pulirlo, y para esto vamos a eliminar las alarmas innecesarias. Abramos
el siguiente archivo:
# vi /var/ossec/etc/ossec.conf
Y en mi caso, dentro de la sección rules dejaremos lo siguiente:
<rules>
<include>rules_config.xml</include>
<include>sshd_rules.xml</include>
<include>syslog_rules.xml</include>
<include>web_rules.xml</include>
<include>apache_rules.xml</include>
<include>postfix_rules.xml</include>
</rules>
08
09
10
01
02
Suscribite a nuestro Blog:blog.carreralinux.com.ar
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 11
Hacemos un restart de ossec
# /etc/init.d/ossec restart
Y cambiamos la password de root para testear. Revisemos lo que nos muestra la
interfaz:
Como podemos observar, en este caso lo que sucede es que
cambió el MD5sum del archivo shadow que indica el cambio de
password.
Configurar alertas por mail
Vamos a tener diferentes niveles de gravedad para Ossec. Pasan de 1 a 16 de-
pendiendo de la gravedad. Por defecto el valor es de 7 en adelante.
Para que podamos enviar mails a una cuenta de correo vamos a editar el archivo de
configuración principal de Ossec que es /var/ossec/etc/ossec.conf
Vamos a buscar la sección “global” y ahí editamos como sigue:
<global>
<email_notification>yes</email_notification>
<email_to>[email protected]</email_to>
<smtp_server>ip_server smtp</smtp_server>
<email_from>[email protected]</email_from>
</global>
03
01
Suscribite a nuestro Facebook:www.facebook.com/carreralinuxar
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 12
Y luego, en la sección de alertas seteamos el nivel para el email:
<alerts>
<log_alert_level>1</log_alert_level>
<email_alert_level>7</email_alert_level>
</alerts>
Una vez hecho esto, solo queda reiniciar:
# /var/ossec/bin/ossec-control restart
Algo importante es que no tiene soporte para validación de
usuario y password de correo saliente.
Configurando Ossec para que almacene MySQL
Hasta ahora solo está guardando en logs los evento; pero nosotros queremos
que guarde en una base de datos. Para esto, primero debemos asegurarnos
que fue compilada con soporte para base de datos. Esto lo chequeamos eje-
cutando:
# /var/ossec/bin/ossec-dbd -V
Probablemente dé el siguiente error:
“Compiled without any Database support”
O no nos informe nada. Si este es el caso debemos de recompilar e instalar el
soporte para base de datos. Primero las librerías de desarrollo de MySQL:
# apt-get -y install libmysqld-dev mysql-client mysql-server
# ln -s /usr/lib/mysql /usr/local/lib
02
03
01
02
Suscribite a nuestro Twitter:twitter.com/CarreraLinuxAr
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 13
El último enlace simbólico se refiere a que Ossec para su compilación buscará
las librerías de desarrollo de MySQL en la carpeta /usr/local/lib. Luego vamos
a recompilar Ossec, previo seteo de la base de datos:
# cd /opt/ossec/src
# make setdb
# ./install.sh
Cuando nos pregunte, lo actualizaremos sin actualizar las reglas. Ahora active-
mos la base el soporte de base de datos:
# /var/ossec/bin/ossec-control enable database
# /var/ossec/bin/ossec-dbd -V
Compiled with MySQL support.
Como vemos, ahora si tiene soporte. Ahora, con esto habilitado creamos la
base de datos de Ossec para nuestro server:
# mysql -u root -plinux
mysql> create database ossec;
Y vamos a crear un usuario llamado ossecuser con password ossecpass para
acceder a la base de datos de Ossec:
mysql> grant INSERT,SELECT,UPDATE,CREATE,DELETE,EXECUTE on os-
sec.* to ossecuser@localhost;
mysql> set password for ossecuser@localhost=PASSWORD(‘osse-
cpass’);
mysql> flush privileges;
mysql> quit
03
04
05
06
Suscribite a nuestro Twitter:twitter.com/CarreraLinuxAr
Suscribite a nuestro Facebook:www.facebook.com/carreralinuxar
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 14
Vamos a importar la configuración de tablas y base de datos. O sea, lo que hi-
cimos hasta ahora fue crear la base de datos y el usuario que va a administrar
la BBDD de Ossec.
# mysql -uroot -plinux ossec < /opt/ossec/src/os_dbd/mysql.schema
Vean que creamos un usuario particular para el caso y no el de
administración por un tema de seguridad.
Ahora nos resta configurar para que Ossec pueda acceder a la base de datos.
Esto se logra modificando la variable database. Si no esta vamos hasta el final
del archivo:
# vi /var/ossec/etc/ossec.conf
<database_output>
<hostname>localhost</hostname>
<username>ossecuser</username>
<password>ossecpass</password>
<database>ossec</database>
<type>mysql</type>
</database_output>
Y listo. Solo nos restará reiniciar Ossec. Para probar que funciona, cambia el
pass y revisaremos primero la interfaz:
# /var/ossec/bin/ossec-control enable database
# /etc/init.d/ossec restart
Nuevamente si hacermos el cambio de password, podemos verlo en el panel:
# mysql -uossecuser -possecpass ossec
> select * from data;
08
09
10
07
Suscribite a nuestro Twitter:twitter.com/CarreraLinuxAr
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 15
Configuración de Ossec como servidor con agentes
Lo primero que debemos hacer es agregar al agente dentro del server; o sea,
vamos a agregar la autenticación del agente. De esta manera vamos a darle las
credenciales al agente para que se valide contra el server:
# /var/ossec/bin/manage_agents
Presionamos “A: add an agent”.
Introducimos un nombre al agente.
Introducimos la dirección IP del agente que puede ser IP fija, un rango con
máscara, o “any” cuando la IP cambia. Esta última opción sirve mucho para
cuando la máquina a monitorear se encuentra fuera.
Introducimos un ID de tres dígitos a partir de 001 (el 000 es el server) y confir-
mamos.
Ahora que el agente está creado, vamos a extraer la key del agente para insta-
larlo en el cliente. Volvemos a ejecutar manage_agents:
# /var/ossec/bin/manage_agents
Presionamos “E: extract key for an agent”.
Introducimos el numero de id del agente.
Nos dará información del agente, con su “agent key information”, por ejemplo:
MDAyIGFnZW50MSAxOTIuMTY4LjIuMC8yNCBlNmY3N2
-->RiMTdmMTJjZGRmZjg5YzA4ZDk5MmQ4NDE4MjYwMjJk
-->N2ZkMzNkYzZiOWE5NWY4MzU5YWRlY2JkY2Rm
Reiniciamos Ossec para que tome los cambios:
# /etc/init.d/ossec restart
01
02
03
05
04
06
07
09
08
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 16
Configurando el agente en el equipo monitoreado
Ahora vamos al equipo a ser monitoreado e instalamos el agente. Es muy pa-
recido a lo que hicimos en el server:
# cd /tmp
# wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.2.tar.gz
# cp /tmp/ossec-hids-2.8.2.tar.gz /opt
# cd /opt
# tar -xvzf ossec-hids-2.8.2.tar.gz
# cd ossec-hids-2.8.2
# apt-get update && apt-get -y install gcc make && ./install.sh
Es importante tener en cuenta que en un momento nos preguntará la dirección
IP del sever NMS. Una vez finalizado ejecutamos:
# /var/ossec/bin/manage_agents
Introducimos “I: import key from server”.
Pegamos la key que traemos del server cuando la pida.
Confirmamos y reiniciamos el agente:
# /var/ossec/bin/ossec-control restart
¡Y todo listo! Las claves se guardan en el server y cliente dentro de:
# more /var/ossec/etc/client.keys
Y para ver los clientes que tenemos activos simplemente ejecutamos, dentro
del NMS:
# /var/ossec/bin/list_agents -a
01
02
03
04
05
06
07
Suscribite a nuestro Facebook:www.facebook.com/carreralinuxar
MONITOREO DE REDES LINUX · Capítulo 08
blog.carreralinux.com.ar 17
Para eliminar un agente, simplemente ejecutamos:
# /var/ossec/bin/manage_agents
En el server, presionamos R, y tipeamos el ID del agente a remover. Para probar
el funcionamiento, nuevamente un cambio de password deriva en una alarma:
En la parte superior derecha tenemos en Available agents el
agente que acabamos de agregar.
10
11
Suscribite a nuestro Twitter:twitter.com/CarreraLinuxAr
Suscribite a nuestro Facebook:www.facebook.com/carreralinuxar
Suscribite a nuestro Blog:blog.carreralinux.com.ar