Wazuh no muestra información de los equipos de repente

Publicado por Alejandro Escario en

Wash es un software SIEM muy potente y versátil. Está basado en el stack ELK para lo bueno y para lo malo. Si bien ELK es un sistema muy potente y robusto, hay que tener en cuenta en todo momento que es un sistema muy sensible a las versiones de sus distintos componentes.

ELK tiene dos grandes repositorios en función de la licencia del mismo como podemos ver en su web. Es de vital importancia que las versiones de los distintos componentes de nuestra arquitectura sean consistentes entre sí y, sin embargo, es muy común que, si no tenemos cuidado al usar los gestores de paquetes para actualizar este software surjan complicaciones. Por ejemplo, la versión 7.10 de ElasticSearch no es compatible con la 7.13+ de la misma distribución o que, por ejemplo la versión 7.10 de ElasticSearch no es compatible con la versión oss-7.10 de filebeat.

y… ¿Qué tiene que ver todo esto con Wazuh? pues bien, me encuentro en varias ocasiones con situaciones en las que veo que el dashboard deja de mostrar datos de los equipos de repente.

Ejemplo de dashboard de wazuh.

Cuando el dashboard de Wazuh deja de mostrar datos de repente, lo primero que deberemos hacer es entrar a la consola del equipo y ejecutar el comando:

~# filebeat test output

Este comando revisará la configuración y la comunicación entre los componentes. En mi caso obtuve la siguiente salida:

~# filebeat test output
elasticsearch: https://192.168.1.10:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: 192.168.1.10
    dial up... OK
  TLS...
    security: server's certificate chain verification is enabled
    handshake... OK
    TLS version: TLSv1.2
    dial up... OK
  talk to server... ERROR Connection marked as failed because the onConnect callback failed: could not connect to a compatible version of Elasticsearch: 400 Bad Request: {"error":{"root_cause":[{"type":"invalid_index_name_exception","reason":"Invalid index name [_license], must not start with '_'.","index":"_license","index_uuid":"_na_"}],"type":"invalid_index_name_exception","reason":"Invalid index name [_license], must not start with '_'.","index":"_license","index_uuid":"_na_"},"status":400}

Llegados a este punto podemos ver en el mensaje que hay problemas de licencia. Es decir, las versiones por «alguna razón» son incompatibles. En este caso se podía observar como la versión de filebeat era una:

~# filebeat version
filebeat version 7.17.17 (amd64), libbeat 7.17.17 [af0928f86fb2f8c2da6e72ad7eef25d67f7815c9 built 2024-01-17 19:05:41 +0000 UTC]

Mientras que la versión de elastic search era otra:

~# curl -XGET -k https://<ELASTICSEARCH_HOST_IP>:9200 -u <ELASTICSEARCH_USER>:<ELASTICSEARCH_USER_PASSWORD>

{
  "name" : "node-1",
  "cluster_name" : "wazuh-indexer-cluster",
  "cluster_uuid" : "DaJoCkJWSA7mSH2yOgnJZw",
  "version" : {
    "number" : "7.10.2",
    "build_type" : "rpm",
    "build_hash" : "db90a415ff2fd428b4f7b3f800a51dc229287cb4",
    "build_date" : "2023-06-03T06:24:25.112415503Z",
    "build_snapshot" : false,
    "lucene_version" : "9.6.0",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}

Llegados a este punto, todo nos indica que tenemos que bajar la versión de filebeat ya que en la versión 7.13+ se introdujeron cambios importantes.

~# apt  install filebeat=7.10.2

Llegados a este punto pueden pasar dos cosas, que las versiones sean las correctas o que falte algo por hacer. En este caso, al ejecutar el comando de test de nuevo, veremos que, al menos en mi caso salía el siguiente error:

~# filebeat test output
elasticsearch: https://192.168.1.10:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: 1.1.1.1
    dial up... OK
  TLS...
    security: server's certificate chain verification is enabled
    handshake... OK
    TLS version: TLSv1.2
    dial up... OK
  talk to server... ERROR Connection marked as failed because the onConnect callback failed: Filebeat requires the default distribution of Elasticsearch. Please update to the default distribution of Elasticsearch for full access to all free features, or switch to the OSS distribution of Filebeat.

Ahora el error es mucho más claro. Tenemos ElasticSearch y Filebeat en la misma versión pero en una distribución distinta. Para solucionar esto vamos a cambiar el origen del repositorio de elasticsearch para que concuerde con el instalado por wazuh:

~# nano /etc/apt/sources.list.d/elastic-7.x.list 

Y cambiaremos la línea:

deb https://artifacts.elastic.co/packages/7.x/apt stable main

Por

deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main


Ahora actualizamos la lista de repositorios y volvemos a instalar filebeat en la versión deseada pero esta vez en su distribución OSS:
~# apt update
~# apt  install filebeat=7.10.2

Si ahora ejecutamos el comando de pruebas, veremos como el resultado es correcto:

~# filebeat test output
elasticsearch: https://192.168.1.10:9200…
parse url… OK
connection…
parse host… OK
dns lookup… OK
addresses: 192.168.1.10
dial up… OK
TLS…
security: server's certificate chain verification is enabled
handshake… OK
TLS version: TLSv1.2
dial up… OK
talk to server… OK
version: 7.10.2

Si ahora volvemos a acceder al dashboard, veremos como empiezan a aparecer los datos y los logs de los equipos.

Categorías: Uncategorized

0 comentarios

Deja una respuesta

Marcador de posición del avatar

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