<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Zeyn]]></title><description><![CDATA[Zeyn]]></description><link>https://zeyn.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 20 Jun 2026 21:02:22 GMT</lastBuildDate><atom:link href="https://zeyn.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Mise en place d'une infrastructure Nextcloud]]></title><description><![CDATA[Partie A - Installation Serveur Web
Clonage VM Template
On commence par cloner la VM Template à l'aide KVM en choisissant le bridge br2 pour la DMZ.

Changement nom d'hôte
hostnamectl set-hostname web-tp1

Réservation d'adresse DHCP
Sur DHCP 1 & 2 :
...]]></description><link>https://zeyn.hashnode.dev/nextcloud</link><guid isPermaLink="true">https://zeyn.hashnode.dev/nextcloud</guid><dc:creator><![CDATA[Zeyn]]></dc:creator><pubDate>Sat, 29 Apr 2023 09:19:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1682768834765/ce8b4e51-69f9-4516-b10d-55e3054e284b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-partie-a-installation-serveur-web">Partie A - Installation Serveur Web</h3>
<h4 id="heading-clonage-vm-template">Clonage VM Template</h4>
<p>On commence par cloner la VM Template à l'aide KVM en choisissant le bridge br2 pour la DMZ.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682758153457/875b56c8-9d4f-4075-a774-463ee2532788.png" alt class="image--center mx-auto" /></p>
<h4 id="heading-changement-nom-dhote">Changement nom d'hôte</h4>
<pre><code class="lang-bash">hostnamectl set-hostname web-tp1
</code></pre>
<h4 id="heading-reservation-dadresse-dhcp">Réservation d'adresse DHCP</h4>
<p>Sur <code>DHCP 1 &amp; 2</code> :</p>
<pre><code class="lang-bash">nano /etc/dhcp/dhcpd.conf
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># dans la partie public </span>

host web-tp1 {
                        <span class="hljs-comment"># adresse MAC de web-tp1</span>
                        hardware ethernet 52:54:00:d9:02:6b;
                        <span class="hljs-comment"># adresse réservée pour web-tp1</span>
                        fixed-address 10.31.200.7;
                }
</code></pre>
<pre><code class="lang-bash">systemctl restart isc-dhcp-server <span class="hljs-comment"># on redémarre le service dhcp pour appliquer les changements</span>
</code></pre>
<p>Sur <code>web-tp1</code> :</p>
<pre><code class="lang-bash">dhclient -r <span class="hljs-comment"># efface les anciennes configurations dhcp</span>
dhclient -v <span class="hljs-comment"># effectue une nouvelle requête dhcp</span>
</code></pre>
<p>On voit que le serveur Web a bien récupéré l'adresse 10.31.200.7 que le dhcp1 lui a donnée.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682758322532/3e506669-ba6e-4394-acbb-d23daecf6882.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-partie-b-installation-serveur-bdd">Partie B - Installation Serveur BDD</h3>
<h4 id="heading-clonage-vm-template-1">Clonage VM Template</h4>
<p>Pareil que pour le serveur web, on commence par cloner la VM Template à l'aide KVM en choisissant le bridge br1 pour le LAN.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682758354038/292ca74f-7765-4d5e-9595-b12735ced042.png" alt class="image--center mx-auto" /></p>
<h4 id="heading-changement-nom-dhote-1">Changement nom d'hôte</h4>
<pre><code class="lang-bash"> hostnamectl set-hostname bdd-tp1
</code></pre>
<h4 id="heading-reservation-dadresse-dhcp-1">Réservation d'adresse DHCP</h4>
<p>Sur <code>DHCP 1 &amp; 2</code> :</p>
<pre><code class="lang-bash">nano /etc/dhcp/dhcpd.conf
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># dans la partie privée</span>

host bdd-tp1 {
                        <span class="hljs-comment"># adresse MAC de bdd-tp1</span>
                        hardware ethernet 52:54:00:2d:15:bb;
                        <span class="hljs-comment"># adresse réservée pour bdd-tp1</span>
                        fixed-address 10.31.192.8;
                }
</code></pre>
<pre><code class="lang-bash">systemctl restart isc-dhcp-server <span class="hljs-comment"># on redémarre le service dhcp pour appliquer les changements</span>
</code></pre>
<p>Sur <code>bdd-tp1</code> :</p>
<pre><code class="lang-bash">dhclient -r <span class="hljs-comment"># efface les anciennes configurations dhcp</span>
dhclient -v <span class="hljs-comment"># effectue une nouvelle requête dhcp</span>
</code></pre>
<p>On voit que le serveur de BDD a bien récupéré l'adresse 10.31.192.8 que le dhcp2 lui a donnée.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682758468499/a1db3d01-e97d-41d1-b2bc-12447ce01aff.png" alt class="image--center mx-auto" /></p>
<h4 id="heading-installation-de-mariadb">Installation de MariaDB</h4>
<pre><code class="lang-bash">apt update <span class="hljs-comment"># mets à jour les packets apt</span>
apt install mariadb-server <span class="hljs-comment"># installe le packet mariadb-server</span>
</code></pre>
<p>On va désormais lancer le script d'installation sécurisé MySQL et modifier le mot de passe root pour un mot de passe sécurisé.</p>
<pre><code class="lang-bash">mysql_secure_installation
</code></pre>
<h4 id="heading-installation-plug-in-ed25519">Installation Plug-in ed25519</h4>
<p>MySQL utilise par défaut l'authentification basée sur SHA-1. Seulement, SHA-1 n'est plus considéré comme un algorithme sécurisé, c'est pourquoi il est important d'utiliser un plug-in d'authentification comme ed25519.</p>
<p>Ce plug-in utilise l’algorithme de signature numérique à courbe elliptique (ECDSA) pour stocker en toute sécurité les mots de passe des utilisateurs et pour authentifier les utilisateurs. L’algorithme ed25519 est le même que celui utilisé par OpenSSH.</p>
<pre><code class="lang-bash">mariadb <span class="hljs-comment"># entre dans l'interface de ligne de commande mariadb</span>
INSTALL SONAME <span class="hljs-string">'auth_ed25519'</span>; <span class="hljs-comment"># installe le plug-in d'authentification ed25519</span>
</code></pre>
<h4 id="heading-creation-base-de-donnees">Création Base de données</h4>
<p>Sur <code>bdd-tp1</code> :</p>
<pre><code class="lang-bash">mysql -u root -p
</code></pre>
<pre><code class="lang-bash">CREATE DATABASE nextclouddb;
GRANT ALL ON nextclouddb.* TO <span class="hljs-string">'std'</span>@<span class="hljs-string">'localhost'</span> IDENTIFIED BY <span class="hljs-string">'drowssap'</span>;
GRANT ALL PRIVILEGES ON nextclouddb.* TO <span class="hljs-string">'std'</span>@<span class="hljs-string">'10.31.200.7'</span> IDENTIFIED BY <span class="hljs-string">'drowssap'</span> WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
</code></pre>
<h4 id="heading-autoriser-les-connexions-distantes">Autoriser les connexions distantes</h4>
<p>Par défaut, MySQL n'autorise pas les connexions distantes. En effet, MariaDB est en écoute uniquement sur l'adresse de loopback (127.0.0.1). Il faut donc modifier ce paramètre de telle sorte que l'on puisse se connecter à la base de donnée sur une autre machine.</p>
<pre><code class="lang-bash">nano /etc/mysql/mariadb.conf.d/50-server.cnf
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># on modifie cette ligne pour autoriser l'écoute pour n’importe quelle adresse ipv4</span>
bind-address            = 0.0.0.0
</code></pre>
<pre><code class="lang-bash">systemctl restart mariadb.service <span class="hljs-comment"># appliquer les changements</span>
netstat -lpn | grep mariadb <span class="hljs-comment"># vérifie les ports en écoute pour le service mariadb</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682758715426/eb98144a-1f71-44ea-8d5a-6fd179c55df5.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-partie-c-configuration-dns">Partie C - Configuration DNS</h3>
<p>On va maintenant créer un enregistrement <em><abbr>DNS</abbr></em> pour pouvoir accéder au cloud en allant à l'adresse : <a target="_blank" href="https://cloud.asie.gsb.org/">https://cloud.asie.gsb.org/</a></p>
<h4 id="heading-configuration-dns-primaire">Configuration DNS Primaire</h4>
<p>Sur <code>ns1-pub</code> :</p>
<pre><code class="lang-bash">nano /etc/<span class="hljs-built_in">bind</span>/db.asie.gsb.org <span class="hljs-comment"># fichier de configuration pour la zone asie.gsb.org</span>
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># ajoute un enregistrement A pour rediriger le sous domaine cloud vers le serveur web</span>

cloud IN A 10.31.200.7
</code></pre>
<pre><code class="lang-bash">systemctl restart bind9
</code></pre>
<h4 id="heading-verification-du-serveur-dns-primaire">Vérification du Serveur DNS Primaire</h4>
<pre><code class="lang-bash">dig a cloud.asie.gsb.org
</code></pre>
<p>On voit que notre serveur dns répond bien l'adresse de notre serveur web pour <a target="_blank" href="http://cloud.asie.gsb.org">cloud.asie.gsb.org</a>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682758834332/eadbb812-174b-4353-8166-8e6abdef03c1.png" alt class="image--center mx-auto" /></p>
<h4 id="heading-configuration-dns-secondaire">Configuration DNS Secondaire</h4>
<p>Sur le DNS secondaire, il n'y a pas de changements à faire car tout est déjà configuré pour qu'il mette à jour automatiquement sa base pour les zones concernées. Seulement, il est important de changer le numéro de série dans le champ SOA sur le DNS primaire pour signaler au DNS secondaire de mettre à jour sa base de données.</p>
<h4 id="heading-verification-du-serveur-dns-secondaire">Vérification du Serveur DNS Secondaire</h4>
<pre><code class="lang-bash">dig a cloud.gsb.org @10.31.200.54
</code></pre>
<p>On voit que notre serveur de nom secondaire répond bien l'adresse de notre serveur web pour <a target="_blank" href="http://cloud.asie.gsb.org">cloud.asie.gsb.org</a>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682758909499/a38e3312-b8e2-45cf-a72f-e0712cc40438.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-partie-d-installation-dapache2-andamp-nextcloud">Partie D - Installation d’Apache2 &amp; Nextcloud</h3>
<h4 id="heading-installation-apache2">Installation Apache2</h4>
<p>Sur <code>web-tp1</code> :</p>
<pre><code class="lang-bash">apt update
apt upgrade
apt install apache2 php-mysql libapache2-mod-php php php-gd php-curl php-zip php-dom php-xml php-simplexml php-mbstring
</code></pre>
<p>On voit donc avec la commande netstat, que le port 80 est bien sur écoute.</p>
<pre><code class="lang-bash">netstat -nlt
</code></pre>
<ul>
<li><p><code>n</code> : Afficher les adresses numériques au lieu d'essayer de déterminer les noms symboliques d'hôte, de port ou d'utilisateur.</p>
</li>
<li><p><code>l</code> : Afficher uniquement les sockets en écoute.</p>
</li>
<li><p><code>t</code> : Afficher uniquement les ports TCP.</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682758982630/8a11e471-818f-4709-8325-bcf499495d04.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<h4 id="heading-creation-du-vhost">Création du Vhost</h4>
<pre><code class="lang-bash">nano /etc/apache2/sites-available/cloud.asie.gsb.org.conf
</code></pre>
<pre><code class="lang-bash"> &lt;VirtualHost *:80&gt;
      ServerAdmin webmaster@asie.gsb.org
      ServerName cloud.asie.gsb.org
      DocumentRoot /home/htdocs/asie.gsb.org/cloud

      ErrorLog /var/<span class="hljs-built_in">log</span>/apache2/www-error.log
      CustomLog /var/<span class="hljs-built_in">log</span>/apache2/www-access.log combined

      &lt;Directory /home/htdocs/asie.gsb.org/cloud&gt;
           Require all granted
      &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre>
<pre><code class="lang-bash">mkdir -p /home/htdocs/asie.gsb.org/cloud
a2ensite cloud.asie.gsb.org
systemctl restart apache2
</code></pre>
<h4 id="heading-installation-nextcloud">Installation Nextcloud</h4>
<pre><code class="lang-bash">wget https://download.nextcloud.com/server/releases/nextcloud-25.0.4.zip
mv nextcloud-25.0.4.zip /home/htdocs/asie.gsb.org/cloud/
<span class="hljs-built_in">cd</span> /home/htdocs/asie.gsb.org/cloud/
unzip nextcloud-25.0.4.zip
chown -R www-data:www-data /home/htdocs/asie.gsb.org/cloud/
systemctl restart apache2
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759056564/f59b2e67-14e7-4658-93ee-29509a96b09e.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-partie-e-https">Partie E - HTTPS</h3>
<h4 id="heading-creation-dun-certificat-pour-le-serveur-web-public">Création d'un certificat pour le serveur web public</h4>
<p>Pour créer le certificat de notre serveur web, nous allons utiliser l'outil <code>openssl</code>.</p>
<h5 id="heading-quest-ce-quopenssl">Qu'est-ce qu'OpenSSL ?</h5>
<p>OpenSSL est un logiciel open-source qui implémente les protocoles de chiffrement SSL et TLS pour sécuriser les communications sur Internet. Dans notre cas, nous utiliserons OpenSSL pour créer des certificats de chiffrement autosignés. Ces certificats sont signés par l'entité qui les utilise au lieu d'être signée par une autorité de certification (CA) tierce. Ils peuvent être utilisés pour sécuriser les communications sur un réseau privé ou pour des tests de développement, mais ils ne sont généralement pas considérés comme fiables pour les communications sur Internet en raison de leur manque de vérification de l'identité de l'entité qui les utilise. Lors de l'accès à des sites protégés par un certificat autosigné, un message d'avertissement peut être affiché pour indiquer qu'il est impossible de vérifier l'authenticité du certificat.</p>
<pre><code class="lang-bash">apt-get install openssl
mkdir /etc/ssl/localcerts
openssl req -new -x509 -sha256 -days 365 -nodes -out /etc/ssl/localcerts/gsb.crt -keyout /etc/ssl/localcerts/gsb.key.org
</code></pre>
<ul>
<li><p><code>req</code> : permet de créer et traiter les demandes de certificats</p>
</li>
<li><p><code>-new</code> : permet de générer la demande de certificat</p>
</li>
<li><p><code>-nodes</code> : désactive le chiffrement de la clé privé</p>
</li>
<li><p><code>-keyout</code> : donne le nom ou le fichier ou la clé privée sera créé</p>
</li>
<li><p><code>-out</code> : nom du fichier de sortie (cela correspond au certificat)</p>
</li>
<li><p><code>-days</code> : durée de validité du certificat (en jours)</p>
<pre><code class="lang-bash">  ls /etc/ssl/localcerts <span class="hljs-comment"># vérifie que le certificat soit bien créé</span>
</code></pre>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759167963/e5cd8bfa-01c2-4b8a-9ce7-8c58b69db163.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<h4 id="heading-adaptation-du-vhost-et-de-la-configuration-dapache">Adaptation du Vhost et de la configuration d'Apache</h4>
<p>Une fois le certificat créé, il faut maintenant modifier la configuration du Vhost afin de lui indiquer de se mettre en écoute sur le port 443 pour faire du HTTPS en utilisant notre certificat et notre clé. A noter qu'on ajoute également la une directive Redirect dans le vhost pour le port 80 dans le but de rediriger les utilisateurs vers la page HTTPS.</p>
<pre><code class="lang-bash">nano /etc/apache2/sites-available/cloud.asie.gsb.org.conf
</code></pre>
<pre><code class="lang-bash"> &lt;VirtualHost *:80&gt;
      ServerAdmin webmaster@asie.gsb.org
      ServerName cloud.asie.gsb.org
      DocumentRoot /home/htdocs/asie.gsb.org/cloud

      ErrorLog /var/<span class="hljs-built_in">log</span>/apache2/www-error.log
      CustomLog /var/<span class="hljs-built_in">log</span>/apache2/www-access.log combined

      Redirect permanent / https://cloud.asie.gsb.org/

      &lt;Directory /home/htdocs/asie.gsb.org/cloud&gt;
           Require all granted
      &lt;/Directory&gt;
&lt;/VirtualHost&gt;

&lt;VirtualHost *:443&gt;
      ServerAdmin webmaster@asie.gsb.org
      ServerName cloud.asie.gsb.org
      DocumentRoot /home/htdocs/asie.gsb.org/cloud

      ErrorLog /var/<span class="hljs-built_in">log</span>/apache2/www-error.log
      CustomLog /var/<span class="hljs-built_in">log</span>/apache2/www-access.log combined

      SSLCertificateFile      /etc/ssl/localcerts/gsb.crt
      SSLCertificateKeyFile /etc/ssl/localcerts/gsb.key.org

      &lt;Directory /home/htdocs/asie.gsb.org/cloud&gt;
           Require all granted
      &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre>
<pre><code class="lang-bash">a2enmod ssl <span class="hljs-comment"># active ssl </span>
systemctl restart apache2 <span class="hljs-comment"># redémarre apache2 pour appliquer les changements </span>
netstat -nat <span class="hljs-comment"># affiche les ports en écoute</span>
</code></pre>
<p>Ici, on voit bien que notre serveur web est désormais en écoute sur le port 443.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759234132/a8b0a091-5920-49b8-91d5-c25ae62dd792.png" alt class="image--center mx-auto" /></p>
<h4 id="heading-verification-https">Vérification HTTPS</h4>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759251209/cca12978-f105-4b8a-844b-a0cff9f331c7.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759260073/b6e36589-229c-4234-a0a0-6ba9eb91c182.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-partie-f-activer-mfa-sur-nextcloud">Partie F - Activer MFA sur Nextcloud</h3>
<p>La MFA (Multi-Factor Authentication) est une méthode de sécurité qui nécessite deux ou plusieurs moyens d'authentification différents pour accéder à un compte. L'objectif est de rendre plus difficile pour les pirates informatiques de compromettre votre compte en exigeant une seconde couche d'authentification. Dans notre cas, nous allons nous servir du service Google Authenticator pour la MFA.</p>
<h4 id="heading-installation-plug-in">Installation plug-in</h4>
<p>Dans l'onglet Applications &gt; Sécurité, installer le module Two-Factor TOTP Provier.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759308056/165cc6c3-3351-440f-89be-4ebaf2eecabe.png" alt class="image--center mx-auto" /></p>
<p>Ensuite, dans l'onglet Paramètres d'administration &gt; Personnel &gt; Sécurité, activer le TOTP :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759395192/2bf153a3-a989-4097-8f12-7358ab63c23d.png" alt class="image--center mx-auto" /></p>
<p>Désormais, quand un utilisateur tente de se connecter, Nextcloud exigera également son code TOTP</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759415946/99f7ff4c-da03-41b7-a0cc-540654369f48.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-partie-g-script-de-sauvegarde">Partie G - Script de sauvegarde</h3>
<h4 id="heading-realisation-du-script">Réalisation du script</h4>
<p>J'ai également voulu créer un script de sauvegarde afin de pouvoir restaurer rapidement la base de donnée nexclouddb en cas de problèmes. Pour cela, j'ai décidé d'utiliser bash et la commande mysqldump pour sa facilité d'utilisation.</p>
<pre><code class="lang-bash">nano nextcloud-backup.sh
</code></pre>
<pre><code class="lang-bash">db_password=<span class="hljs-string">"XXXXXXXXXX"</span>

backup_dir=<span class="hljs-string">"/root/nextcloud-backup/"</span>
backup_file=<span class="hljs-string">"nextcloud_<span class="hljs-subst">$(date +%Y%m%d_%H%M%Sz)</span>.sql"</span>

mysqldump --single-transaction -h 10.31.192.8 -u std -p<span class="hljs-variable">$db_password</span> nextclouddb &gt; <span class="hljs-variable">$backup_dir</span>/<span class="hljs-variable">$backup_file</span>
find <span class="hljs-variable">$backup_dir</span> -<span class="hljs-built_in">type</span> f -mtime +7 -delete
</code></pre>
<p>Je commence par déclarer des variables pour pouvoir rapidement changer les paramètres si jamais l'administrateur le décide. Puis j'effectue une backup de la base de donnée avec la commande mysqldump que l'on va stocker le répertoire de la variable backup_dir. Et enfin, j'utilise la commande find pour supprimer les fichiers de backups datant de plus de 7 jours pour pouvoir faire le tri et donc ne pas saturer l'espace de stockage du disque.</p>
<pre><code class="lang-bash">chmod +x nextcloud-backup.sh <span class="hljs-comment"># attribue le droit d'éxécution au script</span>
./nextcloud-backup.sh <span class="hljs-comment"># éxécute le script</span>
</code></pre>
<p>On voit qu'après exécution du script, le fichier de backup a bien été créé.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759589817/2ce08159-005d-44df-ac95-56ac049cd2d4.png" alt class="image--center mx-auto" /></p>
<h4 id="heading-cron">Cron</h4>
<p>Maintenant, le but est d'exécuter le script toutes les 10 minutes pour pouvoir assurer la sécurité de l'application. Pour cela, on va créer une crontab avec l'outil cron.</p>
<pre><code class="lang-bash">crontab -e <span class="hljs-comment"># modifie la configuration des crontabs</span>
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># ajouter cette ligne pour exécuter le script toutes les 10 minutes </span>

*/10 * * * * /root/nextcloud-backup.sh
</code></pre>
<p>Désormais, le script sera automatiquement exécuter toutes les 10 minutes sur le serveur web.</p>
<h3 id="heading-partie-h-ids-fail2ban-nextcloud">Partie H - IDS (Fail2Ban) - Nextcloud</h3>
<p>On commence par installer Fail2Ban sur le serveur web privé.</p>
<p>Sur <code>web-tp1</code> :</p>
<pre><code class="lang-bash">apt update
apt install fail2ban iptables
<span class="hljs-built_in">cd</span> /etc/fail2ban/
cp jail.conf jail.local <span class="hljs-comment"># créer une copie du fichier jail.conf</span>
</code></pre>
<p>Puis, on ajoute la jail pour nextcloud :</p>
<pre><code class="lang-bash">nano jail.local
</code></pre>
<pre><code class="lang-bash">[nextcloud]
enabled = <span class="hljs-literal">true</span> <span class="hljs-comment"># active la jail</span>
filter = nextcloud <span class="hljs-comment"># le fichier filtre sera nextcloud.conf dans filter.d</span>
port = https <span class="hljs-comment"># le port 443 sera affecté par l’action entreprise</span>
logpath = /home/htdocs/asie.gsb.org/cloud/data/nextcloud.log <span class="hljs-comment"># le chemin vers le fichier de logs nextcloud à surveiller</span>
maxretry = 2 <span class="hljs-comment"># 3ème essai = ban</span>
bantime = 120 <span class="hljs-comment"># ban pendant 120s</span>
</code></pre>
<p>On va maintenant configurer la regex pour indiquer la forme que prends un message d'erreur de connexion pour le service nextcloud.</p>
<pre><code class="lang-bash">nano filter.d/nextcloud.conf
</code></pre>
<pre><code class="lang-bash">[Definition]
_groupsre = (?:(?:,?\s*<span class="hljs-string">"\w+"</span>:(?:<span class="hljs-string">"[^"</span>]+<span class="hljs-string">"|\w+))*)
failregex = ^\{%(_groupsre)s,?\s*"</span>remoteAddr<span class="hljs-string">":"</span>&lt;HOST&gt;<span class="hljs-string">"%(_groupsre)s,?\s*"</span>message<span class="hljs-string">":"</span>Login failed:
            ^\{%(_groupsre)s,?\s*<span class="hljs-string">"remoteAddr"</span>:<span class="hljs-string">"&lt;HOST&gt;"</span>%(_groupsre)s,?\s*<span class="hljs-string">"message"</span>:<span class="hljs-string">"Trusted domain error.
datepattern = ,?\s*"</span>time<span class="hljs-string">"\s*:\s*"</span>%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?<span class="hljs-string">"</span>
</code></pre>
<pre><code class="lang-bash">service fail2ban restart
</code></pre>
<h4 id="heading-phase-de-test">Phase de Test</h4>
<p>On va d'abord vérifier si la jail est bien activé en utilisant la commande fail2ban-client.</p>
<pre><code class="lang-bash">fail2ban-client status
</code></pre>
<p>On voit bien que la jail pour Nextcloud est bien activé.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759840936/ae9ac9b4-eade-488d-9ff6-a7a3d5fd19e8.png" alt class="image--center mx-auto" /></p>
<p>Ensuite, on simule une attaque bruteforce en tentant de se connecter au Nextcloud plus de 3 fois.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759865693/6bc8fe16-678f-400c-8b6c-05cd4bbcfd65.png" alt class="image--center mx-auto" /></p>
<p>On affiche les infos sur la jail nextcloud.</p>
<pre><code class="lang-bash">fail2ban-client status nextcloud
</code></pre>
<p>On voit que notre machine est maintenant banni de notre site nextcloud</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759924013/30bd8ca2-50f2-40e1-beb5-0bdd158f2546.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682759940392/d1f6fd09-c99d-4629-8487-586a72d3aa2b.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Mise en place de l'XDR Wazuh]]></title><description><![CDATA[Partie A - Création VM
On commence par cloner la VM Template à l'aide KVM en choisissant le bridge br1 pour le LAN.

Changement nom d'hôte
hostnamectl set-hostname xdr-tp2

Réservation d'adresse DHCP
Sur DHCP1 & DHCP2 :
nano /etc/dhcp/dhcpd.conf

# d...]]></description><link>https://zeyn.hashnode.dev/wazuh</link><guid isPermaLink="true">https://zeyn.hashnode.dev/wazuh</guid><dc:creator><![CDATA[Zeyn]]></dc:creator><pubDate>Fri, 28 Apr 2023 09:23:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1682673920430/b1c8bf8f-81e7-4356-b753-b21d99156f53.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-partie-a-creation-vm">Partie A - Création VM</h3>
<p>On commence par cloner la VM Template à l'aide KVM en choisissant le bridge br1 pour le <abbr>LAN</abbr>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682673499680/b80bdf36-832f-43cb-a67f-61349071eb81.png" alt class="image--center mx-auto" /></p>
<h4 id="heading-changement-nom-dhote">Changement nom d'hôte</h4>
<pre><code class="lang-bash">hostnamectl set-hostname xdr-tp2
</code></pre>
<h4 id="heading-reservation-dadresse-dhcp">Réservation d'adresse DHCP</h4>
<p>Sur <code>DHCP1</code> &amp; <code>DHCP2</code> :</p>
<pre><code class="lang-bash">nano /etc/dhcp/dhcpd.conf
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># dans la partie privée</span>

host xdr-tp2 {
                        <span class="hljs-comment"># adresse MAC de xdr-tp2</span>
                        hardware ethernet 52:54:00:c1:4a:5e;
                        fixed-address 10.31.192.24;
                }
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># on redémarre le service dhcp pour appliquer les changements</span>
systemctl restart isc-dhcp-server
</code></pre>
<p>Sur <code>xdr-tp2</code> :</p>
<pre><code class="lang-bash">dhclient -r <span class="hljs-comment"># efface les anciennes configurations dhcp</span>
dhclient -v <span class="hljs-comment"># effectue une nouvelle requête dhcp</span>
</code></pre>
<p>On voit que la machine a bien récupéré l'adresse 10.31.192.24 que le dhcp2 lui a donnée.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682674057334/51aeefdf-290b-4af6-a953-72bf659a049f.png" alt="On voit que la machine a bien récupéré l'adresse 10.31.192.24 que le dhcp2 lui a donnée." class="image--center mx-auto" /></p>
<h3 id="heading-partie-b-installation-indexeur-wazuh">Partie B - Installation Indexeur Wazuh</h3>
<h4 id="heading-quest-ce-que-wazuh">Qu'est ce que Wazuh ?</h4>
<p>Wazuh est une solution open source très complète pour la sécurité des endpoints, combinant la détection d'intrusion, la gestion des logs, la conformité réglementaire et la sécurité des endpoints, et compatible avec une large gamme de systèmes d'exploitation. Cette solution offre des fonctionnalités très utiles pour la sécurité des endpoints, telles que la détection de malware, la surveillance en temps réel, la collecte de données système, la détection de rootkits et des alertes en cas d'activité suspecte pour faciliter la détection précoce des menaces.</p>
<h4 id="heading-ajout-du-depot-wazuh">Ajout du dépôt Wazuh</h4>
<pre><code class="lang-bash">apt update
apt install gnupg apt-transport-https curl
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import &amp;&amp; chmod 644 /usr/share/keyrings/wazuh.gpg
<span class="hljs-built_in">echo</span> <span class="hljs-string">"deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main"</span> | tee -a /etc/apt/sources.list.d/wazuh.list
apt update
</code></pre>
<h4 id="heading-generation-des-certificats">Génération des certificats</h4>
<pre><code class="lang-bash">curl -sO https://packages.wazuh.com/4.4/wazuh-certs-tool.sh
curl -sO https://packages.wazuh.com/4.4/config.yml
nano config.yml
</code></pre>
<pre><code class="lang-bash">nodes:
  <span class="hljs-comment"># Wazuh indexer nodes</span>
  indexer:
    - name: node-1
      ip: 10.31.192.24

  server:
    - name: wazuh-1
      ip: 10.31.192.24

  <span class="hljs-comment"># Wazuh dashboard nodes</span>
  dashboard:
    - name: dashboard
      ip: 10.31.192.24
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># génération du certificat</span>
./wazuh-certs-tool.sh -A

tar -cvf ./wazuh-certificates.tar -C ./wazuh-certificates/ .
rm -rf ./wazuh-certificates
</code></pre>
<h4 id="heading-installation-des-noeuds">Installation des noeuds</h4>
<pre><code class="lang-bash">apt-get install debconf adduser procps wazuh-indexer
nano /etc/wazuh-indexer/opensearch.yml
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># on ajoute cette ligne</span>
network.host: <span class="hljs-string">"10.31.192.24"</span>
</code></pre>
<h4 id="heading-deploiement-des-certificats">Déploiement des certificats</h4>
<pre><code class="lang-bash">NODE_NAME=node-1
mkdir /etc/wazuh-indexer/certs
tar -xf ./wazuh-certificates.tar -C /etc/wazuh-indexer/certs/ ./<span class="hljs-variable">$NODE_NAME</span>.pem ./<span class="hljs-variable">$NODE_NAME</span>-key.pem ./admin.pem ./admin-key.pem ./root-ca.pem
mv -n /etc/wazuh-indexer/certs/<span class="hljs-variable">$NODE_NAME</span>.pem /etc/wazuh-indexer/certs/indexer.pem
mv -n /etc/wazuh-indexer/certs/<span class="hljs-variable">$NODE_NAME</span>-key.pem /etc/wazuh-indexer/certs/indexer-key.pem
chmod 500 /etc/wazuh-indexer/certs
chmod 400 /etc/wazuh-indexer/certs/*
chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs
systemctl daemon-reload
systemctl <span class="hljs-built_in">enable</span> wazuh-indexer
systemctl start wazuh-indexer
systemctl status wazuh-indexer
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682675084256/d709507d-caa6-42fc-91bb-4977ecf8474f.png" alt class="image--center mx-auto" /></p>
<h4 id="heading-initialisation-du-cluster">Initialisation du cluster</h4>
<pre><code class="lang-bash">/usr/share/wazuh-indexer/bin/indexer-security-init.sh
</code></pre>
<h4 id="heading-test-du-cluster">Test du cluster</h4>
<pre><code class="lang-bash"><span class="hljs-comment"># on se connecte avec les identifiants par défaut sur le cluster </span>
curl -k -u admin:admin https://10.31.192.24:9200
</code></pre>
<p>On voit que le cluster répond correctement.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682681545108/3cfa124a-a340-403e-9a53-cffb890566ba.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-partie-c-installation-serveur-wazuh">Partie C - Installation Serveur Wazuh</h3>
<h4 id="heading-ajout-du-depot-wazuh-1">Ajout du dépôt Wazuh</h4>
<p>Sur <code>xdr-tp2</code> :</p>
<pre><code class="lang-bash">apt update
apt install gnupg apt-transport-https curl
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import &amp;&amp; chmod 644 /usr/share/keyrings/wazuh.gpg
<span class="hljs-built_in">echo</span> <span class="hljs-string">"deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main"</span> | tee -a /etc/apt/sources.list.d/wazuh.list
apt update
</code></pre>
<h4 id="heading-installation-de-wazuhmanager">Installation de WazuhManager</h4>
<p>Sur <code>xdr-tp2</code> :</p>
<pre><code class="lang-bash">apt-get -y install wazuh-manager
systemctl daemon-reload
systemctl <span class="hljs-built_in">enable</span> wazuh-manager
systemctl start wazuh-manager
systemctl status wazuh-manager
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682675215513/4387d6ab-c317-4db3-85bf-97a41a0959c0.png" alt class="image--center mx-auto" /></p>
<h4 id="heading-installation-de-filebeat">Installation de Filebeat</h4>
<p>Filebeat est un agent léger permettant de récupérer et d'envoyer les logs système et applicatifs des hôtes vers le serveur Wazuh pour l'analyse et la détection de menaces.</p>
<p>Sur <code>xdr-tp2</code> :</p>
<pre><code class="lang-bash">apt-get install filebeat
curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/4.4/tpl/wazuh/filebeat/filebeat.yml

<span class="hljs-comment"># créer un keystore Filebeat pour stocker en toute sécurité les credentials</span>
filebeat keystore create
<span class="hljs-built_in">echo</span> admin | filebeat keystore add username --stdin --force
<span class="hljs-built_in">echo</span> admin | filebeat keystore add password --stdin --force

<span class="hljs-comment"># télécharger les templates d'alertes</span>
curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/4.4/extensions/elasticsearch/7.x/wazuh-template.json
chmod go+r /etc/filebeat/wazuh-template.json

<span class="hljs-comment"># installer le module Wazuh pour Filebeat</span>
curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.2.tar.gz | tar -xvz -C /usr/share/filebeat/module

nano /etc/filebeat/filebeat.yml
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># ajoute ces lignes</span>
hosts: [<span class="hljs-string">"10.31.192.24:9200"</span>]
  protocol: https
  username: admin
  password: admin
</code></pre>
<h4 id="heading-deploiement-des-certificats-1">Déploiement des certificats</h4>
<pre><code class="lang-bash">NODE_NAME=node-1
mkdir /etc/filebeat/certs
tar -xf ./wazuh-certificates.tar -C /etc/filebeat/certs/ ./<span class="hljs-variable">$NODE_NAME</span>.pem ./<span class="hljs-variable">$NODE_NAME</span>-key.pem ./root-ca.pem
mv -n /etc/filebeat/certs/<span class="hljs-variable">$NODE_NAME</span>.pem /etc/filebeat/certs/filebeat.pem
mv -n /etc/filebeat/certs/<span class="hljs-variable">$NODE_NAME</span>-key.pem /etc/filebeat/certs/filebeat-key.pem
chmod 500 /etc/filebeat/certs
chmod 400 /etc/filebeat/certs/*
chown -R root:root /etc/filebeat/certs
systemctl daemon-reload
systemctl <span class="hljs-built_in">enable</span> filebeat
systemctl start filebeat
</code></pre>
<h4 id="heading-tests-de-filebeat">Tests de filebeat</h4>
<pre><code class="lang-bash">filebeat <span class="hljs-built_in">test</span> output
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682675304353/1bab9e59-55c7-48dc-bd32-583ecfdb3248.png" alt=" On voit que filebeat se connecte bien avec l'Elasticsearch. " class="image--center mx-auto" /></p>
<h3 id="heading-partie-d-installation-dashboard-wazuh">Partie D - Installation Dashboard Wazuh</h3>
<pre><code class="lang-bash">apt-get install debhelper tar curl libcap2-bin wazuh-dashboard
nano /etc/wazuh-dashboard/opensearch_dashboards.yml
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># ajouter ces 2 lignes </span>
server.host: 10.31.192.24
opensearch.hosts: https://10.31.192.24:9200
</code></pre>
<h4 id="heading-deploiement-des-certificats-2">Déploiement des certificats</h4>
<pre><code class="lang-bash">NODE_NAME=node-1
mkdir /etc/wazuh-dashboard/certs
tar -xf ./wazuh-certificates.tar -C /etc/wazuh-dashboard/certs/ ./<span class="hljs-variable">$NODE_NAME</span>.pem ./<span class="hljs-variable">$NODE_NAME</span>-key.pem ./root-ca.pem
mv -n /etc/wazuh-dashboard/certs/<span class="hljs-variable">$NODE_NAME</span>.pem /etc/wazuh-dashboard/certs/dashboard.pem
mv -n /etc/wazuh-dashboard/certs/<span class="hljs-variable">$NODE_NAME</span>-key.pem /etc/wazuh-dashboard/certs/dashboard-key.pem
chmod 500 /etc/wazuh-dashboard/certs
chmod 400 /etc/wazuh-dashboard/certs/*
chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs
systemctl daemon-reload
systemctl <span class="hljs-built_in">enable</span> wazuh-dashboard
systemctl start wazuh-dashboard
</code></pre>
<p>On peut maintenant se connecter à l'interface web de Wazuh avec les credendials <code>admin:admin</code> à l'adresse : <a target="_blank" href="https://10.31.192.24/app/wazuh">https:<em>//10.31.192.24/app/wazuh</em></a><em>.</em></p>
<p>Mais une erreur apparaît au niveau des patterns d'alertes.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682675419997/29709e8f-2c42-48a3-9c5d-1073472bfa40.png" alt class="image--center mx-auto" /></p>
<p>Cette erreur indique qu'ElasticSearch ne trouve pas le pattern d'erreur index, on va donc en ajouter un.</p>
<pre><code class="lang-bash">systemctl stop filebeat
curl -so template.json https://raw.githubusercontent.com/wazuh/wazuh/v4.4.0/extensions/elasticsearch/7.x/wazuh-template.json

<span class="hljs-comment"># on push le template sur le serveur avec la méthode PUT</span>
curl -XPUT -k -u admin:admin <span class="hljs-string">'https://10.31.192.24:9200/_template/wazuh'</span> -H <span class="hljs-string">'Content-Type: application/json'</span> -d @template.json
systemctl start filebeat
</code></pre>
<p>Quand on relance Wazuh, il n'y a plus d'erreurs et on accède correctement au dashboard.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682675535759/c74749b0-2694-4cb6-a4f7-3c5219ce82a1.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-partie-e-ajout-de-clients">Partie E - Ajout de clients</h3>
<h4 id="heading-ajout-de-regles-firewall">Ajout de règles firewall</h4>
<p>Avant d'ajouter l'agent, il faut autoriser les communications sur les ports <code>55000</code>, <code>1514</code> &amp; <code>1515</code> pour que l'agent puisse communiquer avec le serveur Wazuh.</p>
<p><code>DMZ</code> :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682675605879/716a4cea-f884-4105-87eb-5bb0e13947de.png" alt class="image--center mx-auto" /></p>
<p><code>LAN</code> :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682675623743/b5f13d4f-ee50-42c6-ae9f-66c3e600fabf.png" alt class="image--center mx-auto" /></p>
<h4 id="heading-ajout-de-lagent">Ajout de l'agent</h4>
<p>Sur <code>privdb2</code> :</p>
<pre><code class="lang-bash">apt install sudo curl
curl -so wazuh-agent.deb https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.4.0-1_amd64.deb &amp;&amp; sudo WAZUH_MANAGER=<span class="hljs-string">'10.31.192.24'</span> WAZUH_AGENT_NAME=<span class="hljs-string">'privdb2'</span> dpkg -i ./wazuh-agent.deb
nano /etc/hosts
</code></pre>
<pre><code class="lang-bash"><span class="hljs-comment"># ajoute un enregistrement pour privdb2</span>
10.31.192.34    privdb2
</code></pre>
<pre><code class="lang-bash">sudo systemctl daemon-reload
sudo systemctl <span class="hljs-built_in">enable</span> wazuh-agent
sudo systemctl start wazuh-agent
</code></pre>
<p>On voit que le client a correctement été ajouté</p>
<p><img src alt class="image--center mx-auto" /></p>
<h3 id="heading-partie-f-automatisation-de-lajout-de-clients">Partie F - Automatisation de l'ajout de clients</h3>
<p>Maintenant, le but est de créer un script de déploiement d'agent pour pouvoir intégrer toutes les VMs à notre XDR sans bouger le petit doigt.</p>
<h4 id="heading-ajout-de-lutilisateur-std-au-groupe-sudo-sudoers">Ajout de l'utilisateur std au groupe sudo (sudoers)</h4>
<p>Sur <code>toutes les VMs</code> :</p>
<pre><code class="lang-bash">apt install sudo
usermod -aG sudo std
</code></pre>
<h4 id="heading-script-ansible">Script Ansible</h4>
<p>Sur <code>Main server</code> :</p>
<pre><code class="lang-bash">ssh-copy-id std@10.31.192.15 <span class="hljs-comment"># faire toutes les VMs</span>
apt update &amp;&amp; apt install ansible -y
mkdir wazuh_agent_setup &amp;&amp; <span class="hljs-built_in">cd</span> wazuh_agent_setup
nano hosts
</code></pre>
<pre><code class="lang-bash">[wazuh_agents]
10.31.192.10
10.31.192.115
10.31.192.13
10.31.192.33
10.31.192.35
10.31.192.61
10.31.192.67
10.31.192.68
10.31.192.8
10.31.192.80
10.31.192.88
10.31.192.99
10.31.200.115
10.31.200.20
10.31.200.25
10.31.200.53
10.31.200.54
10.31.200.67
10.31.200.7
10.31.200.80
10.31.200.81
10.31.200.82
</code></pre>
<pre><code class="lang-bash">nano deploy_wazuh_agent.yml
</code></pre>
<pre><code class="lang-bash">- hosts: wazuh_agents
  remote_user: std
  become: <span class="hljs-literal">true</span>
  tasks:

    - name: mettre à jour les paquets disponibles
      apt:
        update_cache: yes

    - name: Supprimer la ligne inutile
      lineinfile:
        path: /etc/hosts
        regexp: <span class="hljs-string">"^{{ ansible_default_ipv4.address }}\\s+.*$"</span>
        state: absent

    - name: ajouter enregistrement DNS pour l<span class="hljs-string">'hote
      lineinfile:
        path: /etc/hosts
        line: "{{ ansible_default_ipv4.address }}    {{ ansible_hostname }}"
        state: present
      loop: "{{ ansible_play_batch }}"

    - name: installer sudo et curl
      apt:
        name: ['</span>sudo<span class="hljs-string">', '</span>curl<span class="hljs-string">']
        state: present

    - name: télécharger et installer l'</span>agent Wazuh
      shell: |
        sudo curl -so wazuh-agent.deb https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.4.0-1_amd64.deb &amp;&amp; WAZUH_MANAGER=<span class="hljs-string">'10.31.192.24'</span> dpkg -i ./wazuh-agent.deb

    - name: Reload systemd manager configuration
      systemd:
        daemon_reload: yes

    - name: Enable Wazuh agent service
      service:
        name: wazuh-agent
        enabled: yes
        state: started
</code></pre>
<pre><code class="lang-bash">ansible-playbook deploy_wazuh_agent.yml --ask-become-pass -i hosts
</code></pre>
<p>Après l'exécution du script on a bien nos VMs sur le serveur Wazuh !</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682681303673/98878c07-b2c2-4275-aa80-82a030b1b338.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-partie-g-actualisation-du-schema-reseau">Partie G - Actualisation du schéma réseau</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1682681323407/5d2426e3-d0e0-4034-810b-e51edf0d5a45.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item></channel></rss>