Ciberseguridad

Instale Graylog en Debian para centralizar y analizar fácilmente sus registros

I. Introducción

Graylog es una solución "log sink" de código abierto diseñada para centralizar, almacenar y analizar logs de tus máquinas y dispositivos de red en tiempo real. En este tutorial, aprenderemos a instalar la versión gratuita de Graylog en una máquina Debian 12.

En un sistema de información, cada servidor, ya sea Linux o Windows, y cada equipo de red (switch, router, cortafuegos, etc.) genera sus propios registros, almacenados localmente. Dado que los registros se almacenan localmente en cada máquina, analizar y correlacionar eventos es muy difícil... Aquí es donde entra Graylog . Actúa como un sumidero de registros, lo que significa que todas sus máquinas le envían sus registros (a través de syslog, por ejemplo). Graylog almacenará e indexará estos registros, permitiéndole realizar búsquedas globales y crear alertas.

Graylog es una herramienta de análisis y supervisión que facilita la identificación de comportamientos sospechosos y diversos problemas (estabilidad, rendimiento, etc.).

Nota : la versión gratuita, Graylog Open, no es un SIEM como Wazuh, por ejemplo, ya que carece de funciones reales de detección de intrusos.

II. Requisitos previos

La pila Graylog se basa en varios componentes que tendremos que instalar y configurar. Aquí instalaremos todos los componentes en el mismo servidor, pero es posible crear clusters basados en varios nodos y distribuir los roles entre varios servidores. Para los propósitos de este tutorial, instalaremos Graylog 6.1, la versión más reciente hasta la fecha.

  • MongoDB 6, la versión actual recomendada para Graylog (mínimo 5.0.7, máximo 7.x)
  • OpenSearch, una bifurcación de código abierto de Elasticsearch creada por Amazon (mínimo 1.1.x, máximo 2.15.x)
  • OpenJDK 17

El servidor Graylog se ejecuta en Debian 12, pero la instalación es posible en otras distribuciones, incluso a través de Docker. La máquina virtual está equipada con 8 GB de RAM y 256 GB de espacio en disco, con el fin de tener suficientes recursos para todos los componentes (de lo contrario esto puede tener un impacto significativo en el rendimiento). Sin embargo, sólo estoy dando esto como una guía aproximada, ya que el dimensionamiento de la arquitectura Graylog depende de la cantidad de información a procesar. Graylog puede procesar 30 MB o 300 MB de datos al día, o 300 GB de datos al día... Es una solución escalable capaz de manejar terabytes de registros (véase esta página).

Fuente : Graylog

Antes de iniciar la configuración, asigne una dirección IP estática a la máquina Graylog e instale las últimas actualizaciones. Asegúrese de establecer la zona horaria de la máquina local y definir un servidor NTP para la sincronización de fecha y hora. Este es el comando a ejecutar:

sudo timedatectl set-timezone Europe/Paris

Nota : La instalación deOpenSearch es opcional si utiliza Graylog Data Node.

III Instalación paso a paso de Graylog

Empecemos por actualizar la caché de paquetes e instalar las herramientas que necesitamos para lo que está por venir.

sudo apt-get update
sudo apt-get install curl lsb-release ca-certificates gnupg2 pwgen

A. Instalación de MongoDB

Una vez hecho esto, empezaremos a instalar MongoDB. Descarga la clave GPG correspondiente al repositorio de MongoDB:

curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor

A continuación, añada el repositorio de MongoDB 6 a la máquina Debian 12:

echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg] http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

A continuación, actualizaremos la caché de paquetes e intentaremos instalar MongoDB :

sudo apt-get update
sudo apt-get install -y mongodb-org

MongoDB no se puede instalar, ya que falta una dependencia: libssl1.1. Tendremos que instalar este paquete manualmente antes de poder continuar, ya que Debian 12 no lo tiene en sus repositorios.

Les paquets suivants contiennent des dépendances non satisfaites :
 mongodb-org-mongos : Dépend: libssl1.1 (>= 1.1.1) mais il n'est pas installable
 mongodb-org-server : Dépend: libssl1.1 (>= 1.1.1) mais il n'est pas installable
E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ».

Vamos a descargar el paquete DEB llamado "libssl1.1_1.1.1f-1ubuntu2.23_amd64.deb" (última versión) con el comando wget, y luego instalarlo con el comando dpkg. Esto produce los siguientes dos comandos:

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.23_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.23_amd64.deb

Reinicie la instalación de MongoDB:

sudo apt-get install -y mongodb-org

A continuación, reinicie el servicio MongoDB y habilítelo para que se inicie automáticamente cuando se inicie el servidor Debian.

sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl restart mongod.service
sudo systemctl --type=service --state=active | grep mongod

Con MongoDB instalado, podemos pasar a instalar el siguiente componente.

B. Instalación de OpenSearch

Pasemos a instalar OpenSearch en el servidor. El siguiente comando añade la clave de firma para los paquetes OpenSearch:

curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring

Luego añade el repositorio OpenSearch para que podamos descargar el paquete con apt más tarde:

echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch-2.x.list

Actualice su caché de paquetes :

sudo apt-get update

A continuación, instale OpenSearch, teniendo cuidado de establecer la contraseña por defecto para la cuenta Admin de su instancia . En este caso, la contraseña es "IT-Connect2024!", pero sustituya este valor por una contraseña segura. Evite contraseñas débiles como "P@ssword123" y utilice al menos 8 caracteres con al menos un carácter de cada tipo (minúscula, mayúscula, número y carácter especial), de lo contrario se producirá un error al final de la instalación. Este es un requisito previo desde OpenSearch 2.12.

sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=IT-Connect2024! apt-get install opensearch

Tenga paciencia durante la instalación...

Cuando hayas terminado, tómate un momento para realizar la configuración mínima. Abra el archivo de configuración en formato YAML:

sudo nano /etc/opensearch/opensearch.yml

Cuando el archivo esté abierto, configure las siguientes opciones:

cluster.name: graylog
node.name: ${HOSTNAME}
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
discovery.type: single-node
network.host: 127.0.0.1
action.auto_create_index: false
plugins.security.disabled: true

Esta configuración de OpenSearch está diseñada para configurar un único nodo. Aquí hay algunas explicaciones de los diferentes parámetros que utilizamos:

  • cluster.name: graylog : este parámetro nombra el cluster OpenSearch con el nombre "graylog".
  • node.name: ${HOSTNAME} : el nombre del nodo se establece dinámicamente para que coincida con el de la máquina Linux local. Aunque sólo tengamos un nodo, es importante nombrarlo correctamente.
  • ruta.datos: /var/lib/opensearch: esta ruta especifica dónde almacena OpenSearch sus datos en la máquina local, en este caso en "/var/lib/opensearch".
  • ruta.logs: /var/log/opensearch: esta ruta define dónde se almacenan los archivos de registro de OpenSearch, aquí en "/var/log/opensearch".
  • discovery.type: single-node : este parámetro configura OpenSearch para trabajar con un único nodo, de ahí la elección de la opción "single-node".
  • network.host: 127.0.0.1: esta configuración significa que OpenSearch sólo escucha en su interfaz loopback local, lo cual es suficiente ya que está en el mismo servidor que Graylog.
  • action.auto_create_index: false : al desactivar la creación automática de índices, OpenSearch no creará automáticamente un índice cuando se envíe un documento sin un índice existente.
  • plugins.security.disabled: true: esta opción desactiva el complemento de seguridad OpenSearch, lo que significa que no habrá autenticación, gestión de acceso ni cifrado de comunicaciones. Esta configuración ahorra tiempo al configurar Graylog, pero debe evitarse en producción (consulte esta página).

Algunas opciones ya están presentes, por lo que sólo tiene que eliminar el "#" para activarlas y, a continuación, indicar su valor. Si no encuentra una opción, puede declararla directamente al final del archivo.

Guarde y cierre este archivo.

C. Configurar Java (JVM)

Es necesario configurar la máquina virtual Java utilizada por OpenSearch para ajustar la cantidad de memoria que puede utilizar este servicio. Edite el siguiente archivo de configuración:

sudo nano /etc/opensearch/jvm.options

Con la configuración desplegada aquí, OpenSearch comenzará con 4 GB de memoria asignada y podrá crecer hasta 4 GB, por lo que no habrá variación de memoria durante el funcionamiento. Aquí, la configuración tiene en cuenta que la máquina virtual tiene un total de 8 GB de RAM. Ambos parámetros deben tener el mismo valor. Esto significa sustituir las líneas :

-Xms1g
-Xmx1g

Con estas líneas :

-Xms4g
-Xmx4g

He aquí una imagen de la modificación a realizar:

Cierre este archivo después de guardarlo.

Además, tenemos que comprobar la configuración del parámetro "max_map_count" en el kernel de Linux. Define el límite de áreas de memoria mapeadas por proceso, con el fin de satisfacer las necesidades de nuestra aplicación. OpenSearch, al igual que Elasticsearch, recomienda establecer este valor en "262144" para evitar errores de gestión de memoria.

En principio, en una máquina Debian 12 recién instalada, el valor ya es correcto. Pero vamos a comprobarlo. Ejecute este comando:

cat /proc/sys/vm/max_map_count

Si obtiene un valor distinto de "262144", ejecute el siguiente comando; de lo contrario, no es necesario.

sudo sysctl -w vm.max_map_count=262144

Por último, active el inicio automático de OpenSearch y ejecute el servicio asociado.

sudo systemctl daemon-reload
sudo systemctl enable opensearch
sudo systemctl restart opensearch

Si muestra el estado de su sistema, debería ver un proceso Java con 4 GB de RAM.

top

Siguiente paso: ¡la tan esperada instalación de Graylog!

D. Instalación de Graylog

Para instalar la última versión de Graylog 6.1 , ejecute los 4 comandos siguientes para descargar e instalar Graylog Server:

wget https://packages.graylog2.org/repo/packages/graylog-6.1-repository_latest.deb
sudo dpkg -i graylog-6.1-repository_latest.deb
sudo apt-get update
sudo apt-get install graylog-server

Una vez hecho esto, tenemos que hacer algunos cambios en la configuración de Graylog antes de intentar lanzarlo.

Empecemos por configurar estas dos opciones:

  • password_secret : este parámetro se utiliza para definir una clave utilizada por Graylog para asegurar el almacenamiento de las contraseñas de los usuarios (en el espíritu de una clave de salting). Esta clave debe ser única y aleatoria.
  • root_password_sha2 : este parámetro corresponde a la contraseña de administrador por defecto en Graylog. Se almacena como un hash SHA-256.

Empezaremos generando una clave de 96 caracteres para el parámetro password_secret:

pwgen -N 1 -s 96
wVSGYwOmwBIDmtQvGzSuBevWoXe0MWpNWCzhorBfvMMhia2zIjHguTbfl4uXZJdHOA0EEb1sOXJTZKINhIIBm3V57vwfQV59

Copie el valor devuelto y abra el archivo de configuración de Graylog:

sudo nano /etc/graylog/server/server.conf

Pega la clave en el parámetro password_secret, así:

Guarde y cierre el archivo.

A continuación, debe establecer la contraseña de la cuenta "admin" creada por defecto. En el archivo de configuración, es el hash de la contraseña que debe ser almacenada, lo que significa calcularla. El ejemplo siguiente da el hash de la contraseña "PuitsDeLogs@": adapte el valor a su contraseña.

echo -n "PuitsDeLogs@" | shasum -a 256
6b297230efaa2905c9a746fb33a628f4d7aba4fa9d5c1b3daa6846c68e602d71

Copie el valor obtenido como salida (sin el guión al final de la línea).

Vuelva a abrir el archivo de configuración de Graylog:

sudo nano /etc/graylog/server/server.conf

Pega el valor en la opción root_password_sha2 así:

Mientras estás en el archivo de configuración, establece la opción "http_bind_address". Especifica "0.0.0.0:9000" para que se pueda acceder a la interfaz web de Graylog en el puerto 9000, a través de cualquier dirección IP del servidor.

A continuación, establezca la opción "elasticsearch_hosts" en "http://127.0.0.1:9200" para declarar nuestra instancia local de OpenSearch. Esto es necesario, ya que no estamos utilizando un nodo de datos Graylog. Y sin esta opción, no será posible ir más allá...

Guarde y cierre el archivo.

Este comando activa Graylog para que se inicie automáticamente en el siguiente arranque, y lanza inmediatamente el servidor Graylog.

sudo systemctl enable --now graylog-server

Una vez hecho esto, intenta conectarte a Graylog desde un navegador. Introduzca la dirección IP (o el nombre) del servidor y el puerto 9000.

Para su información :

No hace mucho tiempo, cuando te conectabas por primera vez a Graylog, aparecía una ventana de autenticación similar a la siguiente. Tenías que introducir tu nombre de usuario y contraseña "admin". Y entonces te llevabas la desagradable sorpresa de que la conexión no funcionaba.

Fue necesario volver a la línea de comandos del servidor Graylog y consultar los registros. Entonces pudimos ver que para la primera conexión, es necesario utilizar una contraseña temporal, especificada en los logs.

tail -f /var/log/graylog-server/server.log

Entonces había que volver a intentar una conexión con el usuario "admin" y la contraseña temporal, ¡y eso permitía entrar!

Esto ya no es así. Simplemente inicie sesión con su cuenta de administrador y la contraseña configurada en la línea de comandos.

¡Bienvenido a la interfaz de Graylog!

E. Graylog: crear una nueva cuenta de administrador

En lugar de utilizar la cuenta de administrador creada de forma nativa por Graylog, puedes crear tu propia cuenta de administrador personal. Haz clic en el menú "System", luego en Users and Teams" y haz clic en el botón "Create user". A continuación, rellena el formulario y asigna el rol de administrador a tu cuenta.

Una cuenta personalizada puede contener información adicional, como nombre y apellidos y dirección de correo electrónico, a diferencia de una cuenta de administrador nativa. Además, esto garantiza una mejor trazabilidad cuando cada persona trabaja con una cuenta personalizada.

IV. Conclusión

Ahora ya sabemos cómo instalar Graylog en una máquina Debian 12. Ahora puede almacenar, indexar y analizar sus registros desde una única consola.

A continuación, veremos cómo enviar logs desde máquinas Linux y Windows Server a nuestro servidor Graylog: ¡aquí es donde la cosa se pone aún más interesante! Para ello, tendremos que declarar nuevos "Inputs" en Graylog (así como Indexes y Streams) y configurar el envío de logs a los servidores. También intentaré publicar un tutorial sobre cómo proteger OpenSearch activando el módulo de seguridad y configurando alertas por correo electrónico mediante la función de notificación.

Más información :

author avatar
Florian Burnel Co-founder of IT-Connect
Systems and network engineer, co-founder of IT-Connect and Microsoft MVP "Cloud and Datacenter Management". I'd like to share my experience and discoveries through my articles. I'm a generalist with a particular interest in Microsoft solutions and scripting. Enjoy your reading.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.