Homelab SOC #06 - Instalación de Wazuh


En el capítulo anterior preparé la infraestructura virtual donde viviría el laboratorio.

Ahora llega el momento de instalar el componente más importante del proyecto el: SIEM.

Wazuh será el corazón del laboratorio. Será el encargado de recibir eventos, correlacionarlos, detectar comportamientos sospechosos y mostrarlos desde una única interfaz web.

A partir de este punto el laboratorio deja de ser únicamente una máquina virtual y comienza a convertirse en un verdadero entorno SOC.


Objetivo de este capítulo

La pregunta principal que responde esta etapa es:

¿Cómo construir el núcleo de un SOC desde cero utilizando Wazuh?

Durante este capítulo instalaré todos los componentes principales utilizando el método recomendado por la documentación oficial.

Al finalizar tendremos un servidor capaz de:

  • Recibir eventos.
  • Correlacionar alertas.
  • Indexar información.
  • Visualizar incidentes desde un Dashboard.
  • Prepararse para recibir agentes Windows y Linux.

Arquitectura del servidor SOC

Después de esta instalación el servidor Debian quedará compuesto por los siguientes servicios:

Debian Server (SOC)

├── Wazuh Manager
│   ├── Correlación de eventos
│   ├── Reglas
│   ├── Decoders
│   └── API
│
├── Wazuh Indexer
│   └── OpenSearch
│
├── Filebeat
│   └── Envío de alertas al Indexer
│
└── Wazuh Dashboard
    └── Interfaz Web

La arquitectura completa del laboratorio comienza a tomar forma:

                    HOMELAB SOC

                 ┌─────────────────┐
                 │   Analista SOC  │
                 │    Dashboard    │
                 └────────┬────────┘
                          │ HTTPS
                          │
              ┌───────────▼───────────┐
              │     Debian Server     │
              │      SOC Server       │
              │      10.0.100.10      │
              │                       │
              │  ┌─────────────────┐  │
              │  │ Wazuh Dashboard │  │
              │  └─────────────────┘  │
              │                       │
              │  ┌─────────────────┐  │
              │  │ Wazuh Indexer   │  │
              │  │ OpenSearch      │  │
              │  └─────────────────┘  │
              │                       │
              │  ┌─────────────────┐  │
              │  │ Wazuh Manager   │  │
              │  │ SIEM Engine     │  │
              │  └─────────────────┘  │
              │                       │
              │  ┌─────────────────┐  │
              │  │ Wazuh Agent     │  │
              │  │ (Servidor)      │  │
              │  └─────────────────┘  │
              └───────────┬───────────┘
                          │
              ┌───────────┴───────────┐
              │                       │
        Windows 11              Ubuntu Server
        Sysmon Agent             Agent
        (Próximamente)          (Próximamente)

Administración mediante SSH

Aunque la máquina se ejecuta en VirtualBox, toda la administración del laboratorio la realizo desde la terminal de Arch Linux mediante SSH.

De esta forma el trabajo se asemeja mucho más al escenario real de un administrador de servidores.

sshzsh / user
ssh debian@192.168.100.110

Preparando el servidor

Antes de instalar Wazuh configuré el nombre definitivo del servidor.

hostnamectlzsh / user
sudo hostnamectl set-hostname soc-server

Después instalé algunas herramientas básicas que utilizaremos durante el proyecto.

aptzsh / user
sudo apt install curl wget gnupg apt-transport-https unzip vim net-tools -y

Instalación de Wazuh

Para este laboratorio decidí utilizar el método recomendado por la documentación oficial de Wazuh (https://wazuh.com/install/).

Este método utiliza el Wazuh Installation Assistant, un script que automatiza toda la instalación.

Durante el proceso instala automáticamente:

  • Wazuh Manager
  • Wazuh Indexer
  • OpenSearch
  • Filebeat
  • Wazuh Dashboard
  • Certificados TLS
  • Configuración inicial

Primero descargamos el instalador:

curlzsh / user
curl -sO https://packages.wazuh.com/4.14/wazuh-install.sh

Y posteriormente ejecutamos la instalación completa:

bashzsh / user
sudo bash ./wazuh-install.sh -a

El asistente comienza descargando dependencias, creando certificados, configurando OpenSearch e instalando cada uno de los componentes del stack.


Primera incidencia: hostname mal configurado

Nada más iniciar la instalación apareció el siguiente mensaje:

sudo: unable to resolve host soc-server

Aunque el hostname ya había sido cambiado mediante hostnamectl, el sistema todavía no conocía ese nuevo nombre porque el archivo /etc/hosts seguía apuntando al nombre anterior de la máquina.

Fue necesario verificar:

cat /etc/hostname

y posteriormente:

cat /etc/hosts

En mi caso todavía aparecía:

127.0.1.1 DebianServer.myguest.virtualbox.org DebianServer

La solución consistió en actualizar la entrada para que el sistema reconociera correctamente el nuevo hostname.

Finalmente comprobé la configuración ejecutando:

sudo hostname -f

Obteniendo como resultado:

soc-server

Segunda incidencia: fallo durante la instalación del Dashboard

El instalador avanzó correctamente hasta el último componente.

Sin embargo apareció el siguiente mensaje:

ERROR: Wazuh dashboard installation failed.

El asistente intentó revertir toda la instalación eliminando automáticamente los componentes ya instalados.

Aunque el proceso de limpieza funcionó parcialmente, el sistema quedó con algunos paquetes en un estado inconsistente.

Para identificar la causa revisé el archivo de log generado por el instalador.

sudo grep -Ei "error|failed|exception" /var/log/wazuh-install.log

El error parecía indicar inicialmente un problema al copiar archivos durante la instalación del Dashboard.

Mi primera hipótesis fue pensar en una falta de espacio en disco.

Sin embargo, tras analizar el comportamiento del sistema, el verdadero problema estaba relacionado con la memoria RAM.


El verdadero problema: memoria insuficiente

La máquina virtual tenía asignados únicamente 4 GB de RAM.

Aunque esa cantidad aparece como requisito mínimo, durante la instalación ocurre algo importante.

El Wazuh Indexer está basado en OpenSearch, el cual reserva aproximadamente la mitad de la memoria disponible nada más iniciar.

Cuando posteriormente el instalador intenta desplegar el Dashboard (que contiene cientos de megabytes de dependencias Node.js) el sistema ya se encuentra trabajando prácticamente al límite.

Como consecuencia, el kernel finaliza el proceso y la instalación termina con un error de tipo Broken Pipe.

Después de revisar el comportamiento decidí aumentar los recursos de la máquina virtual:

AntesDespués
RAM: 4 GBRAM: 8 GB
Disco: 50 GBDisco: 100 GB

Tras ampliar los recursos, la instalación se ejecutó nuevamente y finalizó correctamente.


Una incidencia adicional

La primera instalación dejó el paquete wazuh-manager en un estado inconsistente.

Fue necesario revisar el comportamiento de los scripts prerm y postrm, limpiar correctamente el estado de dpkg y ejecutar nuevamente el asistente de instalación.

Este tipo de situaciones forman parte del trabajo diario de cualquier administrador de sistemas.

Muchas veces el mayor aprendizaje no está en ejecutar un comando, sino en diagnosticar por qué un proceso falló y devolver el sistema a un estado consistente.


Instalación finalizada

Después de solucionar ambos problemas el asistente completó correctamente todos los pasos.

Al finalizar mostró un resumen similar al siguiente:

Installation finished.

You can access the web interface:

https://192.168.100.110:443

User: admin
Password: *************

Con ello ya fue posible acceder a la interfaz web de Wazuh desde el navegador.

interfaz-wazuh.png


Estado actual del laboratorio

Después de este capítulo tenemos:

✓ Debian Server configurado.

✓ Wazuh Manager instalado.

✓ Wazuh Indexer funcionando.

✓ OpenSearch operativo.

✓ Filebeat configurado.

✓ Dashboard accesible mediante HTTPS.

✓ Certificados TLS generados.

✓ Agente local registrado.


¿Qué sigue?

El servidor SOC ya está listo.

Ahora necesita recibir información del resto de la infraestructura.

En los próximos capítulos comenzaré a incorporar los primeros equipos monitorizados:

  • Windows 11.
  • Ubuntu Server.
  • Sysmon.
  • Reglas personalizadas.
  • Dashboards.
  • Casos reales de detección.

A partir de ese momento comenzará la fase más interesante del laboratorio: generar eventos, analizarlos y aprender cómo trabaja un analista SOC.


Lo aprendido

Instalar una plataforma SIEM no consiste únicamente en ejecutar un script.

Detrás de una instalación aparentemente sencilla existen múltiples componentes trabajando de forma coordinada: motores de búsqueda, gestores de eventos, servicios web, certificados y procesos de indexación.

Durante este capítulo aprendí que los requisitos mínimos no siempre representan un entorno estable y que documentar los errores encontrados aporta tanto valor como documentar los aciertos.

Después de varios intentos, diagnósticos y ajustes, el laboratorio ya dispone de su pieza central.

A partir de aquí comenzará el verdadero trabajo de un SOC.