Analizar Logs en Graylog

NmapNmapBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo analizar registros (logs) utilizando Graylog, una plataforma de gestión de registros de código abierto para el monitoreo de ciberseguridad. Practicará la configuración de Graylog con Docker Compose, la configuración de entradas de registros y la realización de análisis de registros a través de ejercicios prácticos.

El laboratorio lo guiará a través del despliegue de Graylog junto con MongoDB y Elasticsearch, y luego del uso de su interfaz web para recopilar y consultar datos de registros. Estas tareas prácticas le ayudarán a adquirir las habilidades esenciales para la gestión centralizada de registros y el monitoreo de seguridad.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) nmap/NmapGroup -.-> nmap/udp_scanning("UDP Scanning Techniques") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") subgraph Lab Skills nmap/udp_scanning -.-> lab-549925{{"Analizar Logs en Graylog"}} wireshark/packet_capture -.-> lab-549925{{"Analizar Logs en Graylog"}} end

Instalar Graylog

En este paso, instalará Graylog, una potente plataforma de gestión de registros (logs) de código abierto, en su entorno de máquina virtual (VM) de LabEx. Graylog ayuda a centralizar y analizar los datos de registros para el monitoreo de seguridad y la resolución de problemas al recopilar registros de diversas fuentes y proporcionar capacidades de búsqueda y visualización.

Dado que estamos utilizando contenedores Docker, desplegaremos Graylog utilizando Docker Compose para una configuración sencilla. Docker Compose nos permite definir y ejecutar aplicaciones de múltiples contenedores con un solo archivo de configuración. Este enfoque simplifica el proceso de instalación y garantiza que todos los componentes necesarios funcionen juntos correctamente. Siga estos pasos cuidadosamente:

  1. Primero, asegúrese de estar en el directorio correcto. El directorio project es donde organizaremos nuestros archivos de instalación de Graylog:
cd ~/project
  1. Cree un nuevo directorio dedicado para la configuración de Graylog. Esto mantiene nuestros archivos de instalación separados y organizados:
mkdir graylog && cd graylog
  1. Cree un archivo docker-compose.yml con el siguiente contenido utilizando nano. Este archivo define todos los servicios que necesita Graylog para funcionar:
nano docker-compose.yml
  1. Pegue esta configuración (presione Ctrl+O para guardar, luego Ctrl+X para salir). La configuración incluye tres servicios principales:
    • MongoDB para almacenar datos de configuración
    • Elasticsearch para indexar y buscar registros
    • Graylog en sí como interfaz web y motor de procesamiento
version: "3"
services:
  mongodb:
    image: mongo:4.2
    volumes:
      - mongo_data:/data/db
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
    volumes:
      - es_data:/usr/share/elasticsearch/data
    environment:
      - "discovery.type=single-node"
      - "bootstrap.memory_lock=true"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  graylog:
    image: graylog/graylog:4.3
    volumes:
      - graylog_data:/usr/share/graylog/data
    environment:
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
    depends_on:
      - mongodb
      - elasticsearch
    ports:
      - "9000:9000"
      - "1514:1514"
      - "1514:1514/udp"
      - "12201:12201"
      - "12201:12201/udp"
volumes:
  mongo_data:
  es_data:
  graylog_data:
  1. Inicie la pila (stack) de Graylog con Docker Compose. La bandera -d ejecuta los contenedores en segundo plano:
docker-compose up -d
  1. Verifique que los contenedores estén funcionando correctamente. Este comando muestra el estado de todos los servicios definidos en nuestro archivo docker-compose:
docker-compose ps

Debería ver tres servicios (mongodb, elasticsearch y graylog) con el estado "Up". La interfaz web de Graylog estará disponible en http://127.0.0.1:9000 (nombre de usuario: admin, contraseña: admin). Esto completa la instalación básica de Graylog, y ahora estamos listos para configurar las entradas de registros en los siguientes pasos.

Configurar una entrada de registros (log input)

En este paso, configurará una entrada de registros en Graylog para recibir mensajes syslog. Piense en esto como crear un "puerto de escucha" donde Graylog puede recopilar datos de registros de varios dispositivos y aplicaciones. Esto es esencial para el monitoreo de seguridad porque los registros contienen información valiosa sobre las actividades del sistema y posibles amenazas.

  1. Primero, verifiquemos que Graylog esté funcionando correctamente a partir de nuestra configuración anterior. Ejecute este comando para verificar el estado del contenedor:
cd ~/project/graylog
docker-compose ps
  1. Acceda a la interfaz web de Graylog abriendo su navegador y navegando a http://127.0.0.1:9000. Utilice estas credenciales:

    • Nombre de usuario: admin
    • Contraseña: admin
  2. En la interfaz web de Graylog, crearemos una nueva fuente de entrada:

    • Haga clic en "System" en el menú superior - aquí es donde gestionamos las funciones principales de Graylog
    • Seleccione "Inputs" del menú desplegable - las entradas son la forma en que Graylog recibe datos de registros
    • Bajo "Select input" elija "Syslog UDP" - UDP es más rápido para la recopilación de registros que TCP
    • Haga clic en "Launch new input" para comenzar la configuración
  3. Ahora configure la entrada con estas configuraciones específicas:

    • Nodo: Seleccione su servidor Graylog (esta debería ser la única opción disponible)
    • Título: "Syslog UDP Input" (déle un nombre descriptivo)
    • Dirección de enlace (Bind address): 0.0.0.0 (significa escuchar en todas las interfaces de red)
    • Puerto: 1514 (puerto estándar alternativo para syslog)
    • Haga clic en "Save" para activar la entrada
  4. Después de guardar, verifique que la entrada esté funcionando correctamente:

    • Busque un estado verde "Running" junto a su nueva entrada - esto significa que está activa
    • La sección "Local inputs" ahora debería mostrar "1 input running" - confirmando una configuración exitosa
  5. Probemos nuestra nueva entrada enviando un mensaje de registro de muestra. Ejecute este comando en su terminal:

echo "<14>$(date +'%b %d %H:%M:%S') localhost labex: Test syslog message" | nc -w1 -u 127.0.0.1 1514

Este comando crea un mensaje de registro de prueba con nivel de prioridad 14 (info) y lo envía a Graylog utilizando netcat (nc). El mensaje incluye la fecha y hora actuales e identifica la fuente como "localhost".

Ahora ha configurado con éxito Graylog para recibir mensajes syslog. En los siguientes pasos, exploraremos cómo enviar registros más complejos y buscar en ellos para encontrar información importante de seguridad.

Enviar registros de muestra

En este paso, generará y enviará mensajes de registro de muestra a Graylog a través de la entrada de syslog que configuró anteriormente. Este ejercicio práctico ayuda a verificar que su canalización de registro (logging pipeline) esté funcionando correctamente antes de analizar datos del mundo real. Crearemos registros de prueba que simulen diferentes niveles de gravedad y tipos de aplicaciones, lo cual es esencial para entender cómo Graylog procesa y categoriza las entradas de registro.

  1. Primero, asegúrese de que sus contenedores de Graylog estén en ejecución. Este comando verifica el estado de sus contenedores Docker - deben mostrar el estado "Up" si todo está funcionando correctamente:
cd ~/project/graylog
docker-compose ps
  1. Crearemos un sencillo script de bash para generar registros de muestra. El script producirá mensajes de registro estructurados que incluyan marcas de tiempo, niveles de gravedad y nombres de aplicaciones. Cree un nuevo archivo en su directorio de proyecto:
nano ~/project/generate_logs.sh
  1. Agregue el siguiente contenido al archivo. Este script hace varias cosas importantes:
    • Genera 10 mensajes de registro con niveles de gravedad aleatorios (0 - 7)
    • Incluye marcas de tiempo adecuadas en formato syslog
    • Utiliza el comando 'nc' para enviar registros a través de UDP al puerto 1514
    • Agrega un retraso de 1 segundo entre mensajes para una mejor visualización:
#!/bin/bash
for i in {1..10}; do
  severity=$(((RANDOM % 8)))
  timestamp=$(date +'%b %d %H:%M:%S')
  echo "<$((severity + 8))>$timestamp localhost sample_app[$i]: Sample log message $i with severity $severity" | nc -w1 -u 127.0.0.1 1514
  sleep 1
done
  1. Haga que el script sea ejecutable para poder ejecutarlo directamente. El comando chmod cambia los permisos del archivo:
chmod +x ~/project/generate_logs.sh
  1. Ejecute el script para enviar registros de muestra a Graylog. No verá una salida directa en la terminal porque los registros se están enviando a la entrada de syslog de Graylog:
~/project/generate_logs.sh
  1. Ahora, verifiquemos que los registros hayan llegado a Graylog. Siga estos pasos en la interfaz web:

    • Abra su navegador y vaya a http://127.0.0.1:9000
    • Haga clic en "Search" en el menú superior para ver los mensajes entrantes
    • Sus registros de muestra deberían aparecer en unos segundos
    • Intente buscar "sample_app" para filtrar y ver solo sus registros de prueba
  2. (Opcional) Para una prueba más completa, puede enviar mensajes de registro adicionales que simulen aplicaciones de servidor comunes. Estos ejemplos muestran diferentes formatos de registro que Graylog puede procesar:

## Registro de servidor web de estilo Apache
echo '<13>$(date +"%b %d %H:%M:%S") localhost apache: 127.0.0.1 - - [$(date +"%d/%b/%Y:%H:%M:%S %z")] "GET / HTTP/1.1" 200 45' | nc -w1 -u 127.0.0.1 1514

## Intento de inicio de sesión SSH (evento de seguridad común)
echo '<12>$(date +"%b %d %H:%M:%S") localhost sshd[1234]: Failed password for root from 192.168.1.100 port 22 ssh2' | nc -w1 -u 127.0.0.1 1514

Consultar datos de registros

En este paso, exploraremos cómo buscar y analizar datos de registros en Graylog utilizando su lenguaje de consulta. La funcionalidad de búsqueda de Graylog le ayuda a encontrar rápidamente registros relevantes entre grandes volúmenes de datos. Utilizaremos los registros de muestra que envió anteriormente para practicar estas técnicas.

  1. Primero, acceda a la interfaz web de Graylog en http://127.0.0.1:9000 (nombre de usuario: admin, contraseña: admin). Aquí es donde se realiza todo el análisis de registros en Graylog.

  2. Operaciones de búsqueda básicas:

    • Haga clic en "Search" en el menú superior para acceder a la interfaz de búsqueda.
    • En la barra de búsqueda, ingrese source:localhost para ver todos los registros de nuestra fuente de prueba. Esto demuestra cómo filtrar registros por su campo de origen.
    • Pruebe estas consultas básicas para entender diferentes patrones de búsqueda:
      message:"Sample log message"  ## Encuentra registros que contienen la frase exacta
      severity:3                   ## Filtra por nivel de gravedad 3
      source:localhost AND severity:[2 TO 4]  ## Combina condiciones
  3. Filtrado por rango de tiempo:

    • Haga clic en el selector de rango de tiempo (por defecto es "Last 5 minutes"). Los registros son sensibles al tiempo, por lo que esto ayuda a centrarse en períodos de tiempo relevantes.
    • Cambie a "Last 15 minutes" para ver todos sus registros de prueba ya que se enviaron recientemente.
    • Pruebe el rango de tiempo "Absolute" para especificar tiempos de inicio y fin exactos cuando necesite ventanas de tiempo precisas.
  4. Análisis de campos:

    • Haga clic en cualquier mensaje de registro para ver sus campos. Cada registro contiene múltiples campos con diferente información.
    • Tenga en cuenta los campos extraídos automáticamente como source, severity, etc. Estos se crean cuando Graylog procesa los registros.
    • Haga clic en la pestaña "Quick values" para ver las distribuciones de valores - esto muestra qué valores aparecen con mayor frecuencia en sus registros.
  5. Guardar una búsqueda:

    • Después de ejecutar una consulta útil, haga clic en "Save search". Esto es útil cuando necesita reutilizar la misma búsqueda más tarde.
    • Nómbrela "Sample Log Analysis" para una fácil identificación.
    • Esto aparecerá en su sección "Saved searches" para un acceso futuro.
  6. Crear un atajo de consulta de búsqueda:

    • Haga clic en "Search" → "Edit search shortcuts". Los atajos ahorran tiempo cuando utiliza ciertos filtros con frecuencia.
    • Agregue un nuevo atajo llamado "High Severity" con la consulta severity:[4 TO 7].
    • Ahora puede acceder rápidamente a esta vista filtrada desde el menú desplegable de búsqueda.
  7. (Opcional) Pruebe estas consultas avanzadas para explorar patrones de búsqueda más complejos:

    _exists_:severity AND severity:>3  ## Registros que tienen el campo de gravedad con valor >3
    message:/(sample|test)/i           ## Búsqueda con expresiones regulares (sin distinción entre mayúsculas y minúsculas)
    NOT severity:5                     ## Excluye registros de gravedad 5

Crear un panel de control (Dashboard)

En este último paso, creará un panel de control (dashboard) de Graylog para visualizar y analizar los datos de registro que ha recopilado. Los paneles de control son herramientas poderosas que ayudan a los analistas de seguridad a monitorear la actividad del sistema a simple vista, identificar patrones y detectar rápidamente posibles problemas de seguridad.

Comencemos accediendo a la interfaz web de Graylog donde construiremos nuestro panel de control:

  1. Acceda a la interfaz web de Graylog en http://127.0.0.1:9000 (nombre de usuario: admin, contraseña: admin)

  2. Cree un nuevo panel de control:

    • Haga clic en "Dashboards" en el menú superior - aquí es donde se gestionan todos sus paneles de control.
    • Haga clic en "Create dashboard" - comenzaremos desde cero con una nueva visualización.
    • Nómbrelo "Security Monitoring Dashboard" - elija un nombre descriptivo que refleje su propósito.
    • Haga clic en "Create" - esto inicializa su panel de control vacío.
  3. Agregue widgets a su panel de control. Los widgets son componentes individuales que muestran visualizaciones de datos específicas:

    a. Gráfico de conteo de mensajes (muestra cuántos registros llegan con el tiempo):

    • Haga clic en "Add widget" → "Message Count"
    • Configure con:
      • Título: "Log Volume" - nombra el widget para una fácil referencia.
      • Rango de tiempo: "Last 15 minutes" - muestra la actividad reciente.
      • Intervalo: "Minute" - agrupa los datos por minuto para ver tendencias claras.
    • Haga clic en "Save"

    b. Valores rápidos (muestra los valores más comunes en un campo):

    • Haga clic en "Add widget" → "Quick Values"
    • Configure con:
      • Título: "Top Sources" - muestra qué sistemas están generando registros.
      • Campo: "source" - el campo de registro que contiene información de origen.
      • Mostrar datos como: "Pie chart" - visualiza las proporciones claramente.
    • Haga clic en "Save"

    c. Estadísticas de campo (resume datos numéricos):

    • Haga clic en "Add widget" → "Field Statistics"
    • Configure con:
      • Título: "Severity Levels" - monitorea qué tan graves son los eventos registrados.
      • Campo: "severity" - el campo que contiene las calificaciones de gravedad.
      • Mostrar datos como: "Bar chart" - compara los valores lado a lado.
    • Haga clic en "Save"
  4. Organice su panel de control para una visibilidad óptima:

    • Arrastre y suelte los widgets para organizarlos - coloque widgets relacionados cerca unos de otros.
    • Redimensione los widgets arrastrando sus bordes - haga más grandes las visualizaciones importantes.
    • Haga clic en "Done editing" cuando termine - bloquea su diseño.
  5. Guarde su panel de control:

    • Haga clic en "Save dashboard" en la esquina superior derecha - conserva su trabajo.
    • Agregue una descripción: "Dashboard for monitoring security logs" - explica su propósito.
    • Haga clic en "Save"
  6. (Opcional) Establezca como predeterminado para mayor conveniencia:

    • Haga clic en el icono de estrella junto al nombre de su panel de control.
    • Esto hará que sea su vista predeterminada al iniciar sesión, ahorrándole tiempo durante las comprobaciones diarias.

Resumen

En este laboratorio (lab), has aprendido cómo desplegar Graylog utilizando Docker Compose, configurando servicios esenciales como MongoDB y Elasticsearch con almacenamiento persistente. Has lanzado con éxito la pila (stack), accedido a la interfaz web y verificado la funcionalidad de los contenedores para establecer una plataforma de registro centralizada.

El laboratorio te ha guiado a través de la configuración de entradas de registro, la prueba con datos de muestra y la utilización de las capacidades de consulta de Graylog para el análisis de registros. También has creado un panel de control (dashboard) personalizable para visualizar información de los registros, demostrando las aplicaciones prácticas de Graylog para el monitoreo y la resolución de problemas.