Detección de instrusos con OSSEC
OSSEC es una plataforma de monitorización y control de sistemas. Se trata de un sistema HIDS (Host Intrusion Detection System), es decir, un sistema de detección de intrusos. También se considera SIM (Security Incident Managament) A pesar de eso tiene más funciones, ya que tiene un servicio de log centralizado, un sistema de alertas y avisos, entre otras muchas funciones.
Entre sus principales herramientas y ventajas encontramos:
- Un servicio de log centralizado (llamado “rsyslog”)
- Mecanismo de “respuesta-activa” (con el nombre “fail2ban”)
- Un sistema de monitorización de ficheros (utiliza el nombre “tripwire”)
- Un pequeña herramienta rootkit (también llamada “rkhunter”)
- Sistema de alertas y análisis (llamado “logtash”)
- El producto es muy ligero, ya que está programado en C
¿Para que nos puede servir OSSEC?
Pues para muchas cosas:
- Saber en todo momento que está pasando en nuestros sistemas.
- Parar ataques de fuerza bruta (ftp, web, ssh, etcétera)
Como decimos por aquí «anem a seguir el fil«, esto es, concretemos un poco más. ¿qué podemos analizar?
- Servicios sobre sistemas tipo UNIX (PAM, OpenSSH, Solaris telnetd, Samba entre otros
- FTP Servers: Proftpd, Pure-FTPd, vsftp, etcétera.
- Servicios de correo: IMAP y POP3, Postfix, Sendmail, Microsoft Exchange Server
- Bases de datos: PostgreSQL y MySQL
- Servidores Web: Apache HTTP Server, IIS Web Server de Microsoft y Zeus Web Server
- Cortafuegos: iptables firewall, Solaris IP Filter, entre otros.
- Herramientas de seguridad: Symantec Antivirus, Nmap, etcétera.
La lista es bastante larga, podéis consultar su documentación oficial, aquí.
El cliente OSSEC es multiplataforma, ya que puede instalarse en sistemas GNU Linux, Solaris, Microsoft Windows , MAC OS X, WMWARE, *BSD, AIX y HP-UX. Es software libre, utiliza una licencia GPL, en su versión 2.
Instalación y requirimientos
Para trabajar con OSSEC lo debemos instalar sobre un servidor GNU Linux, tanto Ubuntu, Debian como Red Hat.
En el artículo he utilizado un sistema operativo Ubuntu Server 14.04.3 LTS en su versión de 64 bits, sobre una máquina virtualizada.
En dichos sistemas el producto necesita una serie de paquetes instalados, como por ejemplo gnu make, gcc y libc, ya que está escrito en lenguaje C. Se sugiere utilizar también openssl, pero no es obligatorio.
Instalalamos un sólo paquete, que engloba gran parte de los paquetes que necesitamos, hablo de build-essential:
sudo apt-get install build-essential
Con esto ya podemos descargar los ficheros de instalación:
wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1.tar.gz
También es recomendable descargar el fichero txt con el checksum.
wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1-checksum.txt
Utilizamos el comando cat para ver el contenidos del fichero:
cat ossec-hids-2.8.1-checksum.txt
Y veremos:
Ahora utilizamos lo comandos md5sum y sha1sum, para comprobar que coinciden los datos con el txt.
Todo OK, así que seguimos. Procedemos a descomprimir el fichero.
tar -zxvf ossec-hids-*.tar.gz (or gunzip -d; tar -xvf)
cd ossec-hids-*
sudo ./install.sh
En la última línea, tenemos el fichero install.sh, que cuando lo ejecutemos el script instalará el producto.
Nos preguntará el idioma, yo seleccionará [es] de español.
En el paso a continuación nos hace saber que debemos cumplir con una serie de requisitos.
Al aceptar con ENTER, nos preguntará si la instalación es para una agente ,para un servidor, local o ayuda. Le indicamos lo segundo.
La ubicación del directorio del programa la dejaremos por defecto, es decir, en /var/ossec.
Cuando nos pregunta si queremos notificaciones por correo electrónico le decimos que sí, y añadimos la que más nos convenga.
A partir de éste paso nos preguntará los servicios que queremos utilizar, a todos le decimos que sí.
En cualquier caso podemos moficiar los parámetros del programa, modificando el fichero ossec.conf
Si todo ha ido bien, veremos la siguiente imagen, al finalizar el proceso de instalación:
Tal y como nos indica para iniciar el programa debemos escribir:
sudo /var/ossec/bin/ossec-control start
Y ya lo tendremos listo para trabajar:
Es importante recalcar que la comunicación entre el servidor y los agentes funciona por el puerto UDP 1514, por lo que lo tenemos que tener habilitado en nuestra red.
Configurar OSSEC
Vale, ya lo tenemos instalado, y ¿ahora qué?. Primero algo de teoría. Si visitamos el directorio /var/ossec, como usuario root, si no nos dejará veremos lo siguientes directorios:
- /bin – Aquí tenemos almacenados todos los binarios ejecutables.
- /etc – Los ficheros de configuración, entre los que se encuentran ossec.conf
- /logs – Importantísimo directorio donde tenemos todos los ficheros log. Cabe resaltar ossec.log y alerts/alerts.log
- /queue – Se almacenan los ficheros de colas de proceso.
- /rules – Aquí tenemos los ficheros que utiliza el programa para generar las alertas.
- /stats – Para generar las estadísticas
- /tmp – Directorio temporal
- /var – «pid» para los procesos de OSSEC
El fichero clave para la configuración es /var/ossec/etc/ossec.conf, que se divide en varios apartados, según el servicio a configurar.
- global (global);
- rules (rules);
- syscheck (syscheck/rootcheck);
- alerts (alert);
- active-response (command/active-response);
- collector (localfile);
La sección global
En éste apartado indicamos el correo electrónico que recibirá las notificaciones y las listas blancas de IP, aquí podéis ver un ejemplo de mi configuración:
Y un poco más abajo, también dentro de la etiqueta <global> tenemos <white_list>, allí agregaremos todas las IP permitidas en la lista blanca.
Sección Collector
Lista de todos los ficheros que utilizará el programa para monitorizar. En la imagen vemos una parte, ya que es bastante extenso:
Syscheck
En ésta sección indicamos la frecuencia de los chequeos, los directorios a revisar y los que queremos excluir.
Rules
Sección donde se indican las ubicaciones de los ficheros que contienen las reglas. En principio no no se ha de modificar.
Si tenemos curiosidad, que siempre es positiva, podemos revisar los ficheros ubicador en el directorio /var/ossec/rules
Alerts
Aquí señalamos el nivel de las alertas. 0 es el nivel más bajo, considerado inútil y 16 es el más alto, considerado crítico. Depende del nivel de alerta se envía o no un correo electrónico. Funcionan los envíos a partir del nivel 7. Dicho parámetro se puede modificar.
Modemos modificar los ficheros de alerta de manera manual, ubicados en /var/ossec/rules
Instalar Agente OSSEC
El sentido de instalar el programa en un servidor es que pueda monitorizar otras máquinas.
Debemos habilitar en nuestro FIREWALL el conjunto de la red donde tenemos ubicados los servidores a controlar, para ello debemos añadir las siguientes reglas:
iptables -I INPUT -p udp --dport 1514 -s nuestra-subred/24 -j ACCEPT
iptables -I OUTPUT -p udp --sport 1514 -d nuestra-subred/24 -j ACCEPT
Para añadir el cliente utilizaremos la herramienta /var/ossec/bin/manage_agents
Debemos seguir los pasos, yo monitorizaré el servidor virtual que cree para mi artículo anterior sobre NethServer:
A posteriori nos pedirá la IP del servidor. Para que pueda acceder al servidor debemos extraer su key, por lo que volvemos a utilizar el mismo gestor, esta vez seleccionamos la opción «E«
En la parte del cliente instalaremos OSSEC, son los mismos pasos que los del servidor, que hemos tratado al principio del artículo. La única diferencia es que en el menú debemos indicar que para un agente, no para un servidor. En el siguiente paso nos pedirá la IP del servidor OSSEC. Y al finalizar ya podemos trabajar con el agente:
Para que se comunique con el agente y recoga la key del servidor utilizaremos la herramienta /var/ossec/bin/manage_agents
Importamos la key desde el servidor. Para ello pegamos la key generada anteriormente:
Para que todo funcione iniciamos OSSEC, /var/ossec/bin/ossec_control start
En la parte del servidor,a l finalizar debemos reiniciar el servicio.
/var/ossec/bin/ossec-control restart
Si queremos verificar si la conexión con el cliente está activa, podemos comprobarlo así:
/var/ossec/bin/list_agents -c
Por último, he rebajado el nivel de aviso a cinco, para que de ésta manera veamos la imagen de un mensaje recibido en nuestro correo:
Con esto lo dejamos por hoy. En la próxima veremos cómo instalar y trabajar con una interfaz gráfica vía web.
Para el artículo me he servido de las siguientes fuentes: