Background
Wazuh Syslog rsyslog Templates SIEM Ciberseguridad

Equipos sin Agente: Logs organizados y Wazuh (2/2)

Configura rsyslog para organizar logs en ficheros separados segun origen. Templates, filtros IF, integracion con ossec.conf y reinicio de servicios.

AI Security
10 min lectura
Background

Introduccion

En la parte 1 configuramos rsyslog para recibir logs en el puerto 514. Ahora vamos a organizar esos logs en ficheros separados segun su origen, en lugar de mezclarlos todos en /var/log/syslog.

Esto es util cuando tienes varios dispositivos enviando logs (NAS, routers, switches) y quieres tenerlos organizados para analizarlos mejor.

Video: Equipos sin Agente - Parte 2
Contenido del curso

Video: Equipos sin Agente (2/2)

10 minutos - Templates, filtros IF y ossec.conf

Ver en el Curso Wazuh

Accede al video completo con el curso de Wazuh

Configuracion completa del rsyslog.conf

Edita el archivo de configuracion:

nano /etc/rsyslog.conf

Anade la siguiente configuracion al final del archivo:

# DEBUG temporal (para ver que variables tiene cada log)
$template DebugFormat,"%TIMESTAMP:::date-rfc3339% DEBUG: fromhost=[%fromhost%] fromhost-ip=[%fromhost-ip%] hostname=[%hostname%] msg=[%msg%]\n"
$template DebugLogs,"/var/log/remote/debug.log"

# Template para logs remotos con timestamp y hostname
$template RemoteStoreAll,"/var/log/remote/all.log"
$template NASLogs,"/var/log/remote/nas.log"
$template LogFormat,"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag% %msg%\n"

# Procesar solo logs remotos (no locales)
if $fromhost-ip != '127.0.0.1' then {

    # DEBUG TEMPORAL (descomenta para ver las variables)
    # ?DebugLogs;DebugFormat

    # Primero: Filtrar logs que contengan "NAS:" en el mensaje
    if $msg contains "NAS:" then {
        ?NASLogs;LogFormat
        stop
    }

    # Segundo: Todo lo demas va a all.log
    ?RemoteStoreAll;LogFormat
    stop
}

Explicacion de los Templates

Los templates en rsyslog definen donde y como se guardan los logs:

Template de ruta (donde guardar)

$template NASLogs,"/var/log/remote/nas.log"

Define que los logs que usen este template se guardaran en /var/log/remote/nas.log.

Template de formato (como guardar)

$template LogFormat,"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag% %msg%\n"

Define el formato de cada linea del log. Las variables disponibles son:

  • %fromhost% - Hostname del equipo que envia el log
  • %fromhost-ip% - IP del equipo que envia el log
  • %hostname% - Hostname incluido en el mensaje syslog
  • %msg% - Contenido del mensaje
  • %syslogtag% - Tag/programa que genera el log
  • %TIMESTAMP:::date-rfc3339% - Timestamp en formato ISO 8601

Explicacion del IF (filtros condicionales)

La estructura del IF en rsyslog permite filtrar logs segun condiciones:

# Solo procesar logs que NO vengan de localhost (logs remotos)
if $fromhost-ip != '127.0.0.1' then {

    # Si el mensaje contiene "NAS:"
    if $msg contains "NAS:" then {
        ?NASLogs;LogFormat    # Guarda en /var/log/remote/nas.log usando LogFormat
        stop                   # Para de procesar este log (no sigue a mas reglas)
    }

    # Si no coincide con ningun filtro anterior, va aqui
    ?RemoteStoreAll;LogFormat  # Guarda en /var/log/remote/all.log
    stop
}

Importante: El stop es crucial. Evita que el log se procese por mas reglas y no se duplique en varios ficheros.

Sintaxis de la escritura

?NASLogs;LogFormat

Esto significa: "Escribe en el fichero definido por NASLogs usando el formato definido por LogFormat".

Crear el directorio para los logs

Antes de reiniciar rsyslog, crea el directorio donde se guardaran los logs:

# Crear directorio
mkdir -p /var/log/remote

# Asignar permisos al usuario syslog
chown syslog:adm /var/log/remote

Anadir los ficheros al ossec.conf

Para que Wazuh monitorice estos nuevos ficheros de log, edita el archivo de configuracion del agente:

nano /var/ossec/etc/ossec.conf

Anade las siguientes secciones localfile dentro del bloque <ossec_config>:

<!-- Logs del NAS -->
<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/remote/nas.log</location>
</localfile>

<!-- Todos los logs remotos -->
<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/remote/all.log</location>
</localfile>

Flujo completo:

  1. El dispositivo (NAS, router, etc.) envia logs al puerto 514
  2. rsyslog los recibe y los filtra segun las reglas IF
  3. Los logs se escriben en ficheros separados (/var/log/remote/nas.log, etc.)
  4. El agente Wazuh monitoriza esos ficheros (configurados en localfile)
  5. Los logs se envian al servidor Wazuh para su analisis

Reiniciar los servicios

Despues de modificar la configuracion, reinicia ambos servicios:

# Reiniciar rsyslog para aplicar la nueva configuracion
systemctl restart rsyslog

# Reiniciar el agente Wazuh para que lea los nuevos ficheros
systemctl restart wazuh-agent

# Verificar que ambos servicios estan funcionando
systemctl status rsyslog
systemctl status wazuh-agent

Verificar que funciona

# Ver logs del NAS en tiempo real
tail -f /var/log/remote/nas.log

# Ver todos los logs remotos
tail -f /var/log/remote/all.log

# Ver el debug (si lo tienes habilitado)
tail -f /var/log/remote/debug.log

# Verificar que rsyslog escucha en el puerto 514
ss -ulnp | grep 514

Ejemplo: Anadir mas filtros

Puedes anadir mas filtros para organizar logs de otros dispositivos:

# Templates adicionales
$template RouterLogs,"/var/log/remote/router.log"
$template SwitchLogs,"/var/log/remote/switch.log"
$template FirewallLogs,"/var/log/remote/firewall.log"

if $fromhost-ip != '127.0.0.1' then {

    # Filtrar por IP del dispositivo
    if $fromhost-ip == '192.168.1.1' then {
        ?RouterLogs;LogFormat
        stop
    }

    # Filtrar por contenido del mensaje
    if $msg contains "SWITCH:" then {
        ?SwitchLogs;LogFormat
        stop
    }

    # Filtrar por hostname
    if $hostname == 'pfsense' then {
        ?FirewallLogs;LogFormat
        stop
    }

    # El resto va a all.log
    ?RemoteStoreAll;LogFormat
    stop
}

Recursos adicionales


Articulos relacionados:


Aprende Wazuh de forma practica

Este articulo es parte del contenido del curso. Aprende a configurar syslog, crear reglas personalizadas, integrar con otras herramientas y mucho mas.

Background