# Wazuh

[Doc officielle wazuh](https://documentation.wazuh.com/current/getting-started/index.html)&#x20;

<figure><img src="/files/geWwwadjrfg0rU81kJFC" alt=""><figcaption></figcaption></figure>

[**Wazuh**](https://wazuh.com) est une plateforme de sécurité open-source qui offre des fonctionnalités de surveillance des menaces, de détection des intrusions, de gestion de la conformité et de réponse aux incidents. Elle combine des capacités d'analyse de sécurité, comme la détection des malwares, le monitoring de l'intégrité des fichiers, l'analyse des logs, et la gestion des vulnérabilités, pour fournir une visibilité complète sur l'infrastructure informatique. Wazuh est conçu pour être extensible et scalable, ce qui le rend adapté à une variété d'environnements, des petites entreprises aux grandes organisations.

{% hint style="success" %}
On installera wazuh en single node.&#x20;

Deux types d'installations seront faites, via le package manager APT puis via Docker
{% endhint %}

## Installation via package manager APT

L'installation via package manager est disponible sur le blog de FIKARA Bilal sur une verison 4.8 de wazuh

[Install wazuh on debian using apt](https://bilaldotcom.hashnode.dev/wazuh-installation)

## Installation via Docker

{% hint style="success" %}
Nous installerons wazuh, configurerons un nginx en reverse proxy avec du SSL puis une authentification via LDAP&#x20;
{% endhint %}

### Installation de Docker <a href="#bkmrk-installation-de-dock" id="bkmrk-installation-de-dock"></a>

Exécuter le script d'installation de Docker

```sh
curl -sSL https://get.docker.com/ | sh
```

Démarrez le service Docker

```bash
systemctl start docker
```

Télécharger le binaire Docker Compose

```bash
curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
```

Accorder des autorisations d'exécution

```bash
chmod +x /usr/local/bin/docker-compose
```

Tester l'installation pour vous assurer que tout va bien

```bash
docker-compose --version
```

### Installation de Wazuh Docker <a href="#bkmrk-installation-de-wazu" id="bkmrk-installation-de-wazu"></a>

Cloner le référentiel Wazuh&#x20;

```bash
git clone https://github.com/wazuh/wazuh-docker.git -b v4.7.3
```

{% hint style="info" %}
Entrez ensuite dans le `single-node`répertoire pour exécuter toutes les commandes décrites ci-dessous dans ce répertoire.
{% endhint %}

```bash
cd /etc/docker/wazuh-docker/single-node
```

Fournir un groupe de certificats pour chaque nœud de la pile afin de sécuriser la communication entre les nœuds

<figure><img src="/files/AKfD1Y75qPV6ZtG6jamV" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Les noeuds Wazuh sont **Wazuh\_Indexer, Wazuh\_Manager et Wazuh\_Dashboard** . Notre install Wazuh est en single node ( tout en un )
{% endhint %}

Editer le `generate-indexer-certs.yml` avec un éditeur de votre choix.&#x20;

```bash
vim /etc/docker/wazuh-docker/single-node/generate-indexer-certs.yml
```

Le fichier devrait ressembler à ça

```bash
# Wazuh App Copyright (C) 2021 Wazuh Inc. (License GPLv2)
version: '3'
services:
generator:
image: wazuh/wazuh-certs-generator:0.0.1
hostname: wazuh-certs-generator
volumes:
- ./config/wazuh_indexer_ssl_certs/:/certificates/
- ./config/certs.yml:/config/certs.yml
```

{% hint style="info" %}
Si votre système utilise un proxy, ajoutez ce qui suit au `generate-indexer-certs.yml`fichier. Sinon, ignorez cette étape particulière&#x20;
{% endhint %}

```bash
environment:
  - HTTP_PROXY=YOUR_PROXY_ADDRESS_OR_DNS
```

**Sinon, ignorez cette étape particulière**&#x20;

Exécuter la commande suivante pour obtenir les certificats souhaités&#x20;

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

Cela enregistre les certificats dans le `config/wazuh_indexer_ssl_certs`répertoire.

Démarrer le single node à l'aide de docker compose en arrière plan

```bash
docker-compose up -d
```

{% hint style="info" %}
Pour savoir quand l'indexeur Wazuh est opérationnel, le conteneur du tableau de bord Wazuh utilise `curl`pour exécuter plusieurs requêtes vers l'API de l'indexeur Wazuh. Vous pouvez vous attendre à voir plusieurs messages de journal ou «Wazuh dashboard server is not ready yet » jusqu'au démarrage de l'indexeur Wazuh. Ensuite, le processus de configuration se poursuit normalement. Le démarrage de l'indexeur Wazuh prend environ 1 minute. Vous pouvez trouver les informations d'identification par défaut de l'indexeur Wazuh dans le fichier `docker-compose.yml`du conteneur
{% endhint %}

<mark style="background-color:blue;">**Wazuh est maintenant accessible sur https\://\<ip\_de\_votre\_serveur>**</mark>&#x20;

<mark style="background-color:blue;">**Utilise les identifiants admin**</mark>

### **Modification et ajout d'accès**

{% hint style="info" %}
Le nom d'utilisateur et le mot de passe par défaut du tableau de bord Wazuh sont `admin`et `SecretPassword`. Chose qui sera modifiée

Il existe deux types d'utilisateurs Wazuh : **Utilisateurs de l'indexeur Wazuh** et **Utilisateurs de l'API Wazuh :** [**Wazuh off**](https://documentation.wazuh.com/current/deployment-options/docker/wazuh-container.html#change-the-password-of-wazuh-users)

Pour changer le mot de passe de ces utilisateurs Wazuh,  les étapes suivantes doivent être exécutées depuis le répertoire `single-node/`
{% endhint %}

#### &#x20;**Utilisateurs de l'indexeur Wazuh**

{% hint style="info" %}
Les users qu'on modifiera seront admin et kibanaserver ( les users par défaut )

* admin : nom d'utilisateur pour l'indexer ( pourra se connecter à l'interface web avec tous les droits )
* kibanaserver : nom d'utilisateur pour le dashboard ( se connecte également à l'interface web en droit limité si restreint )
* wazuh-wui : username pour l'api ( ne pourra pas se connecter en web )

<mark style="color:red;">S'il y a des users personnalisés il faut les ajouter</mark> <mark style="color:red;"></mark><mark style="color:red;">`internal_users.yml`</mark><mark style="color:red;">fichier. Dans le cas contraire, l'exécution de cette procédure les supprime</mark>
{% endhint %}

#### **Définir un nouveau hachage**

Arrêter la pile de déploiement si elle est en cours d'exécution&#x20;

```bash
docker-compose down
```

Exécuter cette commande pour générer le hachage de votre nouveau mot de passe. Une fois le conteneur lancé, saisissez le nouveau mot de passe et appuyez sur **Entrée**

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

{% hint style="danger" %} <mark style="color:red;">Si vous comptez modifier deux users, vous devez donc générer deux hash avec la commande précédente</mark>
{% endhint %}

Copier le hachage généré

Ouvrir le `config/wazuh_indexer/internal_users.yml` fichier. Localisez le bloc correspondant à l'utilisateur pour lequel vous modifiez le mot de passe

Remplacez le hachage

<pre class="language-sh"><code class="lang-sh"><strong>vi config/wazuh_indexer/internal_users.yml
</strong></code></pre>

**`admin`utilisateur :**

{% hint style="info" %}
**Remplacez la ligne hash surlignée par le hash généré précédemment à l'intérieur des ""**
{% endhint %}

<figure><img src="/files/8aOcLrbWHWRYwBtZ2zBC" alt=""><figcaption></figcaption></figure>

**`kibanaserver`utilisateur**&#x20;

<figure><img src="/files/MLq4Fhfd6XXMxErkkJWs" alt=""><figcaption></figcaption></figure>

#### **Définition du nouveau mot de passe**

#### **Utilisateur de l'Indexer et du Dashboard**

Ouvrez le `docker-compose.yml`fichier. Remplacez toutes les occurrences de l'ancien mot de passe par le nouveau

{% hint style="danger" %} <mark style="color:red;">Avertissement</mark>&#x20;

<mark style="color:red;">N'utilisez pas les caractères $ ou & dans votre nouveau mot de passe. Ces caractères peuvent provoquer des erreurs lors du déploiement.</mark>
{% endhint %}

```sh
vi docker-compose.yml 
```

**`admin`utilisateur :**

Modifier **SecretPassword** par le mot de passe défini lors de la génération du hash

<figure><img src="/files/0eKhj6L5KY5HuyhDVxxz" alt=""><figcaption><p><a href="https://documentation.wazuh.com/current/deployment-options/docker/wazuh-container.html">Tirée de la doc officielle de Wazuh </a></p></figcaption></figure>

**`kibanaserver`utilisateur**

Modifier **kibanaserver** par le mot de passe défini lors de la génération du hash

<figure><img src="/files/PGQihr1GQlFGpxXRljC6" alt=""><figcaption><p><a href="https://documentation.wazuh.com/current/deployment-options/docker/wazuh-container.html">Tirée de la doc officielle de Wazuh </a></p></figcaption></figure>

#### **Appliquer les modifications**

Démarrer la pile de déploiement&#x20;

```bash
docker-compose up -d
```

Exécuter et noter le nom du premier conteneur de l'indexeur Wazuh : **single-node-wazuh.indexer-1**

```sh
docker ps 
```

&#x20;Entrer dans le conteneur

```bash
docker exec -it single-node-wazuh.indexer-1 bash
```

Définir les variables suivantes&#x20;

```bash
export INSTALLATION_DIR=/usr/share/wazuh-indexer
CACERT=$INSTALLATION_DIR/certs/root-ca.pem
KEY=$INSTALLATION_DIR/certs/admin-key.pem
CERT=$INSTALLATION_DIR/certs/admin.pem
export JAVA_HOME=/usr/share/wazuh-indexer/jdk
```

Attendre que l'indexeur Wazuh s'initialise correctement.

{% hint style="success" %}
Le temps d'attente peut varier de deux à cinq minutes. Cela dépend de la taille du cluster, des ressources attribuées et de la vitesse du réseau.&#x20;
{% endhint %}

Ensuite, exécutez le `securityadmin.sh`script pour appliquer toutes les modifications.

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

Quitter le conteneur de l'indexeur Wazuh&#x20;

```bash
exit
```

Se connecter avec les nouvelles informations d'identification sur le tableau de bord Wazuh&#x20;

<mark style="color:blue;">La connexion se fera sans certificat ssl. Pour configurer le https il faut</mark> [<mark style="color:blue;">configurer Nginx</mark> ](#bkmrk-installation-et-conf)

#### **Utilisateurs de l'API Wazuh**

{% hint style="info" %}
`wazuh-wui` est l'utilisateur qui se connecte à l'API Wazuh par défaut. Suivez ces étapes pour modifier le mot de passe.

Le mot de passe des utilisateurs de l'API Wazuh doit comporter entre 8 et 64 caractères. Il doit contenir au moins une lettre majuscule et une lettre minuscule, un chiffre et un symbole.
{% endhint %}

Ouvrir le fichier `config/wazuh_dashboard/wazuh.yml`et modifiez la valeur du `password`paramètre

```bash
vi /wazuh-docker/single-node/config/wazuh_dashboard/wazuh.yml
```

Modifier le mot de passe surligné par celui souhaité

<figure><img src="/files/VhUYQjAhmIT2grRQMBRD" alt=""><figcaption><p><a href="https://documentation.wazuh.com/current/deployment-options/docker/wazuh-container.html">Tirée de la doc officielle de Wazuh </a></p></figcaption></figure>

Ouvrir le `docker-compose.yml`fichier. Remplacez toutes les occurrences de l'ancien mot de passe par le nouveau.

```bash
vi docker-compose.yml
```

Modifier le mot de passe surligné par celui défini au dessus pour le user wazuh-wui

<figure><img src="/files/69BoyXtOOCtz1G5G1Q8B" alt="" width="527"><figcaption><p><a href="https://documentation.wazuh.com/current/deployment-options/docker/wazuh-container.html">Tirée de la doc officielle de Wazuh </a></p></figcaption></figure>

Par défaut, le docker-composer expose les ports suivants :

<table data-header-hidden data-full-width="false"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>1514</strong></td><td>Wazuh TCP</td></tr><tr><td><strong>1515</strong></td><td>Wazuh TCP</td></tr><tr><td><strong>514</strong></td><td>Wazuh UDP</td></tr><tr><td><strong>55000</strong></td><td>API Wazuh</td></tr><tr><td><strong>9200</strong></td><td>Wazuh indexeur HTTPS</td></tr><tr><td><strong>443</strong></td><td>Tableau de bord Wazuh HTTPS</td></tr></tbody></table>

### Installation et configuration de Nginx <a href="#bkmrk-installation-et-conf" id="bkmrk-installation-et-conf"></a>

```bash
apt install nginx
```

{% hint style="warning" %}
Dans notre configuration actuelle, le conteneur "single-node-wazuh.dashboard-1" est configuré pour écouter par défaut sur son port 5601 et sur le port 443 de son hôte (notre serveur). Cependant, l'installation de Nginx posera un conflit car Nginx écoute nativement sur les ports 80 et 443. Pour résoudre ce conflit, deux solutions sont envisageables : soit modifier le port d'écoute de Nginx en le configurant pour écouter sur d'autres ports tels que 8080 et 8443, soit modifier le port d'écoute de l'hôte du conteneur en changeant par exemple le port 443 du conteneur en 5601 sur l'hôte.
{% endhint %}

<figure><img src="/files/DuEuLBmq69ALl9yr5xKF" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Nous opterons pour la solution qui est de modifier le port d'écoute de l'hôte du conteneur. il passera de 443 à 5601 afin que Nginx puisse écouter en 443
{% endhint %}

On stoppe le conteneur Dashboard, on le supprime des conteneurs actifs et on arrête l'instance Docker en cours

```bash
docker stop single-node-wazuh.dashboard-1
docker rm single-node-wazuh.dashboard-1
docker-compose down
```

On change le port d'écoute&#x20;

On ouvre le fichier docker-compose. yml et on modifie le port d'écoute sur notre hôte :&#x20;

```
vim docker-compose.yml
```

{% hint style="warning" %}
Précédemment en :  443:5601 on le passe en 5601:5601 ( en dessous de ports )

Ca veut dire que notre conteneur écoute sur son port 5601 et sur le port 5601 de notre machine
{% endhint %}

<figure><img src="/files/YQskBVjeGOZvyKLDoWPL" alt=""><figcaption></figcaption></figure>

On redémarre notre instance docker compose

```bash
docker-compose up -d
```

On passe maintenant à la configuration de notre nginx

Dissocier le fichier de configuration NGINX par défaut

```bash
sudo unlink /etc/nginx/sites-enabled/default
```

{% hint style="info" %}
Si certificat, le configurer au préalable et faire pointer dans le fichier de conf du site
{% endhint %}

Extraire clé du pfx :

```bash
openssl pkcs12 -in /etc/ssl/certs/wazuh.pfx -nocerts -out /etc/ssl/private/wazuh.key
```

Extraire certif

```bash
 openssl rsa -in /etc/ssl/private/wazuh.key -out /etc/ssl/private/wazuh.pem
```

Configurer maintenant le site&#x20;

{% hint style="warning" %}
La partie importante du site est la partie location qui redirige notre nginx reverse proxy vers notre serveur lui meme en port 5062 pour faire point vers notre conteneur **single-node-wazuh.dashboard-1**
{% endhint %}

```bash
vim /etc/nginx/sites-available/wazuh
```

```shell
server {
    # Redirect HTTP to HTTPS
    listen 80;
    server_name soc.yrk.local;
location / {    return 301 https://$host$request_uri;}
}
server {
#This config is for HTTPS setup
listen 443 ssl;
server_name soc.yrk.local;
#SSL Cert Location
#SSLCertificateFile /chemin/vers/certificat/en .pem  pour le certificat lui meme
ssl_certificate /etc/ssl/certs/wazuh.crt;
#SSLCertificateFile /chemin/vers/certificat/en .pem pourla clé privée
ssl_certificate_key /etc/ssl/private/wazuh.pem;
#Disable NGINX current version reporting on error pages
server_tokens off;
#Force strong TLS
ssl_protocols      TLSv1.3;
ssl_prefer_server_ciphers   on;
#Disable weak ciphers
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA HIGH !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
#Increase Upload Size
client_max_body_size 12M;
location / {
proxy_pass https://127.0.0.1:5601;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```

On lie le fichier de configuration.

```bash
ln -s /etc/nginx/sites-available/wazuh /etc/nginx/sites-enabled/wazuh
```

tester le site

```
nginx -t
```

redémarrer nginx

```bash
service nginx restart
```

### Connexion LDAP <a href="#bkmrk--9" id="bkmrk--9"></a>

#### **Config connexion et authentification**

{% hint style="info" %}
Les commandes ici nécessitent de se connecter en bash à l'intérieur de conteneurs. les option -u 0 des commandes dcokers spécifie une connexion avec l'user root

Si des commandes ne s'effectuent pas ( introuvable par exemple ) installez les.&#x20;

Lancez un apt-get update puis installez les paquets dont vous avez besoin
{% endhint %}

Le ldap se configure dans le wazuh indexer

```bash
docker exec -it -u 0 single-node-wazuh.indexer-1 /bin/bash
```

Config du fichier conf config.yml

```bash
vim opensearch-security/config.yml
```

{% hint style="warning" %}
Générer un certificat pour LDAPS avant de poursuivre. Si vous voulez continuez sans certificats supprimez ou commentez la ligne `pemtrustedcas_filepath:` ,changez le port au niveau du fichier de conf en 389 et ignorez la prochaine étape situées entre les deux lignes
{% endhint %}

***

Attribuer les droits du certificats au user wazuh-indexer<br>

```bash
chown wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/opensearch-security/ldapcacert.pem
```

***

Configurer le fichier de config comme suit :&#x20;

{% hint style="info" %}
Regarder la doc officielle Opensearch pour plus d'info : [Opensearch ](https://opensearch.org/docs/latest/security/authentication-backends/ldap/)

La Doc officielle Wazuh n'explique pas la conf de LDAP avec Docker, mais elle est très utile. Les chemins de répertoires diffèrent lors d'une install docker : [Wazuh DOC LDAP](https://documentation.wazuh.com/current/user-manual/user-administration/ldap.html#authentication-and-authorization-configuration)
{% endhint %}

```yaml
# This is the main Open Distro Security configuration file where authentication
# and authorization is defined.
#
# You need to configure at least one authentication domain in the authc of this file.
# An authentication domain is responsible for extracting the user credentials from
# the request and for validating them against an authentication backend like Active Directory for example.
#
# If more than one authentication domain is configured the first one which succeeds wins.
# If all authentication domains fail then the request is unauthenticated.
# In this case an exception is thrown and/or the HTTP status is set to 401.
#
# After authentication authorization (authz) will be applied. There can be zero or more authorizers which collect
# the roles from a given backend for the authenticated user.
#
# Both, authc and auth can be enabled/disabled separately for REST and TRANSPORT layer. Default is true for both.
#        http_enabled: true
#        transport_enabled: true
#
# For HTTP it is possible to allow anonymous authentication. If that is the case then the HTTP authenticators try to
# find user credentials in the HTTP request. If credentials are found then the user gets regularly authenticated.
# If none can be found the user will be authenticated as an "anonymous" user. This user has always the username "anonymous"
# and one role named "anonymous_backendrole".
# If you enable anonymous authentication all HTTP authenticators will not challenge.
#
#
# Note: If you define more than one HTTP authenticators make sure to put non-challenging authenticators like "proxy" or "clientcert"
# first and the challenging one last.
# Because it's not possible to challenge a client with two different authentication methods (for example
# Kerberos and Basic) only one can have the challenge flag set to true. You can cope with this situation
# by using pre-authentication, e.g. sending a HTTP Basic authentication header in the request.
#
# Default value of the challenge flag is true.
#
#
# HTTP
#   basic (challenging)
#   proxy (not challenging, needs xff)
#   kerberos (challenging)
#   clientcert (not challenging, needs https)
#   jwt (not challenging)
#   host (not challenging) #DEPRECATED, will be removed in a future version.
#                          host based authentication is configurable in roles_mapping

# Authc
#   internal
#   noop
#   ldap

# Authz
#   ldap
#   noop

_meta:
  type: "config"
  config_version: 2

config:
  dynamic:
    # Set filtered_alias_mode to 'disallow' to forbid more than 2 filtered aliases per index
    # Set filtered_alias_mode to 'warn' to allow more than 2 filtered aliases per index but warns about it (default)
    # Set filtered_alias_mode to 'nowarn' to allow more than 2 filtered aliases per index silently
    #filtered_alias_mode: warn
    #do_not_fail_on_forbidden: false
    #kibana:
    # Kibana multitenancy
    #multitenancy_enabled: true
    #server_username: kibanaserver
    #index: '.kibana'
    http:
      anonymous_auth_enabled: false
      xff:
        enabled: false
        internalProxies: '192\.168\.0\.10|192\.168\.0\.11' # regex pattern
        #internalProxies: '.*' # trust all internal proxies, regex pattern
        #remoteIpHeader:  'x-forwarded-for'
        ###### see https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html for regex help
        ###### more information about XFF https://en.wikipedia.org/wiki/X-Forwarded-For
        ###### and here https://tools.ietf.org/html/rfc7239
        ###### and https://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Remote_IP_Valve

    authc:
      basic_internal_auth_domain:
        description: "Authenticate via HTTP Basic against internal users database"
        http_enabled: true
        transport_enabled: true
        order: 0
        http_authenticator:
          type: basic
          challenge: false
        authentication_backend:
          type: internal
      ldap:
        description: "Authenticate via LDAP or Active Directory"
        http_enabled: true
        transport_enabled: true
        order: 1
        http_authenticator:
          type: basic
          challenge: false
        authentication_backend:
          # LDAP authentication backend (authenticate users against a LDAP or Active Directory)
          type: ldap
          config:
            enable_ssl: true
            pemtrustedcas_filepath: /usr/share/wazuh-indexer/opensearch-security/ldapcacert.pem
            enable_start_tls: false
            enable_ssl_client_auth: false
            verify_hostnames: false
            hosts:
            - ad1.yrk.local:636
            bind_dn: 'cn=bind,ou=sys,ou=informatique,ou=users,dc=yrk,dc=local'
            password: 'your_user_password'
            userbase: 'DC=yrk,DC=local'
            usersearch: '(sAMAccountName={0})'
            username_attribute: cn

    authz:
      ldap:
        http_enabled: true
        transport_enabled: true
        authorization_backend:
          type: ldap
          config:
            enable_ssl: true
            pemtrustedcas_filepath: /usr/share/wazuh-indexer/opensearch-security/ldapcacert.pem
            enable_start_tls: false
            enable_ssl_client_auth: false
            verify_hostnames: false
            hosts:
            - ad1.yrk.local:636
            bind_dn: 'cn=bind,ou=sys,ou=informatique,ou=users,dc=yrk,dc=local'
            password: 'your_user_password'
            userbase: 'DC=yrk,DC=local'
            usersearch: '(uid={0})'
            #username_attribute: uid
            username_attribute: 'sAMAccountName'
            rolesearch_enabled: true
            rolebase: 'DC=yrk,DC=local'
            rolesearch: '(member={0})'
            userroleattribute: null
            userrolename: 'memberOf'
            rolename: cn
            resolve_nested_roles: false
            skip_users:
            - kibanaserver
            - admin

```

Exécuter le `securityadmin.sh`  pour charger les modifs apporter au config.yml&#x20;

```bash
export JAVA_HOME=/usr/share/wazuh-indexer/jdk/ && bash /usr/share/wazuh-indexer/plugins/opensearch-security/tools/securityadmin.sh -f /usr/share/wazuh-indexer/opensearch-security/config.yml -icl -key /usr/shar    e/wazuh-indexer/certs/admin-key.pem -cert /usr/share/wazuh-indexer/certs/admin.pem -cacert /usr/share/wazuh-indexer/certs/root-ca.pem -h localhost -nhnv
```

#### **Map role à wazuh-dashboard**

#### **Config role d'admin**

Configurer le fichier `roles_mapping.yml` pour mapper le rôle (CN) que nous avons dans notre serveur LDAP au rôle du Wazuh\_indexer approprié. Dans notre cas, nous mappons les utilisateurs du groupe Sys dans notre AD au `all_access`rôle sur le wazuh indexer.

```bash
vim opensearch-security/roles_mapping.yml
```

{% hint style="info" %}
Ne modifiez que la ligne all\_acces. Si vous avez besoin de toucher aux autres blocs connaissez en les conséquences
{% endhint %}

```bash
all_access:
  reserved: false
  backend_roles:
  - "admin"
  - "Sys"
  description: "Maps admin to all_access"
```

Exécuter le `securityadmin`script pour charger les modifications de configuration apportées dans le `roles_mapping.yml`fichier

```bash
export JAVA_HOME=/usr/share/wazuh-indexer/jdk/ && bash /usr/share/wazuh-indexer/plugins/opensearch-security/tools/securityadmin.sh -f /usr/share/wazuh-indexer/opensearch-security/roles_mapping.yml -icl -key /usr/shar    e/wazuh-indexer/certs/admin-key.pem -cert /usr/share/wazuh-indexer/certs/admin.pem -cacert /usr/share/wazuh-indexer/certs/root-ca.pem -h localhost -nhnv
```

Vérifier la valeur de `run_as`dans le `/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml`fichier de configuration et passez le à false s'il ne l'est pas

Pour cette vérification il faut changer de conteneur :

```bash
docker exec -it -u 0 single-node-wazuh.dashboard-1 /bin/bash
```

```bash
vim data/wazuh/config/wazuh.yml
```

La conf ressemble à ca. Le mdp est celui du user pour l'API défini au plus haut ( wazuh-wui )

<figure><img src="/files/wih58RJbctW6FBkGg60H" alt=""><figcaption></figcaption></figure>

Sortir du conteneur et le relancer&#x20;

Se connecter maintenant avec un user de Sys.<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki-tech.fikara.io/tutoriels/securite/wazuh.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
