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.
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.