Salta el contingut

Pràctica: SIEM amb Wazuh Docker

Objectius

  • Desplegar un entorn SIEM complet amb Wazuh en Docker
  • Configurar agents de monitoratge en sistemes Linux
  • Crear regles d'alerta personalitzades
  • Simular incidents i detectar-los amb el SIEM
  • Generar un informe d'incidents basat en les alertes detectades
  • Gestionar un cas d'incident a TheHive

Prerequisits

Requisit Descripció
Temps estimat 10-12 hores
RAM mínima 8 GB (Wazuh necessita ~6 GB)
Espai disc 30 GB lliures
Docker Docker Desktop o Docker Engine + Compose
Coneixements previs Conceptes bàsics de Linux, logs, SIEM

Introducció

Wazuh és una plataforma open source de seguretat que integra SIEM, XDR i CSPM en un únic producte. Empreses com Telefónica, BBVA i moltes administracions públiques espanyoles l'utilitzen en producció.

L'arquitectura de Wazuh consta de tres components principals:

flowchart LR
    subgraph Agents
        A[Agent Linux\nSistema monitorat]
        B[Agent Windows\nSistema monitorat]
    end
    subgraph Servidor Wazuh
        C[Wazuh Manager\nAnàlisi i correlació]
        D[Wazuh Indexer\nElasticsearch]
        E[Wazuh Dashboard\nKibana]
    end
    A -->|Logs xifrats| C
    B -->|Logs xifrats| C
    C --> D
    D --> E

En aquesta pràctica, desplegarem Wazuh en mode single-node (per a laboratori) amb Docker Compose, configurarem un agent en un contenidor Linux, simularem incidents i analitzarem les alertes generades.

Recursos necessaris

Wazuh és una plataforma potent però consumeix molts recursos. Assegura't de tenir almenys 8 GB de RAM disponibles. Si el teu ordinador té menys RAM, parla amb el professor per a alternatives.


Part 1: Preparació de l'entorn

1.1 Clonar el repositori oficial de Wazuh Docker

# Clona el repositori oficial de Wazuh per a Docker
git clone https://github.com/wazuh/wazuh-docker.git -b v4.8.0
cd wazuh-docker/single-node

# Genera els certificats TLS necessaris (obligatori)
docker compose -f generate-indexer-certs.yml run --rm generator

1.2 Personalitzar la configuració amb el teu nom

IMPORTANT: Substitueix NOMCOGNOM per les teves inicials (ex: jgarcia, mlopez)

# Crea una xarxa Docker personalitzada per a la pràctica
docker network create --subnet=172.25.0.0/24 siem-NOMCOGNOM

# Modifica el fitxer docker-compose.yml per afegir el teu nom als contenidors
# Edita docker-compose.yml i canvia els container_name:
#   wazuh.manager → wazuh-manager-NOMCOGNOM
#   wazuh.indexer  → wazuh-indexer-NOMCOGNOM
#   wazuh.dashboard → wazuh-dashboard-NOMCOGNOM

El fitxer docker-compose.yml modificat hauria de tenir:

services:
  wazuh.manager:
    image: wazuh/wazuh-manager:4.8.0
    container_name: wazuh-manager-NOMCOGNOM    # ← el teu nom aquí
    hostname: wazuh-manager-NOMCOGNOM          # ← el teu nom aquí
    # ... resta de la configuració sense canvis

  wazuh.indexer:
    image: wazuh/wazuh-indexer:4.8.0
    container_name: wazuh-indexer-NOMCOGNOM   # ← el teu nom aquí
    # ...

  wazuh.dashboard:
    image: wazuh/wazuh-dashboard:4.8.0
    container_name: wazuh-dashboard-NOMCOGNOM # ← el teu nom aquí
    # ...

1.3 Iniciar Wazuh

# Inicia tots els serveis (pot trigar 3-5 minuts la primera vegada)
docker compose up -d

# Verifica que tots els contenidors estan en marxa
docker ps | grep NOMCOGNOM

# Comprova els logs si hi ha problemes
docker logs wazuh-manager-NOMCOGNOM --tail 50

Accés al Dashboard

Un cop tots els serveis estiguin actius (verifica amb docker ps que tots surten "Up"):

  • URL: https://localhost:443
  • Usuari: admin
  • Contrasenya: SecretPassword (o la que s'hagi generat)

Accepta el certificat auto-signat al navegador.


Part 2: Configuració d'un agent monitorat

2.1 Desplegar el sistema "víctima" a monitorar

# Desplegem un contenidor Ubuntu que actuarà com a sistema monitorat
docker run -d \
  --name target-NOMCOGNOM \
  --hostname target-NOMCOGNOM \
  --network siem-NOMCOGNOM \
  ubuntu:22.04 \
  sleep infinity

# Entrem al contenidor
docker exec -it target-NOMCOGNOM bash

2.2 Instal·lar l'agent Wazuh al sistema monitorat

Dins del contenidor target-NOMCOGNOM:

# Actualitzar el sistema
apt-get update && apt-get install -y curl

# Instal·lar l'agent Wazuh (ajusta la IP del manager)
WAZUH_MANAGER="$(docker inspect wazuh-manager-NOMCOGNOM \
  --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}')"

curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add -
echo "deb https://packages.wazuh.com/4.x/apt/ stable main" \
  | tee /etc/apt/sources.list.d/wazuh.list

apt-get update
WAZUH_MANAGER="${WAZUH_MANAGER}" apt-get install -y wazuh-agent

# Iniciar l'agent
/var/ossec/bin/wazuh-control start

2.3 Verificar que l'agent es connecta

Al dashboard de Wazuh (https://localhost:443):

  1. Ves a Agents → Manage agents
  2. Hauries de veure el teu agent target-NOMCOGNOM en estat Active

Pregunta de reflexió

  1. Quins tipus de logs recopila l'agent Wazuh per defecte?
  2. Quina és la diferència entre un agent Wazuh i un syslog forwarder?

Part 3: Simulació i detecció d'incidents

3.1 Incident 1: Força bruta SSH (Brute Force)

# Des de la màquina host, instal·la hydra (eina de brute force)
docker run --rm --network siem-NOMCOGNOM \
  --name attacker-NOMCOGNOM \
  kalilinux/kali-rolling \
  bash -c "apt-get install -y hydra && \
    hydra -l root -P /usr/share/wordlists/rockyou.txt \
    ssh://target-NOMCOGNOM -t 4 -f"

Ara al dashboard de Wazuh, cerca les alertes generades: - Filtra per l'agent target-NOMCOGNOM - Busca regles relacionades amb "authentication failure" - Identifica el Rule ID de l'alerta

3.2 Incident 2: Accés amb usuari root

# Simula un accés exitós com a root (activitat sospitosa)
docker exec -it target-NOMCOGNOM bash

# Dins del contenidor, executa comandes sospitoses
cat /etc/shadow
id
whoami
ls -la /root

3.3 Incident 3: Creació d'un fitxer en directori sensible

# Intenta crear fitxers en directoris monitorats
docker exec target-NOMCOGNOM bash -c \
  "echo 'backdoor' > /etc/cron.d/malicious-NOMCOGNOM"

Wazuh hauria d'alertar sobre modificacions en /etc/cron.d/.

3.4 Incident 4: Instal·lació de software nou (FIM - File Integrity Monitoring)

# Instal·la un nou paquet (FIM detecta canvis en fitxers del sistema)
docker exec target-NOMCOGNOM apt-get install -y nmap

Pregunta de reflexió

Comprova el dashboard per a cadascun dels incidents:

  1. Quant temps triga Wazuh a detectar cada incident?
  2. Quin és el nivell de gravetat (severity) de cada alerta?
  3. Quins Rule IDs s'han activat?
  4. Podries crear una regla personalitzada per millorar la detecció?

Part 4: Creació d'una regla personalitzada

4.1 Crear una regla per detectar comandes perilloses

# Entra al contenidor del manager
docker exec -it wazuh-manager-NOMCOGNOM bash

# Crea un fitxer de regles personalitzades
cat > /var/ossec/etc/rules/custom_rules_NOMCOGNOM.xml << 'EOF'
<group name="custom_NOMCOGNOM,">
  <!-- Regla: Detectar descàrregues amb curl/wget -->
  <rule id="100001" level="10">
    <if_group>syslog</if_group>
    <match>curl|wget|nc |netcat</match>
    <description>Possible descàrrega o connexió de xarxa sospitosa per NOMCOGNOM</description>
    <group>network_activity,</group>
  </rule>

  <!-- Regla: Detectar accés a /etc/shadow -->
  <rule id="100002" level="14">
    <if_group>audit</if_group>
    <match>/etc/shadow</match>
    <description>Intent d'accés a fitxer de contrasenyes per NOMCOGNOM</description>
    <group>credentials_access,</group>
  </rule>
</group>
EOF

# Reinicia el manager per aplicar les regles
/var/ossec/bin/wazuh-control restart

4.2 Provar les regles personalitzades

# Genera activitat que hauria d'activar les regles
docker exec target-NOMCOGNOM bash -c "curl -s https://ipinfo.io"
docker exec target-NOMCOGNOM cat /etc/shadow 2>/dev/null || true

Part 5: Informe d'incidents

Prepara un informe en markdown (informe_siem_NOMCOGNOM.md) amb:

# Informe d'Incidents SIEM - NOMCOGNOM
Data: YYYY-MM-DD

## Resum executiu

## Incidents detectats

### Incident 1: Força Bruta SSH
- **Hora de detecció**:
- **Rule ID activada**:
- **Nombre d'intents**:
- **Severitat**:
- **Recomanació**:

### Incident 2: [...]

## Anàlisi de regles personalitzades
- Regla 100001: [efectivitat]
- Regla 100002: [efectivitat]

## Conclusions i recomanacions
1. ...
2. ...

## Captura de proves (screenshots del dashboard)
[Insereix les captures de pantalla aquí]

Preguntes finals de reflexió

  1. Quina diferència hi ha entre un SIEM i un IDS/IPS?
  2. Quins falsos positius has observat? Com els reduiríes?
  3. En un entorn real, quants events per segon pot gestionar Wazuh?
  4. Com integraries Wazuh amb TheHive per a gestió de casos?

Neteja de l'entorn

# Un cop acabada la pràctica, neteja els contenidors
docker stop wazuh-manager-NOMCOGNOM wazuh-indexer-NOMCOGNOM \
  wazuh-dashboard-NOMCOGNOM target-NOMCOGNOM
docker rm wazuh-manager-NOMCOGNOM wazuh-indexer-NOMCOGNOM \
  wazuh-dashboard-NOMCOGNOM target-NOMCOGNOM
docker network rm siem-NOMCOGNOM

Entregables

  1. Captura de pantalla del dashboard amb els incidents detectats
  2. Fitxer de regles personalitzades custom_rules_NOMCOGNOM.xml
  3. Informe d'incidents informe_siem_NOMCOGNOM.md