• Passer à la navigation principale
  • Passer au contenu principal
  • Passer au pied de page
Lois Dutour

Lois Dutour

  • Accueil
  • Expériences professionnelles
    • DiSI Nord : Cellule Informatique Départementale
    • McDonald’s
  • Formations
    • BTS SIO SISR
      • Veille technologique
      • Tableau de compétences
  • Projets
  • Contact
  • A propos

Gérer le patrimoine informatique

Déploiement accompagné de postes utilisateurs : Installation et configuration des services avec formation individuelle

22 avril 2025 by Lois Dutour

Sorry, but you do not have permission to view this content.

Classé sous :Gérer le patrimoine informatique, Mettre à disposition des utilisateurs un service informatique, Organiser son développement professionnel, Répondre aux incidents et aux demandes d’assistance et d’évolution Balisé avec :Réalisations professionnelles

Gestion inventaire physique : Recensement équipements

22 avril 2025 by Lois Dutour

Sorry, but you do not have permission to view this content.

Classé sous :Gérer le patrimoine informatique, Travailler en mode projet Balisé avec :Réalisations professionnelles

Configuration d’un service cloud : Nextcloud

20 avril 2025 by Lois Dutour

Contexte

Dans le cadre de la mise en place d’une infrastructure systèmes et réseaux la plus complète dans le cadre de l’épreuve E6. Ainsi différents services sont à intégrer, dans cet article nous utiliserons ceux-ci :

Et l’infrastructure finale ressemble à ceci :

Installation et Configuration de Nextcloud

Installation de Nextcloud

Configuration de la base de données

Création d’une base de données pour NextCloud, dans un premier temps, se connecter au shell en utilisant le mot de passe root créé :

sudo mysql_secure_installation
sudo mysql -u root -p

Création de la base de données pour NextCloud

CREATE DATABASE ANTIPHATES;
GRANT ALL PRIVILEGES ON ANTIPHATES.* TO 'ANTIPHATES_USER'@'%'  IDENTIFIED BY 'je_suis_le_mot_de_passe';
FLUSH PRIVILEGES;
EXIT;

⚠️Ne pas oublier de remplacer mot de passe et nom d’utilisateur⚠️

Téléchargement de Nextcloud

Téléchargement du code source

sudo dnf -y install vim nano wget unzip
wget <https://download.nextcloud.com/server/releases/latest.zip>

Extraction des fichiers compressés dans /var/www/html/

sudo unzip latest.zip -d /var/www/html/

Définir la propriété des fichiers sur Apache

sudo chown -R apache:apache /var/www/html/nextcloud/

Configuration des règles Apache, SELinux et Pare-feu

Configuration de SELinux

sudo dnf -y install policycoreutils-python-utils
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/nextcloud(/.*)?"
sudo restorecon -Rvv /var/www/html/nextcloud

Création d’un fichier d’hôte virtuel pour Nextcloud

sudo nano /etc/httpd/conf.d/nextcloud.conf

Et y inscrire les lignes suivantes

<VirtualHost *:80>
    ServerName 192.168.1.140
    DocumentRoot /var/www/html/nextcloud
    ErrorLog  /var/log/httpd/nextcloud_error.log
    CustomLog /var/log/httpd/nextcloud.log combined
</VirtualHost>

Modification de la limite de mémoire PHP

sudo nano /etc/php.ini

Modifier la ligne memory_limit de 128M en 512M :

memory_limit = 512M

Enregistrer le fichier et recharger le service Apache

sudo systemctl reload httpd

Autorisation des règles de pare-feu

sudo firewall-cmd --add-service={http,https} --zone=public --permanent
sudo firewall-cmd --reload

Puis accéder à l’interface utilisateur via l’IP suivante

http://adress_ip/

Création d’un compte administrateur en remplissant les champs nécessaires

Suivez les propositions d’installations de modules complémentaires à Nextcloud et vous y êtes : Nextcloud est installé !

Configurations avancées

Gestion des Quotas de Stockage

Pour effectuer une gestion des quotas de stockage, il est nécessaire de se rendre dans Comptes → Paramètres gestion des comptes

Paramètres de Sécurité

  • Configuration des politiques de mot de passe.

Cela est effectué par défaut, cependant pour configurer les politiques de mot de passe, il est nécessaire d’avoir l’application Password Policy d’active ( A activer dans Mes applications → Applications désactivées → Password Policy → Activer).

Et cette application permet d’activer un ensemble de règles conçues pour renforcer la sécurité en encourageant les utilisateurs à utiliser des mots de passe forts.

Les règles sont :

  • Longueur de 10 caractères minimum
  • Vérification des mots de passes avec une liste de mots de passe compromis (Liste sur haveibeenpwned.com)
  • Activation de l’authentification à deux facteurs (2FA)

Pour activer l’authentification à deux facteurs (2FA), il faudra d’abord activer dans un premier l’application Two-Factor TOTP Provider (A activer dans Mes applications → Applications désactivées → Two-Factor TOTP Provider → Activer).

  • Pour activer individuellement sur un utilisateur :

Paramètres personnels → Sécurité → Authentification à deux facteurs → TOTP (Authenticator app) → Activer les mots de passe à usage unique (TOTP) → Scanner le QR Code pour l’ajouter à un gestionnaire de mot de passe

  • Pour activer sur tous les utilisateurs :

Paramètres d’administration → Sécurité → Authentification à deux facteurs

Authentification LDAP

Dans le cadre de l’utilisation de l’AD pour l’authentification des utilisateurs, il est possible d’utiliser un module. Cependant, il nécessaire d’effectuer des étapes supplémentaires.

sudo dnf install php-ldap -y
sudo setsebool -P httpd_can_connect_ldap 1
sudo setsebool -P authlogin_nsswitch_ use_ldap 1
sudo firewall-cmd --permanent --add-service=ldap

Puis se rendre dans Mes applications → Applications désactivées → LDAP user and group backend → Activer • Création d’un compte de service permettant au service Nextcloud de lire les utilisateurs dans l’AD

Se rendre dans Paramètres d’administration → LDAP/AD intégration

sudo firewall-cmd --permanent --add-service=ldap

Limitation de l’accès à nos utilisateurs qui sont dans le groupe Utilisateurs Du Domaine

Grâce à cette fonction, on peut savoir combien d’utilisateurs sont disponibles

Test de connexion avec un compte de l’AD

Surveillance et Maintenance

Dans Paramètres d’administrations > Système, il est possible d’effectuer une surveillance du système.

Classé sous :Gérer le patrimoine informatique, Mettre à disposition des utilisateurs un service informatique Balisé avec :En cours de formation

Gestion incidents (Outil propriétaire) : Suivi et résolution des incidents

18 avril 2025 by Lois Dutour

Sorry, but you do not have permission to view this content.

Classé sous :Gérer le patrimoine informatique, Mettre à disposition des utilisateurs un service informatique, Répondre aux incidents et aux demandes d’assistance et d’évolution, Travailler en mode projet Balisé avec :Réalisations professionnelles

Haute Disponibilité WEB: HAProxy

15 avril 2025 by Lois Dutour

Contexte

Dans le cadre de la mise en place d’une infrastructure sécurisée répondant aux critères de l’épreuve E5, le critère de redondance était nécessaire. Ainsi, dans la mission de la charge de serveurs web de la société BagdadMediLab, cette société ayant une volonté de résister face aux nombres importants de visites sur son site web. Alors le service mise en place est pensé comme un cluster pour une haute disponibilité avec HAPRoxy.

Installation et configuration des serveurs WEB

Prérequis

Ainsi, dans le cadre de la mise en place d’une infrastructure, il est nécessaire d’avoir :

  • Un serveur sous Rocky Linux (9.4 ici)

Installation d’un service WEB (nginx)

  • Installation des packages nécessaires au service WEB
sudo dnf install nginx php-fpm mariadb-server php php-mysqlnd -y
  • On retrouvera les fichiers de .conf dans /etc/nginx/
sudo ls /etc/nginx/
  • Et les logs se trouveront dans le répertoire /var/log/nginx/error.log
  • Et par défaut, les fichiers pour le site web sont dans le répertoire /usr/share/nginx/html/
  • On ajoute une exception pour les ports 80 (HTTP) et 443 (HTTPS) dans le pare-feu pour que la page par défaut (index.html) s’affiche correctement
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
  • Démarrer et rendre enable le service nginx
sudo systemctl start nginx & sudo systemctl enable nginx
  • On peut voir les pages http par défaut (index.html) qui s’affiche dans notre navigateur si on tape http://adresse_ip/
  • Et pour vérifier que le service http est autorisé dans le firewall :
sudo firewall-cmd --list-service
  • Modification du port d’écoute de nginx (par défaut 80 pour le protocole html), il faut se rendre dans le fichier de configuration nginx et modification des paramètres :
sudo nano /etc/nginx/nginx.conf
sudo systemctl restart nginx
  • Que l’on teste avec le port 80 ou 8080, cela nous donne le résultat suivant, en effet le port d’écoute de nginx ayant été modifié, le 80 n’est plus écouté et le firewall-cmd n’a pas été configuré pour effectuer une exception pour le port 8080.
  • Modification de la configuration pour la remettre dans son état d’origine (Il faut effectuer la manipulation inverse que celle-ci-dessus)

Installation du moteur de la base de données

  • MariaDB ayant été installé, il est nécessaire de le configurer
    • TIPS : Il faudra conserver ces logins tout au long du TP
    • Lancement et rendre enable au démarrage MariaDB
sudo systemctl enable --now mariadb.service
  • Lancement de la configuration de base
sudo mysql_secure_installation
  • Connexion
sudo mysql -u root -p
  • Création de la base de données
create database bdd_web;
  • Création de l’utilisateur
CREATE USER 'WEB'@'localhost' IDENTIFIED BY 'je_suis_le_mot_de_passe';
  • Attribution des droits
GRANT ALL PRIVILEGES ON bdd_web.* TO 'WEB'@'localhost';
  • Forcer la prise en compte des modifications
FLUSH PRIVILEGES;
  • Vérifier la base de données
SHOW DATABASES;

Déploiement du site FR

  • Déploiement le site FR, pour cela nous allons créer le répertoire ecommerce.fr/ dans /var/www/
sudo mkdir -p /var/www/ecommerce.fr/
  • Avec le package fournis, on déposera l’ensemble des fichiers dans le répertoire ecommerce.fr Astuce : WinSCP permet d’effectuer cette démarche en utilisant le protocole SSH
sudo cp -r /home/ldutour/PricingSubscription/ /var/www/ecommerce.fr/
  • Maintenant nous allons modifier les paramètres de php-fpm, se rendre dans /etc/php-fpm.d/www.conf
sudo nano /etc/php-fpm.d/www.conf
  • Activation du démarrage automatique et démarrer dès maintenant le service
sudo systemctl start php-fpm & sudo systemctl enable --now php-fpm
  • Création du fichier de configuration nginx, à créer dans le répertoire /etc/nginx/conf.d/site_commerce.fr.conf
sudo nano /etc/nginx/conf.d/site_commerce.fr.conf
server {
        listen 80;
        listen [::]:80;

        root /var/www/ecommerce.fr/PricingSubscription/;
        index index.html index.htm index.nginx-debian.html sign-up.php;

        server_name ecommerce.fr ;
        location ~* \.php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
        access_log /var/log/nginx/access_ecommerce.fr.log;
        error_log /var/log/nginx/error_ecommerce.fr.log;
        location / {
        try_files $uri $uri/ =404;
    }
}
  • Configuration du fichier de configuration php pour établir la connexion avec le moteur de base de données. Pour cela, il faut effectuer une modification du fichier de configuration conf.php et renseigner les informations avec les informations lors de la création de la base de données et de l’utilisateur.
sudo nano /var/www/ecommerce.fr/PricingSubscription/config.php
  • Exécution du script SQL database.sql fournit. Pour cela, il faut se connecter sur le moteur de base de données et sélectionner la base.
sudo mysql -u WEB -p
use bdd_web;
source /var/www/ecommerce.fr/PricingSubscription/database.sql
  • Relance du service nginx afin de faire des tests.
sudo systemctl restart nginx
  • Lorsque l’on tape l’adresse IP, cela fonctionne
  • Pour que le nom de domaine fonctionne, il faut modifier les DNS dans sa machine locale Sur Windows, modifier le fichier de configuration suivant en tant qu’administrateur
C:\Windows\System32\drivers\etc\hosts


Sur Linux, modifier le fichier de configuration suivant

/etc/hosts
  • Maintenant, si on tape dans la barre de recherche de son navigateur le nom de domaine, on tombe sur notre page
  • Un test supplémentaire permet de vérifier si php est correctement opérationnel : Cette commande permet de vérifier la version et information complémentaire de php ainsi que du système d’exploitation utilisé.
echo '<?php phpinfo(); ?>' | sudo tee /var/www/ecommerce.fr/PricingSubscription/info.php
sudo chown nginx:nginx /var/www/ecommerce.fr/PricingSubscription/info.php
sudo chmod 644 /var/www/ecommerce.fr/PricingSubscription/info.php
  • Si l’on souhaite modifier à notre guise la page en FR de la page qui s’affiche, alors il faudra modifier le fichier suivant : /var/www/ecommerce.fr/PricingSubscription/sign-up.php
sudo nano /var/www/ecommerce.fr/PricingSubscription/sign-up.php

En effectuant les modifications nécessaires, on se retrouve avec la page suivante :

Déploiement du site UK

Rappel du schéma de fonctionnement :

Nous allons maintenant déployer le 2ème site UK. En utilisant la démarche précédente à l’exception de quelques étapes :

  • La configuration de la base de données n’est pas nécessaire car nous réutiliserons celle du serveur WEB01
sudo mkdir -p /var/www/ecommerce.uk/
sudo cp -r /home/ldutour/PricingSubscription/ /var/www/ecommerce.fr/
sudo nano /etc/nginx/conf.d/site_commerce.uk.conf
server {
        listen 80;
        listen [::]:80;

        root /var/www/ecommerce.fr/PricingSubscription/;
        index index.html index.htm index.nginx-debian.html sign-up.php;

        server_name ecommerce.uk ;
        location ~* \.php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
        access_log /var/log/nginx/access_ecommerce.uk.log;
        error_log /var/log/nginx/error_ecommerce.uk.log;
        location / {
        try_files $uri $uri/ =404;
    }
}
sudo nano /var/www/ecommerce.uk/PricingSubscription/config.php
  • Ici, lors de l’indication d’où se trouve la base de données, on modifie localhost par l’adresse IP du serveur.
sudo systemctl restart nginx
  • Et lorsque l’on tape l’adresse IP dans notre navigateur, on retrouve le site.
  • Modification du fichier host du client se localisant ici :
C:\Windows\System32\drivers\etc\hosts
echo '<?php phpinfo(); ?>' | sudo tee /var/www/ecommerce.uk/PricingSubscription/info.php
sudo chown nginx:nginx /var/www/ecommerce.uk/PricingSubscription/info.php
sudo chmod 644 /var/www/ecommerce.uk/PricingSubscription/info.php
  • Le site ecommerce.uk est fonctionnel.
  • Par mesure de prévoyance, il est conseillé d’effectuer des snapshots des machines virtuelles configurées plus tôt.

Sécurisation d’un service WEB (nginx)

Dans le cadre d’une sécurisation des services WEB mise en place précédemment. Cependant dans le cadre de changements sur un système, il existe une gestion des changements. Les actions doivent être en lien avec la mise en place d’un incident ou d’un changement. C’est une recommandation selon la norme ITIL. Ainsi, nous suivrons le processus « type » d’un changement selon la norme ITIL, il est important de prendre en compte, cela est une proposition de processus, chaque entreprise l’adapte selon son besoin.


En lien avec le protocole http, l’ANSSI recommande l’utilisation des protocoles avec chiffrement. En effet, si l’on effectue une analyse Wireshark et que l’on rempli le formulaire du site :


Grâce à Wireshark, on peut observer les trames passer sur le réseau et les informations passent en clair. Ainsi il est urgent de sécuriser cela ! ⚠️ Pour cela, il est nécessaire de mettre en place le protocole HTTPS sur nos serveurs web.

  • Création du répertoire suivant et limitation de l’accès à ce répertoire
sudo mkdir /etc/ssl/private
sudo chmod 700 /etc/ssl/private/
  • Commande pour la génération des certificats et explication de cette commande
    o Openssl : Outil pour la création de certificat
    o Req : La commande x509 est un utilitaire de certificat polyvalent. Il peut être utilisé pour afficher des informations de certificat, convertir des certificats en diverses formes, signer des demandes de certificat comme une « mini CA » ou modifier les paramètres de confiance de certificat
    o -x509 : Cette Option génère un certificat auto-signe au lieu d’une demande de certificat. Ceci est généralement utilisé pour générer un certificat de test ou une autorité racine auto-signée. Les extensions ajoutées au certificat (le cas échéant) sont spécifiées dans le fichier de configuration.
    o -nodes : Cela indique à OpenSSL d’ignorer l’option permettant de sécuriser notre certificat avec une passphrase. Nous avons besoin de nginx pour pouvoir lire le fichier, sans intervention de l’utilisateur, au démarrage du serveur. Une phrase secrète empêcherait que cela se produise car nous devrions la saisir après chaque redémarrage.
    o -days 365 : Durée de validité du certificat
    o -newkey rsa:2048 : Cela spécifie que nous voulons générer un nouveau certificat et une nouvelle clé en même temps. Nous n’avons pas créé la clé requise pour signer le certificat lors d’une étape précédente, nous devons donc la créer avec le certificat. La partie rsa:2048 lui indique de créer une clé RSA d’une longueur de 2048 bits.
    o -keyout /etc/ssl/private/nginx-selfsigned.key :
    o -out /etc/ssl/certs/nginx-selfsigned.crt :
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned_fr.key -out /etc/ssl/certs/nginx-selfsigned_fr.crt
  • Générer un groupe Diffie-Hellman fort qui permet la négociation de PFS (Perfect Forward Secrecy)
sudo openssl dhparam -out /etc/ssl/certs/dhparam_fr.pem 2048
  • Édition des fichiers de configuration /etc/nginx/conf.d de chaque site pour intégrer le protocole HTTPS.
    o On va spécifier les ports de fonctionnement de HTTPS (443)
    o Spécification du certificat et de la clef
sudo nano /etc/nginx/conf.d/site_commerce.fr.conf
server {
        listen 443 http2 ssl;
        listen [::]:443 http2 ssl;
        ssl_certificate /etc/ssl/certs/nginx-selfsigned_fr.crt;
        ssl_certificate_key /etc/ssl/private/nginx-selfsigned_fr.key;
        ssl_dhparam /etc/ssl/certs/dhparam_fr.pem;
        root /var/www/ecommerce.fr/PricingSubscription/;
        index index.html index.htm index.nginx-debian.html sign-up.php;
        server_name ecommerce.fr ;
        location ~* \.php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
        access_log /var/log/nginx/access_ecommerce.fr.log;
        error_log /var/log/nginx/error_ecommerce.fr.log;
        location / {
        try_files $uri $uri/ =404;
}
}
sudo nginx -t
sudo systemctl reload nginx
  • Pour la partie ecommerce.uk :
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned_uk.key -out /etc/ssl/certs/nginx-selfsigned_uk.crt
sudo openssl dhparam -out /etc/ssl/certs/dhparam_uk.pem 2048
sudo nano /etc/nginx/conf.d/site_commerce.uk.conf
server {
        listen 443 http2 ssl;
        listen [::]:443 http2 ssl;
        ssl_certificate /etc/ssl/certs/nginx-selfsigned_uk.crt;
        ssl_certificate_key /etc/ssl/private/nginx-selfsigned_uk.key;
        ssl_dhparam /etc/ssl/certs/dhparam_uk.pem;
        root /var/www/ecommerce.uk/PricingSubscription/;
        index index.html index.htm index.nginx-debian.html sign-up.php;
        server_name ecommerce.uk ;
        location ~* \.php$ {
        fastcgi_pass unix:/run/php-fpm/www.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
        access_log /var/log/nginx/access_ecommerce.uk.log;
        error_log /var/log/nginx/error_ecommerce.uk.log;
        location / {
        try_files $uri $uri/ =404;
}
}
sudo nginx -t
sudo systemctl reload nginx
  • Lorsque l’on tente d’accéder au site, nous avons une alerte, faites « Paramètres avancés/Continuer vers le site ecommerce.uk (Dangereux) »
    o L’alerte est normale, depuis 2019, les navigateurs signalent les certificats « auto-signés »
  • Si on observe les détails du certificat
  • Pour être sûr du bon fonctionnement en HTTPS, on lance une petite analyse de trame via WireShark. De plus, en faisant le même exercice avec le formulaire, on remarque que les données sont chiffrées.
  • Avant de continuer, il faut que les 2 sites soient consultables via HTTPS et il est conseillé de faire une snapshot des machines virtuelles.

Redirection HTTP vers HTTPS

Cependant, si nous testons d’aller sur le site en http, cela fonctionne encore. Nous allons mettre en place pour nos utilisateurs, une redirection http vers HTTPS. Il faut pour cela ajouter une directive dans la partie serveur http : L’ensemble des requêtes http sont redirigés vers HTTPS.

sudo nano /etc/nginx/conf.d/site_commerce.uk.conf
return 301 https://$host$request_uri; #A ajouter dans le bloc server listen 80
sudo nginx -t
sudo systemctl reload nginx
  • Et on effectue de même avec le site ecommerce.fr
sudo nano /etc/nginx/conf.d/site_commerce.fr.conf
return 301 https://$host$request_uri; #A ajouter dans le bloc server listen 80
sudo nginx -t
sudo systemctl reload nginx
  • Le port HTTPS peut être ouvert, tandis que le port http peut être fermé
sudo firewall-cmd --remove-service=http && sudo firewall-cmd --add-service=https

firewall-cmd --list-service


Et on effectue la même chose sur WEB02

sudo ls /etc/nginx/

sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

sudo systemctl start nginx & sudo systemctl enable nginx
  • Test du serveur nginx dans le navigateur à l’adresse http://adresse_ip/
sudo mkdir -p /var/www/ecommerce.uk/
sudo cp -r /home/ldutour/PricingSubscription/ /var/www/ecommerce.uk/
sudo nano /etc/php-fpm.d/www.conf
sudo systemctl start php-fpm & sudo systemctl enable --now php-fpm
sudo nano /etc/nginx/conf.d/site_ecommerce.uk.conf

Déploiement du service de haute disponibilité WEB grâce à HAProxy

  • Installation du package HAProxy
sudo yum install haproxy -y
  • Copie du fichier de configuration avant toute modification
sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
  • Modifications des paramètres suivant pour ajouter nos serveurs :
    Bloc permettant d’activer la page de suivi du load-balancing :
defaults 
mode tcp 
listen stats bind *:8080 # Port d'écoute de l'interface de suivi 
mode http
stats enable
stats hide-version 
stats uri /stats # URL de l'interface de suivi 
stats admin if LOCALHOST 
stats auth haproxy:haproxy # Identifiants de connexion (utilisateur:mot de passe)

Bloc permettant de définir le serveur qui va rediriger les requêtes vers le bon serveur WEB :

frontend main
bind *:80 # Port sur lequel HAProxy écoute 
acl url_static path_beg /static /images /javascript /stylesheets 
acl url_static path_end .jpg .gif .png .css .js 
use_backend static if url_static 
default_backend app # Redirection vers le backend principal

Bloc permettant de définir nos serveurs selon le nom du backend :

backend app
    balance     roundrobin
    server      WEB02   192.168.1.166:443       ssl verify none check
    server      WEB01   192.168.1.234:443       ssl verify none check
  • Activation de Rsyslog
sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
sudo nano /etc/rsyslog.conf
  • Décommentez les lignes suivantes :
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
  • Configuration d’une policy pour SELinux car celui-ci surveille tout
sudo setsebool -P haproxy_connect_any 1
  • Démarrage de HAProxy et Rsyslog
sudo systemctl enable --now haproxy && sudo systemctl enable --now rsyslog
sudo systemctl reload haproxy
  • Ouverture du port 8080 dans le firewall
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

Depuis le HAProxy

  • Vérification dans un navigateur WEB, l’accès à la page d’administration

Mise en place d’un cluster de HAProxy

  • Dans le cadre de la haute disponibilité, il est recommandé de mettre en place un cluster de HAProxy. Ici, il aura les machines suivantes toutes sous RHEL :
    • WEB01
    • WEB02
    • HA01
    • HA02

Il faut que la résolution de noms soit fonctionnelle. Ceci peut-être testé avec curl.

Installation HAProxy Bis

  • Résolution des noms via le fichier /etc/hosts et vérification avec curl.
  • Ouverture du port 80 si nécessaire.
sudo yum install haproxy -y

sudo scp /etc/haproxy/haproxy.cfg ldutour@192.168.1.134:/home/ldutour

sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
sudo cp /home/ldutour/haproxy.cfg /etc/haproxy/

sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
sudo nano /etc/rsyslog.conf

sudo setsebool -P haproxy_connect_any 1

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/pki/tls/certs/haproxy.pem -out /etc/pki/tls/certs/haproxy.pem -days 365
sudo systemctl enable --now haproxy && sudo systemctl enable --now rsyslog
sudo systemctl reload haproxy

Installation de Pacemaker

  • Installation sur les deux proxy du module Pacemaker
sudo yum config-manager --set-enabled highavailability
  • Activer le module « highavailability » :
sudo yum config-manager --set-enabled highavailability
sudo dnf install pcs -y
sudo systemctl enable --now pcsd
  • Création du cluster avec configuration du mot de passe
sudo passwd hacluster
  • Gestion du firewall :
sudo firewall-cmd --add-service=high-availability --permanent
sudo firewall-cmd --reload
  • Authentification entre les HAProxy :
sudo pcs host auth HA01 HA02
  • Sur HA02 uniquement :
sudo pcs host auth HA01 HA02
  • Démarrage et activation du cluster :
sudo pcs cluster start --all
sudo pcs cluster enable --all
  • Vérifications :
sudo pcs cluster status
sudo pcs status corosync #Vérifie le statut du service de communication Corosync
pcs status nodes #Liste l’état des nœuds du cluster


–            Possibilité de vérifier les erreurs

sudo crm_verify -L -V


Erreurs concernant STONITH car celui-ci n’a pas été configuré voir à Configuration de STONITH

  • Vérification des versions
sudo pcs property


Configuration de STONITH

sudo pcs property set stonith-enabled=false
sudo pcs property set no-quorum-policy=ignore
sudo crm_verify -L -V

Configuration d’une VIP (Virtual IP)

sudo pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.1.135 cidr_netmask=24 op monitor interval=30s
sudo pcs status resources

Celle-ci a bien été configuré

sudo pcs status resources

Ressource de maintenance

Sur les deux serveurs :

  • Installation de l’agent HAProxy :
sudo curl -O https://raw.githubusercontent.com/thisismitch/cluster-agents/master/haproxy
sudo chmod +x haproxy
sudo mv haproxy /usr/lib/ocf/resource.d/heartbeat/
  • Création et intégration de la ressource :

Création du cluster

sudo pcs resource create haproxy ocf:heartbeat:haproxy binpath=/usr/sbin/haproxy conffile=/etc/haproxy/haproxy.cfg op monitor interval=10s

– Savoir quels agents sont disponibles sur le serveur

sudo pcs resource agents ocf:heartbeat
#Affectation de la ressource au cluster
sudo pcs resource group add HAproxyGroup virtual_ip haproxy
#Ajout d’une contrainte pour que l’IP virtuelle et le HAProxy soit opérationnel sur le même nœud en même temps
sudo pcs constraint order virtual_ip then haproxy
  • Vérification globale :
sudo pcs status
  • Logs de Corosync :
cd /var/log/cluster
ls
  • Vérification de la redirection via la VIP.

Vérification de la continuité de service du HAProxy

En effet, si l’un des serveurs est éteint, le second récupère la VIP pour réceptionner les requêtes.

Donc, dans le cadre d’un test, si on effectue une extinction du serveur HA01, le HA02 récupère la VIP comme on le voit ci-dessous.

Et si on regarde le statut, on peut voir que le service détecte comme OFFLINE, éteint le HA01.

Et si nous effectuons la même manœuvre avec l’extinction de HA02, le serveur HA01 récupère la VIP.

Et si on regarde le statut, on peut voir qu’il détecte comme OFFLINE le HA02.

Ainsi la vérification de la continuité de service informatique est effectuée.

Sources

Si cela vous intéresse, vous trouverez ci-dessous le compte-rendu de cette réalisation professionnelle :

🔒Se connecter pour accéder à la ressource

Classé sous :BTS SIO SISR, Gérer le patrimoine informatique, Réalisations académiques Balisé avec :En cours de formation

Mise en place d’un serveur de supervision : Zabbix

4 février 2025 by Lois Dutour

Introduction

Dans le cadre de l’épreuve E6, une infrastructure sécurisée et complète contenant différentes machines virtuelles avec différents systèmes d’exploitations (Windows, Rocky Linux) ainsi que des solutions d’infrastructures réseaux (routeur et commutateurs). Il est nécessaire de pouvoir suivre de manière centralisée les évènements sur chacun des clients.

Ainsi il est nécessaire :

  • Configurer les agents sur les clients
  • Installer les templates nécessaires à la supervision des services des différentes machines
  • Configurer les groupes
  • Configurer les comptes utilisateurs des administrateurs

Installation depuis l’appliance

Téléchargement de Zabbix

  • Téléchargement de la version VMWare 7.2 depuis le site suivant :
    Download Zabbix appliance
  • Décompression de la machine virtuelle
  • Ouverture via VMWare

Configuration globale

  • Se connecter sur la VM (root : zabbix)

⚠️La machine virtuelle est sous qwerty soit wqbbix en azerty ⚠️

Loadkeys fr
  • Vérification de la configuration de l’adresse IP de VM
ip a
  • Mise à jour de la machine virtuelle
dnf update -y
dnf upgrade -y
  • Changement du fuseau horaire et le passer en GMT +1
date
cp /usr/share/zoneinfo/Europe/Paris /etc/localtime
  • Installation des packs de langue nécessaires (ici : Français)
localectl
dnf search "langpacks*" | more
dnf install langpacks-fr.noarch
localectl set-keymap fr
localectl set-locale LANG=fr_FR.utf8
  • Chargement de la page de Zabbix Aller à l’adresse http://adresse_ip
  • Changement de la langue de l’interface Connexion avec Admin / zabbix → User settings → Profile → Language → Update

Gestion des utilisateurs et des groupes

Contexte : L’entreprise UpTech souhaite mettre en place la notification automatique selon le client.

Nom EntrepriseApplicationRéférent EntrepriseCliente
Entreprise1Entreprise1Web1Max HymômeYves Héron
Entreprise2Entreprise2Web1Marie TIMYves Héron
Entreprise2Entreprise2Web1Sarah FréchitYvan Dubois

Création des groupes et utilisateurs correspondants aux entreprises

Dans cette partie, il est attendu de créer une architecture permettant de donner des droits en lecture / écriture pertinent et évolutive. Voici une proposition d’implémentation et de gestion des droits.

Quelques mots de vocabulaire :

–        Hôte : est un actif (switch, routeur, serveur, …)
–        GP : Groupe
–        GP Hôte : Groupe d’hôte


Conseil : Créer les éléments qui n’ont pas de dépendance en premier, puis allez dans l’ordre de résolution ;

Indice : La notion de groupe / sous-groupe se gère par le fait de rajouter un slash (”/”), exemple : Entreprise1/GPHote/Application1 ;

GP User : Groupe d’utilisateur

  • Création des groupes d’hôtes : Collecte de données → Groupes d’hôtes → Créer un groupe d’hôtes
  • Création des hôtes : Collecte de données → Hôtes → Créer un hôte
  • Création des groupes utilisateurs : Utilisateurs → Groupes d’utilisateurs → Créer un groupe
  • Création des utilisateurs : Utilisateurs → Utilisateurs → Créer un utilisateur

Configuration des médias

Les médias représentent les supports de communication de Zabbix, l’application comporte plusieurs dizaines de média. Nous verrons la configuration de certains d’entre eux :
–        Email avec Office 365 ou Gmail
–        Teams, Discord
–        GLPI, PushOver (limitation à 7jr), OpsGenie (documentation non réalisée, limitation à 5 utilisateurs)

Accès via Alertes → Types de média

Email avec Gmail

–        Cliquer sur Créer un type de média et remplissez les informations comme ci-joint dans la capture d’écran

⚠️Gmail applique désormais un protocole de sécurité pour la connexion des applications vers ses  services, suivre les informations dans la cartouche suivante⚠_️_

o   Se connecter sur via le lien suivant : Compte Google

o   Ajouter une application et récupérer le mot de passe


Compte Google – Mots de passe d’application
⚠️Attention, dans la partie « Mot de passe » il faut inscrire le mot de passe d’application créé dans Gmail ⚠️



Test :

Notification sur Teams

Au sein d’un équipe Teams, créer plusieurs channels (Entreprise1, Entreprise2 et Uptech), et faites en sorte que les alertes arrivent sur les canaux adaptés aux services en panne.

  • Pour configurer le webhook de MS Teams Workflow, il faut se rendre dans la barre de raccourcis verticale à gauche et rechercher les trois points des applications supplémentaires et rechercher l’application Workflow et l’ouvrir.
  • Dans l’application Workflow, dans l’angle supérieur droit, cliquer sur « Nouveau flux »


  • Dans la barre de recherche, entrez le mot « channel » et dans les résultats de la recherche, sélectionner « Publier sur un canal lors de la réception d’une demande de webhook »
  • Nommer votre Workflow, ici ce sera « Zabbic webhook ». Puis sélectionner l’utilisateur approprié dans le menu « Se connecter » puis sur « Suivant »
  • Sélectionner l’équipe MS Teams et le canal appropriés où les événements Zabbix seront publiés, puis « Créer un flux »
  • Copier l’URL du endpoint du workflow et l’enregistrer
  • On le retrouve afficher dans la liste des flux

Dans l’interface du serveur Zabbix aller dans « Administration à Macros » puis remplissez comme ci-dessous avec l’adresse IP ou le nom de domaine de votre serveur Zabbix

  • Dans « Administration Types de média », on peut importer le fichier type de média de MS Teams Workflow.
  • Et on effectue un test

Intégration des hôtes : Connecter l’infrastructure à Zabbix

L’intégration des hôtes permet un suivi détaillé des machines sur lesquelles sont installés les agents et obtenir par exemple une carte de suivi comme celle-ci :

Installation de l’agent

  • Installation et démarrage du service SSHD
sudo dnf install openssh-server -y
sudo systemctl enable --now sshd
  • Ajout d’un utilisateur
sudo adduser rocky
sudo passwd rocky
  • Ajout du référentiel (dépôt) de Zabbix et installation de zabbix-agent
dnf install -y https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-agent2-6.0.7-1.el9.x86_64.rpm
dnf update -y
dnf install -y zabbix-agent2

⚠️ Adapter l’URL et le fichier à la version ⚠️

  • Ajout d’une ouverture sur le firewall
sudo firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --reload
  • Ajout autorisation SELinux d’accéder au réseau
setsebool -P zabbix_can_network=1
  • Modification du fichier de configuration de l’agent Zabbix et adapter les lignes suivantes
sudo nano /etc/zabbix/zabbix_agent2.conf

Contenu à modifier :

Server=192.168.1.                 # IP du serveur Zabbix autorisé
ListenPort=10050                 # Port d'écoute de l'agent
ListenIP=192.168.133.187         # IP(s) sur lesquelles l’agent écoute
ServerActive=192.168.133.132:10051   # IP:port du serveur Zabbix pour vérifications actives
Hostname=DebianClient1
AllowKey=system.run[*]           # Autoriser les commandes à distance (à filtrer)
  • Redémarrage du service
sudo systemctl enable --now zabbix-agent2
sudo systemctl restart zabbix-agent2
  • Vérification du statut du service
sudo systemctl status zabbix-agent2

Ajout de l’hôte dans le serveur Zabbix

  • Accéder au menu « Collecte de données → Hôtes », cliquer sur « Créer un hôte » puis renseigner les informations de votre hôte.

Chiffrement des communications (TLS)

  • Génération d’une clef PSK
openssl rand -hex 32 > /etc/zabbix/secret.psk
  • Affichage de la clef PSK
cat /etc/zabbix/secret.psk
  • Trouver le nom de l’utilisateur zabbix
cat /etc/passwd | grep zabbix
  • Modification du propriétaire du fichier contenant la clef
chown zabbix:zabbix /etc/zabbix/secret.psk
  • Modification des droits sur le fichier contenant la clef
chmod 640 /etc/zabbix/secret.psk
  • Modification du fichier de configuration pour la prise en compte de la clef
nano /etc/zabbix/zabbix_agent2.conf

Ajouter ou modifier :

TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=SRVWEB
TLSPSKFile=/etc/zabbix/secret.psk

  • Redémarrage du service zabbix-agent2 et vérification du statut
systemctl restart zabbix-agent2
systemctl status zabbix-agent2
  • Sur le serveur Zabbix : aller dans Collecte de données → Hôtes → Nom_de_l’hôte (ici SRVWEB) → Chiffrement et remplir selon les valeurs précédemment définies.

⚠️ Image non contractuelle, adapter l’identité PSK et la PSK en fonction des étapes précédentes ⚠️

Gestion des services supplémentaires

Contexte

L’entreprise souhaite que l’on surveille les serveurs de l’entreprise avec le schéma suivant :

Surveiller les services systèmes et réseaux

Pour surveiller les constantes systèmes CPU, RAM, disque, il vous suffit de rajouter les templates Zabbix selon votre système d’exploitation « Linux by Zabbix agent » ou « Windows by Zabbix agent ».

  • Accéder à l’hôte et ajout d’un modèle fait plus tôt
  • Procédure pour surveiller le CPU et surveiller les cartes réseaux

Aller dans « Collecte de données à Hôtes » puis aller dans « Eléments » de l’hôte voulu.

Ainsi on peut observer que grâce au modèle « Linux by Zabbix agent » surveille déjà les constantes de réseaux et CPU.

Créer un modèle pour monitorer la partie systèmes, réseaux et services

Dans la catégorie modèle, vous pouvez créer nos propres modèles, afin de gagner du temps dans la sélection des templates, implémenter un template permettant de monitorer l’intégralité de la partie système, réseau et apache par exemple.

  • Aller dans « Modèle à Créer un modèle »

Surveiller un service système classique

Dans le cadre de la surveillance d’un service classique, on peut ajouter les modèles SSH Service, Apache by Zabbix Agent et MySQL by Zabbix agent 2.

Le modèles SSH Service n’est pas implémenté de base, nous allons donc l’importer avec la procédure suivante :

  • Aller dans « Collecte de données à Modèles à Importer » et importer le modèle téléchargé sur le site suivant : Marketplace Zabbix

Monitorer un service, actif or not

Pour monitorer un service actif ou non, se rendre sur « Collecte de données à Hôtes à Eléments (d’un hôte) à Créer un item » et remplir comme ci-dessous.

Monitorer un port

Avec la même procédure que précédemment nous allons créer un item et saisir comme ci-dessous :

D’un côté on monitore le port tandis que de l’autre côté, on monitore le service qui est sur le port.

Monitorer le nombre de ligne dans un fichier de log

  • Mettre les bons droits dans les répertoires et fichiers (droit en exécution/lecture)
  • Dans le fichier /etc/zabbix/zabbix_agentd.conf avoir la ligne AllowKey=system.run[*] (Autoriser l’envoi de commande à distance)

Monitorer des services complémentaires

Dans le cadre d’un réseau comprenant un serveur WEB, un serveur AD-DHCP-DNS et un switch VYOS. Nous allons monitorer ces équipements sachant que la procédure pour le serveur WEB a été expliqué plus tôt. Nous allons ainsi faire de même pour un serveur Windows 2022 AD-DHCP-DNS et un routeur VYOS.

Serveur Windows 2022 AD-DHCP-DNS

On récupère et on installe l’agent Zabbix depuis le lien suivant.

Lors de l’installation, on rentre les informations nécessaires de notre serveur (IP et Port).

On peut vérifier l’exécution du service avec « services.msc »

Après avoir effectué la configuration Zabbix Agent 2, on effectue les configurations nécessaires sur le serveur Zabbix. On ajoute l’hôte ainsi que les modèles pour ce que le souhaite monitorer. Et l’on peut trouver le modèle pour monitorer le serveur AD sur Zabbix.

Et cela fonctionne !

Par exemple, nous pouvons voir l’état des disques ou encore la carte réseau.

Ou encore l’état du CPU :

Et on peut voir que le service SSH est en fonctionnement sur le serveur SRVADDNSDCHP

Routeur

De manière générique (En cours de modification)

Dans le cadre du monitoring d’un routeur, nous utiliserons un routeur VYOS. Tout d’abord, sur le routeur, on repère l’adresse IP de l’interface qui est incluse dans le réseau.

  • Définition des hôtes autorisés
    • Ici, on va définir le réseau entier
set service snmp community routers network 192.168.1.0/24

Et si l’on doit définir des adresses spécifiques

set service snmp community routers client 192.168.1.46
  • De plus, on peut configurer des informations du routeur, par exemple

Emplacement

set service snmp location "Mon ordi"

Contact

set service snmp contact "je_suis_le_mail@domain.com"
  • Configuration des traps (Optionnel)
    • Définition d’une cible pour les traps (Mettre l’adresse de son serveur Zabbix)
set service snmp trap-target 192.168.1.46
  • Enregistrement des modifications
commit

Depuis le serveur Zabbix, on crée un hôte avec les informations suivantes en allant dans « Collecte de données > Hôtes > Créer un hôte ».

Page support de Vyos pour SNMPv2 : ici

Le modèle de monitoring de Vyos : ici

La supervision du routeur est fonctionnelle :

De plus avec le modèle de monitoring Vyos, celui-ci supervise autant la RAM, que le CPU que l’état des interfaces réseaux :

Cependant, il existe un agent Zabbix pour Vyos.

Création d’une carte

Puis aller en haut à droite sur « Editer la carte » pour modifier la carte.

Pour ajouter un élément aller sur « Elément de carte : Ajouter » et sur « Hôte », on peut lier cet élément à un hôte de notre monitoring.

Il existe la possibilité de créer une carte de l’infrastructure dans l’onglet « Surveillance à Cartes ».

Et en sélectionnant deux éléments, vous pouvez les lier.

Déclencheurs

Dans « Alerte > Actions > Actions de déclencheur », on va ajouter un déclencheur dans le cadre où le SRVADDNSDHCP ne fonctionnerai plus.

De plus, il y a possibilité d’envoyer un message aux usagers, techniciens ou administrateurs concernés.

Contexte de l’épreuve E6

Dans le cadre du contexte E6, la supervision permet d’obtenir une carte de supervision pour une meilleur visualisation

Et ainsi effectuer les suivants et être prévenue.

Test sur un switch Cisco

Zabbix détecte que le câble RJ45 du port GE1/0/4 du commutateur DYONISOS a été débranché. Les données sont les suivantes :

  • 2 : Le câble est branché
  • 1 : Le câble est débranché

De plus une alerte est aussi visible sur l’hôte :

Test sur un serveur Web sous Rocky Linux

Pour le test de supervision d’un service SSHD sur le serveur THALES (WikiJS sous Rocky Linux), le service SSHD a été éteint :

Ainsi sur la carte de supervision prévient de toutes interruptions :

*Sachant que HERMES et HERACLES sont éteints

Et lorsque le service est relancé :

Sources

Si cela vous intéresse, vous trouverez ci-dessous le compte-rendu de cette réalisation professionnelle :

🔒Se connecter pour accéder à la ressource

Classé sous :Gérer le patrimoine informatique, Mettre à disposition des utilisateurs un service informatique, Répondre aux incidents et aux demandes d’assistance et d’évolution, Travailler en mode projet Balisé avec :En cours de formation

Footer

Articles récents

  • Veille technologique active : Mise en place et suivi de flux RSS et forums techniques dédiés
  • Formations professionnelles
  • Veille proactive des vulnérabilités : Mise en place d’OpenCVE

Copyright © 2025 · Se connecter

Gérer le consentement
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
Fonctionnel Toujours activé
L’accès ou le stockage technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
L’accès ou le stockage technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’internaute.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques. Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
L’accès ou le stockage technique est nécessaire pour créer des profils d’internautes afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.
Gérer les options Gérer les services Gérer {vendor_count} fournisseurs En savoir plus sur ces finalités
Voir les préférences
{title} {title} {title}