Continuando con mi proyecto de SIEM Open Source (Wazuh) voy a detallar los pasos de instalación básicos del stack. De la nada a empezar a tener identificación de eventos. Seguimos con Wazuh Dashboard
Resumen práctico de la instalación del Wazuh
Disclaimer:
Esto describe la instalación que realice por mano propia con las
versiones descriptas y los recursos que me disponibilizaron, puede
existir mejoras o variaciones para otros casos.
Parto de que los servidores ya poseen el sistema operativo instalador y actualizado
Instalado Wazuh Dashboard
IP asignada de Ejemplo: 192.168.20.148
Consideraciones
Instalo Docker
curl -sSL https://get.docker.com/ | sh systemctl start docker sudo apt install docker-compose docker pull wazuh/wazuh-dashboard:4.8.2
Defino la carpeta del contenedor:
mkdir /srv/wazuh-dashboardGenero las carpetas de configuración del contenedor:
mkdir /srv/wazuh-dashboard/config mkdir /srv/wazuh-dashboard/config/wazuh_dashboard 🠆 config del dashboard mkdir /srv/wazuh-dashboard/config/wazuh_indexer_ssl_certs 🠆 certificados para hablar con el indexer
Cargar certificados
- dashboard.pem
- dashboard-key.pem
- root-ca.pem
https://github.com/wazuh/wazuh-docker/tree/v4.8.2/single-node/config/wazuh_dashboard
Editar wazuh.yml
nano /srv/wazuh-dashboard/config/wazuh_dashboard/wazuh.yml url: "https://192.168.20.149"
port: 55000
username: wazuh-wui
password: "<Clave_Generada>" tar -axf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt -O | grep -P "\'wazuh\'" -A 1Editar opensearch_dashboards.yml
nano /srv/wazuh-dashboard/config/wazuh_dashboard/opensearch_dashboards.ymlopensearch.hosts: https://192.168.20.148:9200 Armo el Docker-Compose
sudo nano docker-compose.yml# Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2) version: '3.7' services: wazuh.dashboard: image: wazuh/wazuh-dashboard:4.8.2 hostname: srvlwazuhdashboard restart: always ports: - 443:5601 environment: - TZ=America/Argentina/Buenos_Aires - INDEXER_USERNAME=admin - INDEXER_PASSWORD=clave_indexer - WAZUH_API_URL=https://192.168.20.149 - DASHBOARD_USERNAME=kibanaserver - DASHBOARD_PASSWORD=<clave> - API_USERNAME=wazuh-wui - API_PASSWORD=<clave> volumes: - ./config/wazuh_indexer_ssl_certs/dashboard.pem:/usr/share/wazuh-dashboard/certs/wazuh-dashboard.pem - ./config/wazuh_indexer_ssl_certs/dashboard-key.pem:/usr/share/wazuh-dashboard/certs/wazuh-dashboard-key.pem - ./config/wazuh_indexer_ssl_certs/root-ca.pem:/usr/share/wazuh-dashboard/certs/root-ca.pem - ./config/wazuh_dashboard/opensearch_dashboards.yml:/usr/share/wazuh-dashboard/config/opensearch_dashboards.yml - ./config/wazuh_dashboard/wazuh.yml:/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml - wazuh-dashboard-config:/usr/share/wazuh-dashboard/data/wazuh/config - wazuh-dashboard-custom:/usr/share/wazuh-dashboard/plugins/wazuh/public/assets/custom volumes: wazuh-dashboard-config: wazuh-dashboard-custom:
Guardar las claves con Docker Swarm
Reglas de Firewall
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow https
sudo ufw enable
Levantar Docker
docker-compose up -d
Opción de instalación SIN Docker
Instalar dashboard
sudo bash wazuh-install.sh --wazuh-dashboard dashboard
Al finalizar muestra en consola la clave inicial para ingresar
INFO: --- Summary ---
INFO: You can access the web interface https://<wazuh-dashboard-ip>
User: admin
Password: <ADMIN_PASSWORD>
INFO: Installation finished.
Ahora
ha instalado y configurado Wazuh. Encuentre todas las contraseñas que
generó el asistente de instalación de Wazuh en el archivo
wazuh-passwords.txt dentro del archivo wazuh-install-files.tar. Para
imprimirlos, ejecute el siguiente comando:
Para ver todas las claves que generó el asistente de instalación de Wazuh (archivo wazuh-passwords.txt dentro del archivo wazuh-install-files.tar) ejecutar:
tar -O -xvf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt
Certificado dashboard
Copiar los certificados a
/etc/wazuh-dashboard/certs
Cambio los permisos del los certificados
chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/
chmod -R 500 /etc/wazuh-dashboard/certs/
chmod 400 /etc/wazuh-dashboard/certs/*
Modifico el archivo
/etc/wazuh-dashboard/opensearch_dashboards.yml
Busco las lineas:
- server.ssl.key: "/etc/wazuh-dashboard/certs/privkey.pem"
- server.ssl.certificate: "/etc/wazuh-dashboard/certs/fullchain.pem"
Las reemplazo con los nombres de los certificados copiados anteriormente
Configuración del TimeZone
Listo los timezone disponibles para tomar el mismo código
timedatectl list-timezones
En base al listado anterior seteo el timezone correspondiente
sudo timedatectl set-timezone your_time_zone Verifico el timezone se encuentre aplicado correctamente
timedatectl
Parametría del Dashboard
Dark Mode
Ir al menú
- En v4.7: Management -> Stack Management -> Advanced Settings -> Dark mode
- En v4.8: ☰ -> Dashboard Management -> Advanced Settings -> Dark Mode
Creación de Usuarios locales
Para poder ingresar con usuarios distinto al admin,
es necesario crear los roles con los permisos que vamos asignar y luego
los usuarios tanto en el Opensearch como en panel de Wazuh. Vamos a
utilizar usuarios internos en esta primera etapa.
Tener en cuenta, el User Maping primero se crea en OpenSearch y luego se mapea con los roles
Dentro del Wazuh Dasboard, ir a
☰ -> Indexer management -> Security -> Internal User -> botón Create internal user
Cargar el usurname y clave, guardar
☰ -> Indexer management > Security -> Roles
buscar all_access -> botón Duplicate Role
- Name = nombre que le vamos al dar al nuevo rol ej all_access_agusoft
botón Create para confirmar
Seleccionar el nuevo rol creado (hacer click) -> tab Mapped Users -> botón Manage Mapping
Buscar el usuario creado para darlos los atributos del nuevo rol dentro de Indexer
Ahora mapeamos el user con Wazuh, para ello
Menu prinicipal -> Wazuh -> Security -> Roles Mapping -> botón Create Role Mapping
Completamos los datos con:
- Role mapping name: Asignar el nombre al mapeo
- Roles: administrator
- Internal users: seleccionar el (los) usuario creado previamente
botón Save role mapping para guardar y mapear el usuario con Wazuh como administrador.
Ya tenemos los usuarios locales creados con permisos de admin para un primera entrega
En próximos post abordaré la integración con Active Directory
Para profundizar sobre la gestión de usuario, ver documentación oficial:
https://documentation.wazuh.com/current/user-manual/user-administration/rbac.html
Index Life Management (ILM)
Las políticas de ILM se crean en el dashboard de Wazuh, accediendo a Stack Management -> Index Management > State management policies. Allí, se crea una nueva política usando el editor visual o el editor JSON (este último es el que voy a utilizar)
Utilicé los nombres por default, para este caso definí 7 días para la retención en caliente (hot) y 90 días para la retención en frío (cold), superando los 90 días se eliminan los registros.
Ajustar la retención según el espacio disponible y las normativas a cumplir
[JSON a cargar]
{
"policy": {
"description": "Política de retención de 7 días en caliente y 90 en frío.",
"default_state": "hot",
"states": [
{
"name": "hot",
"actions": [],
"transitions": [
{
"state_name": "cold",
"conditions": {
"min_index_age": "7d"
}
}
]
},
{
"name": "cold",
"actions": [
{
"read_only": {}
}
],
"transitions": [
{
"state_name": "delete",
"conditions": {
"min_index_age": "90d"
}
}
]
},
{
"name": "delete",
"actions": [
{
"delete": {}
}
],
"transitions": []
}
]
}
}- hot: Esta es la fase inicial donde se almacenan los datos de los últimos 7 días. Los datos están activos y listos para ser consultados.
- cold: Después de 7 días ("min_index_age": "7d"), los índices pasan a esta fase. La acción "read_only": {} los hace de solo lectura para reducir el consumo de recursos.
- delete: Después de 90 días en la fase "fría" ("min_index_age": "90d"), los índices se eliminan permanentemente con la acción "delete": {}.
Aplicar la política a los índices
Una vez creada la política, se debe aplicarla a los índices de alertas de Wazuh. Los índices de alertas siguen el patrón wazuh-alerts-*.
Se aplica la política de dos maneras:
- Para nuevos índices: Asignar la política a la plantilla de índices de Wazuh para que cualquier índice nuevo herede automáticamente la configuración. Esto se hace en Index Management > Index Templates.
- Para índices existentes: Usar la consola de Dev Tools en el dashboard de Wazuh (a la izquierda, dentro de Stack Management) para aplicar la política a los índices que ya existen. El comando es similar a esto:
POST _ilm/start/wazuh-alerts-*
{
"policy_id": "<nombre_de_la_politica>"
}Donde nombre_de_la_politica corresponde al nombre utilizado al crear el ILM (paso anterior)
Se puede ampliar los concepto viendo la siguiente documentación:
- https://documentation.wazuh.com/current/user-manual/wazuh-indexer/index-life-management.html
- https://benheater.com/wazuh-index-management-policy/
Bonus Track: NGINX
Mas Referencias
- https://documentation.wazuh.com/current/deployment-options/docker/index.html
- https://documentation.wazuh.com/current/getting-started/components/wazuh-dashboard.html
- https://documentation.wazuh.com/current/installation-guide/wazuh-dashboard/index.html
- https://documentation.wazuh.com/current/user-manual/wazuh-dashboard/index.html



0 comments:
Publicar un comentario