@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

implementar-soc-instalacion-suricata-bajo-proxmox-3

Implementar SOC: Instalación Suricata bajo Proxmox

Implementar SOC: Instalación Suricata bajo Proxmox

En otras entradas hablamos de lo que es un SOC y lanzamos el reto de crear mediante diferentes herramientas de código abierto, un SOC OpenSource.

En esta entrada vamos a montar un componente de ese SOC, en este caso he elegido para montar un IDS (Sistema de detección de intrusiones) el proyecto de Suricata. Tenía dos opciones clara, utilizar Snort, que conozco hace años, o utilizar Suricata. No veo grandes diferencias entre el uno y el otro a día de hoy, y la verdad que me gusta la comunidad y los artículos que se genera alrededor de Suricata.

Os dejo alguna diferencia si estáis dudando entre uno u otro:

  • Snort utiliza menos recursos, así que si tenéis limitación de RAM/CPU es una buena opción. Pero en cambio, Suricata parece que usa los recursos de una forma más eficiente, por si tenéis grandes volúmenes de tráfico
  • Snort desde su versión 3.0 ya gestiona multiprocesos (multithreading), cosa que Suricata dispone de esa arquitectura. Por lo que, si utilizáis la versión integrada de alguno de ellos en vuestro firewall Pfsense u OPNSense, tenéis que tenerlo en cuenta, porque marca la diferencia en la gestión de mucho tráfico
  • Suricata puede ser más escalable que Snort, gracias al uso que hace de los recursos
  • Ambos se pueden implementar en varios sistemas operativos con relativa facilidad
  • Suricata publica actualizaciones importantes cada unos 3 meses, y Snort actualizaciones menores cada 2-3 semanas
  • Snort es mantenido por Cisco principalmente, y Suricata su principal desarrollador es la OISF (Open Information Security Foundation)
  • Ambas herramientas son mantenidas por la comunidad, en cambio Snort es posible contratar personal para su soporte

implementar-soc-instalacion-suricata-bajo-proxmox-1

¿Qué es un IDS?

Es la primera pieza que voy a montar en el SOC, ya que me permitirá analizar el tráfico de red para buscar datos maliciosos o sospechosos y aplicar reglas preconfiguradas. También nos puede dar datos como máquinas que se conectan a ciertas direcciones IPs, puertos específicos e incluso servidores.

Un IDS tiene dos tareas fundamentales:

  • Prevención: escuchando el tráfico de red o un PC, mediante sensores e identificar ataques aplicando reglas, mediante reconocimiento de patrones de ataque.
  • Reacción: detecta patrones de intrusión tanto en el comportamiento del sistema como en la red.

Este sistema complementa a por ejemplo un cortafuegos en el que abrimos un puerto 80 o 443 a un servidor web, ya que nos permite detectar de intrusiones en el sistema o vulnerabilidades.

Hay dos tipos de IDS por comportamiento:

  • Pasivo: Genera entradas para registrar las intrusiones y manda alertas
  • Activo: Hace lo mismo que un Pasivo, y a su vez es capaz de bloquear IPs o cerrar puertos de comunicación, por ejemplo.

A nivel funcional, también hay varios tipos de IDS según de donde recogen el dato:

  • HIDS: Sistema de detección de intrusos, que recogen datos de usuarios y servicios de una máquina determinada
  • IDPS: Sistema de detección de intrusos en red, que hacen una escucha en modo promiscuo en la red
  • SIDS: Sistema de detección de intrusos basados en firmas
  • Y los sistemas de detección de intrusos basados en anomalías

Ni que decir tiene, que un IDS es como un Antivirus, en cuanto a que debe estar actualizado al máximo posible, para poder combatir los posibles problemas de intrusión y las últimas vulnerabilidades detectadas por entidades como la CIAC, CERT…

Os dejo la documentación oficial:

La verdad que sólo os dejo unas pinceladas, porque como he dicho varias veces, no es mi campo la ciberseguridad…

Para montar Suricata, usaré mi laboratorio Proxmox, bajo un contenedor LXC de Ubuntu en su versión 22.04, aunque es posible que lo integre en el cortafuegos OPNsense más adelante, primero lo crearé de cero de esta forma.

Requerimientos de Suricata

La verdad que buscando una tabla de requerimientos de Suricata en la documentación oficial, no he encontrado unos datos concretos. El mínimo son 2 CPU´s.

Esto se debe a que depende del tráfico de red que vais a gestionar y lo que va a tener que trabajar Suricata. Si la empresa es grande, tendréis que dedicar muchos cores de CPU y abundante RAM para que Suricata no muera en el camino.

Para lo que voy a usar yo en mi laboratorio, donde voy a aislar la creación del SOC y sus componentes en una red controlada para hacer pruebas, con los siguientes recursos hardware me debería valer:

  • Contenedor Ubuntu 22.04 LXC
  • 2 vCPU
  • 4 GB de RAM
  • 32 GB de espacio en disco SSD
  • Red dedicada del host Proxmox: vmbr1 con IP estática
  • DNS será el firewall OPNSense que unirá mi laboratorio con la red de casa e Internet

Instalar Suricata en Ubuntu LXC Proxmox

Generamos el contenedor LXC con las características antes indicadas:

implementar-soc-instalacion-suricata-bajo-proxmox-1

Arrancamos el contenedor y abrimos la sesión:

implementar-soc-instalacion-suricata-bajo-proxmox-2

Agregamos el directorio para poder instalar Suricata:

Pulsamos ENTER:

Y lanzamos la instalación de Suricata:

Hacemos que el servicio arranque al inicio:

Validamos que el servicio esté arrancado:

Con esto ya lo tenemos instalado, ahora vamos a parametrizarlo.

Configuración Suricata en Ubuntu 20.04 LXC de Proxmox

El fichero de configuración es el siguiente:

Lo editaremos para modificar la siguiente línea:

El valor “community-id” de “false” a “true” (esto facilitará la integración con ElasticSearch o OpenSearch):

implementar-soc-instalacion-suricata-bajo-proxmox-3

Por otra parte, debemos identificar la tarjeta de red que vamos a monitorizar:

Revisamos que en el fichero de configuración, donde pone paso 3 sale dicho interfaz:

implementar-soc-instalacion-suricata-bajo-proxmox-4Reiniciamos el servicio:

Actualización de reglas en Suricata

Suricata está alimentado de reglas, así que lo primero que hay que hacer es actualizarlas:

Como me aparece un warning, vuelvo a actualizar:

Actualizamos las reglas con el siguiente comando:

Este conjunto de reglas adicionales puede habilitarse o deshabilitarse si nos apetece, con el siguiente comando:

Listar:

Os dejo enlace a la documentación: https://suricata-update.readthedocs.io/en/latest/quickstart.html#list-enabled-sources

Comprobación configuración Suricata

Para validar nuestras configuraciones, en este primer momento casi por defecto, podemos usar:

Crear usuarios y modificar permisos

Aunque os he mostrado la instalación directamente con root, es una buena recomendación, que para el uso de Suricata no lo hagamos con root directamente y utilicemos sudo en su defecto. Así que generaremos un grupo y un usuario específico al que daremos permisos en los directorios del software para gestionarlo a partir de realizar la instalación:

Verificamos los permisos:

Pruebas funcionamiento Suricata

Para validar que recogemos datos, podemos instalar “curl” y “jq”:

Lanzar un testeo:

Comprobamos en las siguientes rutas si funciona:

  • fast.log: Recoge los eventos disparados por las reglas. Tiene como objetivo dar una impresión rápida y directa de los eventos.
  • eve.json: Recoge, igual que el anterior, los eventos disparados por las reglas, pero lo hace en formato JSON, lo que permite que posteriormente pueda ser interpretado de forma mucho más fácil por programas externos

Encontramos un log como éste:

Podemos filtrar el evento de la siguiente forma, por el ID “2013028”:

Modos de funcionamiento de Suricata

Suricata tiene varias formas de trabajar (predeterminado “autofp”), las podemos listar de la siguiente forma:

Tarjeta de red en modo promiscuo en Proxmox

Hay un único problema, el contenedor no tiene la tarjeta en modo promiscuo, y no ve el tráfico del resto de la red. Esto se debe a una configuración del host Proxmox que tenemos que habilitar.

Para ello agregaremos el siguiente parámetro a la tarjeta de red del host Proxmox que tiene configurada el contenedor:

Editamos el fichero y agregamos la línea a la interfaz:

implementar-soc-instalacion-suricata-bajo-proxmox-5

Lanzamos desde otra máquina de la red la prueba que hemos visto anteriormente:

implementar-soc-instalacion-suricata-bajo-proxmox-6

Y veremos que se refleja en los logs ese tráfico malicioso:

Realizada prueba sobre un host sin cambiar el parámetro no funciona:

implementar-soc-instalacion-suricata-bajo-proxmox-7

Con esto ya tenemos Suricata prácticamente en marcha, nuestra primera pieza del SOC, que más adelante uniremos al resto de componentes.

¿Te ha gustado la entrada SÍGUENOS EN TWITTER O INVITANOS A UN CAFE?

El Blog de Negu

Acerca de Raul Unzue Pulido

Administrador de sistemas virtuales e infraestructuras IT, linuxero y entusiasta de la tecnología.

Compruebe también

terraform-crear-contenedores-lxc-en-proxmox-3

Terraform: Crear contenedores LXC en Proxmox

Terraform: Crear contenedores LXC en Proxmox Hoy vamos a explicar como automatizar despliegues con Terraform …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

15 − 6 =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu