Como desplegar Wazuh en Docker

En la entrada de hoy voy a enseñaros a desplegar Wazuh sobre Docker.

Para aquellos que no sepáis lo que es Wazuh os diré que es una plataforma de detección y respuesta de seguridad de código abierto utilizada para monitorear la seguridad en entornos de tecnología de la información.

Requisitos

Para poder seguir este tutorial es necesario cumplir con los siguientes requisitos:

  • Servidor con Docker instalado. Es necesario disponer de docker-compose.
  • Conexión a internet
  • Visibilidad del servidor donde vamos a desplegar Wazuh con la red interna donde se encuentran los dispositivos a monitorizar.

Despliegue de Wazuh

Clonación del repositorio

El primer paso es conectarnos al servidor donde tenemos instalado Docker y posicionarnos en el directorio /opt

 cd /opt

A continuación vamos a clonar el repositorio de Wazuh.

git clone https://github.com/wazuh/wazuh-docker.git -b v4.3.10

Una vez clonado veréis como tenemos una nueva carpeta llamada wazuh-docker, accedemos a ella.

cd wazuh-docker

Configuración de certificados

El siguiente paso es crear los certificados necesarios para proteger las comunicaciones entre los nodos.

Wazuh provee un fichero yaml el cual nos generará todos los certificados que necesitaremos para utilizar la aplicación.

Para ello vamos a acceder al directorio single-node.

cd single-node

Y ejecutamos el fichero yaml mediante el siguiente comando.

docker-compose -f generate-indexer-certs.yml run --rm generator

Esto nos generará los certificados necesarios para la comunicación entre los nodos y nos los guardará en la ruta /opt/wazuh-docker/single-node/config/wazuh_indexer_ssl_certs

Despliegue de Wazuh

Para desplegar Wazuh utilizaremos el siguiente comando (importante encontrarnos en la ruta (/opt/wazuh-docker/single-node).

docker-compose up -d

Una vez se han descargado las imágenes, se han creado los contenedores, etc… comprobaremos que todos los contenedores están arriba. Para ellos ejecutamos el siguiente comando:

docker ps -a | grep wazuh

Y como podemos comprobar todos los contenedores se encuentran arriba 🙂

0df332531baf   wazuh/wazuh-dashboard:4.3.10                      "/entrypoint.sh"         About a minute ago   Up About a minute              443/tcp, 0.0.0.0:443->5601/tcp, :::443->5601/tcp                                                                                                                single-node_wazuh.dashboard_1
c91c954e26fe   wazuh/wazuh-manager:4.3.10                        "/init"                  About a minute ago   Up About a minute              0.0.0.0:1514-1515->1514-1515/tcp, :::1514-1515->1514-1515/tcp, 0.0.0.0:514->514/udp, :::514->514/udp, 0.0.0.0:55000->55000/tcp, :::55000->55000/tcp, 1516/tcp   single-node_wazuh.manager_1
6fae92a64910   wazuh/wazuh-indexer:4.3.10                        "/entrypoint.sh open…"   About a minute ago   Up About a minute              0.0.0.0:9200->9200/tcp, :::9200->9200/tcp                                                                                                                       single-node_wazuh.indexer_1

Acceso a Wazuh

Para acceder a Wazuh debemos abrir un navegador y conectarnos a https://ip_servidor_wazuh y utilizar como credenciales Usuario: admin – Contraseña: SecretPassword

Cambiar la contraseña por defecto del usuario admin

Como buena práctica en materia de seguridad, es recomendable cambiar la contraseña por defecto de Wazuh para ello debemos seguir los siguientes pasos:

Nos dirigimos al directorio donde hemos desplegado Wazuh (en mi caso /opt/wazuh-docker/single-node) y ejecutamos el siguiente comando para parar todos los contenedores de Wazuh.

docker-compose stop

A continuación vamos a generar un hash para la nueva contraseña.

docker run --rm -ti wazuh/wazuh-indexer:4.3.10 bash /usr/share/wazuh-indexer/plugins/opensearch-security/tools/hash.sh

Nos pedirá la nueva contraseña, la introducimos y copiamos el hash generado.

[Password:]
$2y$12YLnabJavVtWYxe4ACAWIuPm4snzP/odTOP4Ocqt3imN/7TzW

Modificamos el siguiente fichero

nano /opt/wazuh-docker/single-node/config/wazuh_indexer/internal_users.yml

Modificamos el hash del usuario admin por el nuevo que hemos generado.

A continuación, vamos a modificar el fichero docker-compose.yml que tenemos en /opt/wazuh-docker/single-node y en todas las etiquetas que ponga INDEXER_PASSWORD tendremos que escribir la nueva contraseña.

Por último levantamos nuevamente nuestro entorno.

docker-compose up -d

Una vez tenemos levantado el entorno el siguiente paso será lanzar un docker ps para copiar el nombre del contenedor Wazuh indexer container. Una vez tenemos el nombre accederemos vía bash al contenedor, para ello ejecutamos el siguiente comando:

 docker exec -it nombre_contenedor bash

Ahora que estamos dentro del contenedor debemos modificar las siguientes variables ejecutando lo siguiente:

export INSTALLATION_DIR=/usr/share/wazuh-indexer
export OPENSEARCH_PATH_CONF=${INSTALLATION_DIR}/config
CACERT=$OPENSEARCH_PATH_CONF/certs/root-ca.pem
KEY=$OPENSEARCH_PATH_CONF/certs/admin-key.pem
CERT=$OPENSEARCH_PATH_CONF/certs/admin.pem
export JAVA_HOME=/usr/share/wazuh-indexer/jdk

Por último ejecutamos el siguiente script.

bash /usr/share/wazuh-indexer/plugins/opensearch-security/tools/securityadmin.sh -cd /usr/share/wazuh-indexer/plugins/opensearch-security/securityconfig/ -nhnv -cacert  $CACERT -cert $CERT -key $KEY -p 9300 -icl

Y ya podremos acceder a Wazuh con el usuario admin y la nueva contraseña.

En próximas entradas os iré explicando como instalar los agentes en los servidores o equipos a monitorizar, como crear reglas y muchas otras cosas más.

Como siempre espero os haya sido de utilidad.

Deja un comentario

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