Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 315 minIntermédiaire

Installer Wazuh : le serveur tout-en-un sur Proxmox

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • dimensionner le serveur Wazuh selon le nombre d'agents ;
  • créer la machine virtuelle sur Proxmox VE et configurer Ubuntu ;
  • installer Wazuh avec l'assistant et récupérer les mots de passe ;
  • vérifier les services et sécuriser l'accès au tableau de bord.

3 exercices corrigés

Installer Wazuh en tout-en-un, c'est placer l'indexeur, le serveur et le tableau de bord sur une seule machine Linux, avec l'assistant d'installation fourni par l'éditeur, qui génère aussi les certificats et les mots de passe. Ce chapitre installe Wazuh 4.14 sur srv-journaux, une machine virtuelle Ubuntu 24.04 LTS hébergée par Proxmox VE, puis vérifie l'installation, change les mots de passe et ferme ce qui doit l'être.

Préparer l'installation

Avant de créer la machine, fixe cinq choses.

DécisionValeur pour SorbierPourquoi
SystèmeUbuntu 24.04 LTS (Server)Dans la liste des systèmes pris en charge par l'assistant de Wazuh 4.14, avec Red Hat Enterprise Linux 9 et 10, Amazon Linux 2023 et CentOS Stream 10
Ressources4 vCPU, 8 Gio de mémoire, 120 Go de disque pour le laboratoire ; 8 vCPU et 200 Go pour 45 agents en productionTableau du chapitre 2 ; l'indexeur est gourmand en mémoire
Adresse192.168.10.180/28, passerelle 192.168.10.190Plan d'adressage du VLAN 20
Nomsrv-journaux.ad.sorbier.exampleEnregistrement A dans le DNS de l'annuaire
HeureNTP sur srv-ad et srv-ad2Des alertes mal horodatées ne se corrèlent pas avec les autres journaux

Créer la machine virtuelle sur Proxmox VE

Les étapes ci-dessous suivent l'interface web de Proxmox VE 9, en anglais ; l'interface française reprend les mêmes onglets. La création de machines virtuelles, les ponts réseau et les VLAN sur Proxmox sont détaillés dans le cours Virtualisation.

  1. Télécharge l'image ubuntu-24.04.x-live-server-amd64.iso (la dernière révision 24.04) et dépose-la dans un stockage de type ISO du nœud (local > ISO Images > Upload).
  2. Clique sur Create VM, en haut à droite.
  3. General : un identifiant libre (par exemple 180, pour retrouver l'adresse), le nom srv-journaux.
  4. OS : l'image ISO d'Ubuntu, type Linux.
  5. System : contrôleur VirtIO SCSI single, coche Qemu Agent.
  6. Disks : bus SCSI, 120 Gio, coche Discard si le stockage est en allocation fine.
  7. CPU : 1 socket, 4 cœurs, type host si tous les nœuds du cluster ont le même processeur.
  8. Memory : 8192 Mio ; dans les options avancées, décoche Ballooning Device : l'indexeur réserve sa mémoire au démarrage et supporte mal qu'on la lui reprenne.
  9. Network : pont vmbr0, VLAN Tag 20 (le VLAN des serveurs), modèle VirtIO.
  10. Confirm, puis démarre la machine et ouvre sa Console.

Installe Ubuntu Server avec les choix par défaut, en cochant Install OpenSSH server. Crée un compte d'administration nominatif (pas admin). Une fois le système démarré, installe l'agent invité pour que Proxmox voie l'adresse et arrête proprement la machine :

bash
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent

Configurer le réseau, le nom et l'heure

L'installeur d'Ubuntu propose de fixer l'adresse ; si tu as laissé le DHCP, remplace la configuration Netplan. Repère d'abord le nom de l'interface avec ip -br link (souvent ens18 sur Proxmox), puis écris /etc/netplan/50-cloud-init.yaml (ou un fichier à toi, en supprimant l'ancien) :

yaml
network:
  version: 2
  ethernets:
    ens18:
      dhcp4: false
      addresses: [192.168.10.180/28]
      routes:
        - to: default
          via: 192.168.10.190
      nameservers:
        addresses: [192.168.10.177, 192.168.10.181]
        search: [ad.sorbier.example]
bash
sudo chmod 600 /etc/netplan/*.yaml   # Netplan avertit si le fichier est lisible par tous
sudo netplan try                      # applique, et revient en arrière sans confirmation sous 120 s
sudo hostnamectl set-hostname srv-journaux
sudo timedatectl set-timezone Europe/Paris

netplan try est plus sûr que netplan apply quand tu travailles en SSH : si la nouvelle adresse te coupe, la configuration précédente revient d'elle-même.

Pour l'heure, Ubuntu utilise systemd-timesyncd. Dans /etc/systemd/timesyncd.conf, sous [Time], indique les contrôleurs de domaine, qui sont les serveurs NTP de Sorbier :

ini
[Time]
NTP=192.168.10.177 192.168.10.181
bash
sudo systemctl restart systemd-timesyncd
timedatectl timesync-status   # le serveur utilisé et l'écart mesuré

Enfin, sur srv-ad, ajoute l'enregistrement DNS pour joindre le serveur par son nom (la gestion du DNS de l'annuaire est dans le cours Windows Server) :

powershell
Add-DnsServerResourceRecordA -ZoneName "ad.sorbier.example" -Name "srv-journaux" -IPv4Address "192.168.10.180"

Lancer l'assistant d'installation

L'assistant de Wazuh installe les trois composants, génère une autorité de certification interne et les certificats de chaque composant, crée les comptes et leurs mots de passe, puis démarre tout :

bash
curl -sO https://packages.wazuh.com/4.14/wazuh-install.sh
sudo bash ./wazuh-install.sh -a

L'option -a (all-in-one) installe l'indexeur, le serveur et le tableau de bord sur la machine. Compte une dizaine de minutes. L'assistant affiche ses étapes : vérification du système et du matériel, ajout du dépôt de paquets Wazuh, installation et configuration de l'indexeur, initialisation de son cluster, installation du serveur et de Filebeat, puis du tableau de bord. Il se termine par un résumé qui donne l'adresse du tableau de bord, l'utilisateur admin et son mot de passe.

Note ce mot de passe tout de suite, dans le gestionnaire de mots de passe du service. Tous les mots de passe générés (indexeur, API, tableau de bord) sont aussi dans l'archive wazuh-install-files.tar, créée dans le dossier où tu as lancé l'assistant :

bash
sudo tar -O -xvf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt

Vérifier l'installation

Quatre services doivent être actifs :

bash
systemctl is-active wazuh-indexer wazuh-manager filebeat wazuh-dashboard

La commande affiche active quatre fois. Pour le détail d'un service récalcitrant, systemctl status wazuh-indexer et journalctl -u wazuh-indexer -n 50.

Vérifie ensuite les ports en écoute :

bash
sudo ss -tlnp | grep -E ':(443|1514|1515|9200|55000)\b'

Tu dois voir le tableau de bord sur 443, le serveur sur 1514, 1515 et 55000, l'indexeur sur 9200. Le dernier contrôle est la chaîne complète : le serveur envoie-t-il bien ses alertes à l'indexeur ?

bash
sudo filebeat test output

Filebeat se connecte à l'indexeur, vérifie le certificat et répond talk to server... OK.

Premier accès au tableau de bord

Depuis le poste d'administration (192.168.10.209), ouvre https://srv-journaux.ad.sorbier.example. Le navigateur affiche un avertissement : le certificat a été signé par l'autorité interne créée par l'assistant, que ton poste ne connaît pas. En laboratoire, accepte l'exception. En production, deux solutions propres : faire signer le certificat du tableau de bord par l'autorité de certification de l'entreprise (AD CS, cours Windows Server), ou distribuer le certificat racine de Wazuh (root-ca.pem) aux postes d'administration par GPO.

Connecte-toi avec admin et le mot de passe noté. La page d'accueil présente des cartes par grand thème ; le menu (☰, en haut à gauche) donne accès à tout :

Rubrique du menuCe qu'elle contientChapitres
Endpoint securityConfiguration Assessment, Malware Detection, File Integrity Monitoring8 et 9
Threat intelligenceThreat Hunting, Vulnerability Detection, MITRE ATT&CK9 à 11
Security operationsIT Hygiene (inventaire), PCI DSS, GDPR, HIPAA, NIST 800-53, TSC9 et 10
Agents managementSummary (la liste des agents, le bouton de déploiement), les groupes4
Server managementRules, Decoders, CDB lists, Status, Logs, Settings, Ruleset Test7 et 13
Indexer managementGestion des index, sécurité (comptes et rôles), outils13

Pour l'instant, aucun agent n'est inscrit : seul le serveur lui-même remonte ses propres événements, sous le nom de l'agent 000.

Changer les mots de passe et sécuriser le serveur

Les mots de passe. Le mot de passe d'admin généré par l'assistant est solide, mais il a été affiché à l'écran et écrit dans une archive. Change-le avec l'outil fourni, qui met à jour tous les composants concernés :

bash
sudo bash /usr/share/wazuh-indexer/plugins/opensearch-security/tools/wazuh-passwords-tool.sh \
  -u admin -p '<NOUVEAU_MOT_DE_PASSE>'

Le mot de passe doit faire de 8 à 64 caractères, avec au moins une majuscule, une minuscule, un chiffre et un des symboles .*+?-. L'outil indique ensuite les services à redémarrer. Pour les comptes des collègues, on ne partage pas admin : on crée des comptes nominatifs (chapitre 13).

Les mises à jour automatiques. Une mise à jour des paquets Wazuh lancée par un apt upgrade de routine peut désynchroniser les composants et casser l'installation. La documentation recommande de désactiver le dépôt Wazuh et de le réactiver uniquement pour une mise à jour planifiée (chapitre 13) :

bash
sudo sed -i "s/^deb /#deb /" /etc/apt/sources.list.d/wazuh.list
sudo apt update

Le reste du système, lui, continue de recevoir ses mises à jour de sécurité Ubuntu.

Le pare-feu local. Le pare-feu pfSense filtre déjà entre les zones, mais les machines du VLAN 20 joignent srv-journaux sans le traverser. Le pare-feu d'Ubuntu, ufw, ajoute une seconde barrière : seuls les flux du chapitre 2 sont acceptés.

bash
sudo ufw default deny incoming
sudo ufw allow from 192.168.10.208/28 to any port 22 proto tcp     # SSH depuis le VLAN d'administration
sudo ufw allow from 192.168.10.208/28 to any port 443 proto tcp    # tableau de bord
sudo ufw allow from 192.168.10.64/26 to any port 1514:1515 proto tcp   # agents des postes
sudo ufw allow from 192.168.10.176/28 to any port 1514:1515 proto tcp  # agents des serveurs
sudo ufw allow from 192.168.10.225 to any port 1514:1515 proto tcp     # agent de srv-web (DMZ)
sudo ufw allow from 192.168.10.190 to any port 514 proto udp           # syslog du pare-feu
sudo ufw enable
sudo ufw status numbered

Les autres façons d'installer

  • Installation pas à pas : la documentation détaille l'installation de chaque composant séparément (indexeur, puis serveur, puis tableau de bord), avec un fichier config.yml qui décrit les nœuds. C'est la voie du déploiement réparti.
  • Image OVA : une machine virtuelle prête à l'emploi, importable dans Proxmox. Pratique pour une démonstration, mais tu n'apprends rien de l'installation et tu hérites de ses mots de passe par défaut.
  • Docker : des images officielles et un fichier Compose pour un ou plusieurs nœuds ; il faut alors exploiter des volumes persistants pour ne pas perdre les alertes (cours Docker).

Pour une réalisation d'examen, l'assistant sur une Ubuntu que tu as installée toi-même est le meilleur choix : tu peux expliquer chaque étape au jury.

Dépanner l'installation

SymptômeCause probableQue faire
L'assistant s'arrête au contrôle du matérielProcesseur ou mémoire sous le minimum exigéAugmente les ressources de la VM, redémarre-la, relance
Le tableau de bord affiche longtemps qu'il n'est pas prêtL'indexeur démarre encore, ou n'a pas pu démarrersystemctl status wazuh-indexer, puis journalctl -u wazuh-indexer ; souvent un manque de mémoire
Erreurs de certificat entre composantsHorloge fausse au moment de la génération, ou nom de machine changé après l'installationCorrige l'heure et le nom, puis réinstalle depuis l'instantané
Le port 443 est déjà prisUn serveur web (Apache, Nginx) installé sur la même machineRetire-le : le tableau de bord a besoin du 443
Plus aucune alerte n'arrive dans l'indexeur après quelques semainesDisque presque plein : l'indexeur bloque les écritures pour se protégerLibère de la place et fixe une durée de conservation (chapitre 13)

Exercices

Exercice 1 sur 3 Le fichier Netplan qui ne marche pas Réussi À revoir

Un collègue a écrit ce fichier pour srv-journaux. Après sudo netplan try, le serveur répond au ping depuis le VLAN 20, mais pas depuis le poste d'administration, et apt update échoue. Trouve les deux erreurs.

yaml
network:
  version: 2
  ethernets:
    ens18:
      dhcp4: false
      addresses: [192.168.10.180/24]
      nameservers:
        addresses: [192.168.10.177]
Voir la réponseMasquer la réponse de l'exercice 1
  1. Le masque : /24 au lieu de /28. Le serveur croit que tout 192.168.10.0/24 est sur son lien, y compris le VLAN 99 : il envoie ses réponses au poste .209 directement, par ARP, au lieu de passer par la passerelle. Elles n'arrivent jamais, puisque le poste est dans un autre VLAN.
  2. La route par défaut manque : sans routes: - to: default via: 192.168.10.190, le serveur ne sait pas joindre Internet, d'où l'échec d'apt update (il ne joint pas non plus les autres réseaux).

On peut ajouter le second DNS (192.168.10.181) et le domaine de recherche, mais ce ne sont pas des erreurs bloquantes.

Tu avais trouvé ?

Exercice 2 sur 3 Remettre de l'ordre Réussi À revoir

Remets ces étapes dans le bon ordre : (a) changer le mot de passe d'admin ; (b) prendre un instantané avant-wazuh ; (c) fixer l'adresse, le nom et l'heure ; (d) lancer wazuh-install.sh -a ; (e) désactiver le dépôt Wazuh ; (f) créer la VM avec 8 Gio de mémoire ; (g) vérifier les quatre services et filebeat test output ; (h) supprimer wazuh-install-files.tar du serveur après l'avoir mis à l'abri.

Voir la réponseMasquer la réponse de l'exercice 2

f, c, b, d, g, a, h, e (les trois dernières peuvent s'échanger). On crée la machine, on règle le réseau et l'heure avant l'installation (les certificats portent le nom et dépendent de l'heure), on prend l'instantané juste avant l'assistant, on vérifie avant de toucher aux mots de passe, puis on range les secrets et on bloque les mises à jour accidentelles.

Tu avais trouvé ?

Exercice 3 sur 3 Les règles ufw de Marseille Réussi À revoir

Les deux serveurs Windows de l'agence de Marseille (10.30.1.161 et 10.30.1.162) doivent avoir un agent qui remonte à srv-journaux. Écris la ou les règles ufw à ajouter, au plus juste.

Voir la réponseMasquer la réponse de l'exercice 3
bash
sudo ufw allow from 10.30.1.161 to any port 1514:1515 proto tcp
sudo ufw allow from 10.30.1.162 to any port 1514:1515 proto tcp

On autorise les deux adresses plutôt que tout 10.30.1.160/28 : seuls ces deux serveurs ont un agent. On peut retirer le 1515 une fois les agents inscrits (sudo ufw status numbered, puis sudo ufw delete <numéro>). Il faut bien sûr que le pare-feu et les routeurs entre les sites laissent passer ces flux.

Tu avais trouvé ?

Chapitre terminé !

Fais les 3 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Déployer l'agent Wazuh sur Windows Server et Linux, jusqu'à la GPORevoir le sommaire du cours