17
MONITOREO DE REDES LINUX · Capítulo 08 blog.carreralinux.com.ar 1

MONITOREO DE REDES LINUX Capítulo 08

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

MONITOREO DE REDES LINUX · Capítulo 08

blog.carreralinux.com.ar 1

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