Crée un serveur GLPI sous Debian 13 avec Hyper-V

Crée un serveur GLPI sous Debian 13 avec Hyper-V

Introduction

Dans le cadre de ma formation TSSR, j’ai été amené à mettre en place un serveur GLPI sous Debian afin de simuler un centre d’appels.
Vous trouverez ci-dessous l’intégralité des étapes que j’ai mises en œuvre pour obtenir un serveur GLPI fonctionnel, depuis la création de la machine virtuelle jusqu’à la connexion à l’interface de GLPI.
La partie concernant l’installation de GLPI proprement dite a été reprise du site IT-Connect, à laquelle j’ai apporté quelques modifications, notamment sur la version de PHP-FPM et sur le script de sécurisation de MariaDB.


Pré Requis

Création du commutateur virtuel

Pour pouvoir accéder à Internet et permettre aux autres machines du LAN de communiquer avec GLPI, nous devons créer un commutateur externe.


Celui-ci permettra à notre machine virtuelle d’utiliser directement la carte réseau physique de l’hôte, d’obtenir une adresse IP sur le réseau local et d’être accessible par toutes les autres machines.


On lance Hyper-V, puis on clique sur Gestionnaire de commutateur virtuel.

On sélectionne le type de commutateur Externe, puis on clique sur Créer le commutateur virtuel.

Le gestionnaire de commutateur virtuel.

On donne ensuite un nom à notre commutateur virtuel, on vérifie que le commutateur sélectionné est bien Externe et on laisse la case cochée.

Propriétés du commutateur virtuel

Si une pop-up d’avertissement s’affiche, cliquez sur Oui.

Avertissement

Création de la VM sur Hyper-V

Dans Hyper-V, nous allons cliquer sur Nouveau, puis sur Ordinateur virtuel.

Hyper-V

On donne un nom à notre machine virtuelle, on sélectionne le dossier dans lequel notre VM sera stockée, puis on clique sur Suivant.

Dans cet exemple, je nomme ma machine virtuelle SRV-GLPI-01 et je stock la configuration ainsi que le disque dur de ma VM dans C:\Hyper-V\ .

On laisse la génération de la machine virtuelle sur Génération 2, Debian 13 étant pleinement compatible avec le démarrage sécurisé.

Je sélectionne Génération 2, puis je clique sur Suivant.

On choisit la quantité de mémoire vive à attribuer à notre machine virtuelle, on décoche l’utilisation de la mémoire dynamique, puis on clique sur Suivant.

J’affecte 2048 Mo de mémoire vive à ma machine virtuelle, ce qui sera amplement suffisant pour mon usage, et je désactive la mémoire dynamique pour cet ordinateur virtuel.

L’assistant nous demande alors de configurer la mise en réseau. Nous sélectionnons donc le commutateur virtuel créé précédemment.

Configuration du réseau de la machine virtuelle.

On laisse l’option Créer un disque dur virtuel. On garde également le nom par défaut et on vérifie que le fichier du disque dur virtuel soit bien stocké dans le dossier Virtual Hard Disks de notre machine virtuelle. On lui attribue 60 Go de stockage. Il est possible d’en attribuer moins si vous êtes limité par les ressources de votre machine.

Configuration du disque dur virtuel.

Il nous faut ensuite sélectionner Installer un système d’exploitation à partir d’un CD/DVD-ROM de démarrage, puis Fichier image (.iso), et enfin cliquer sur Parcourir... pour choisir l’ISO de Debian 13 que nous avons téléchargé au préalable.

Sélection de l'ISO de Debian 13.

L’assistant nous résume les options que nous avons choisies précédemment. On clique sur Terminer.

Avant de démarrer notre machine virtuelle, nous allons devoir effectuer une opération sur le démarrage sécurisé de celle-ci.

On effectue donc un clic droit sur notre machine virtuelle fraîchement créée, puis on clique sur Paramètres.

Une fois dans les paramètres de notre machine virtuelle, on sélectionne Sécurité située sur la gauche, puis dans la partie Démarrage sécurisé, on change le modèle pour le placer sur Autorité de certification UEFI Microsoft. On valide ensuite en cliquant sur Appliquer, puis sur OK.

De retour sur la liste des machines virtuelles, on double-clique sur notre VM, puis on peut enfin la démarrer en cliquant sur le bouton Démarrer.

Installation de Debian 13

Nous allons effectuer une installation avec interface graphique, donc on sélectionne avec le clavier Graphical install, puis on appuie sur la touche Entrée.

On sélectionne notre langue, puis on valide avec Continue.

Écran de sélection de la langue de Debian 13.

On clique sur France, puis on sélectionne Continuer.

On laisse le clavier en Français, puis on clique sur Continuer.

Écran de sélection du clavier de Debian 13.

On donne maintenant un nom à notre machine, puis on poursuit avec Continuer.

On laisse le domaine vide, puis on clique sur Continuer.

Ici, nous allons saisir le mot de passe du « superutilisateur ». Ce mot de passe est à conserver précieusement.

Saisie du mot de passe « root ».

Le programme d’installation de Debian nous demande alors de créer un autre utilisateur, différent du superutilisateur (« root »).

Nous allons créer un utilisateur que nous nommerons « administrateur ».

Saisie du nom du nouvel utilisateur.

Le programme d’installation nous demande maintenant l’identifiant (login) de notre utilisateur administrateur. On laisse la valeur proposée, puis on clique sur Continuer.

Saisie du login pour l’utilisateur administrateur.

On saisit maintenant le mot de passe de notre utilisateur administrateur. Ce mot de passe est à conserver précieusement.

Saisie du mot de passe de l’utilisateur administrateur.

On laisse le partitionnement par défaut, puis on valide avec Continuer.

Écran de sélection du mode de partitionnement.

On choisit notre disque virtuel précédemment créé, puis on continue l’installation.

Écran de sélection des disques à partitionner.

On laisse tout dans une seule partition, puis on continue.

On sélectionne Terminer le partitionnement et appliquer les changements, puis on clique sur Continuer.

On choisit d’appliquer les changements, puis on continue.

Écran récapitulatif de la création des partitions.

On refuse l’analyse d’autres supports d’installation.

On sélectionne France, puis on continue.

On choisit deb.debian.org, puis on continue.

On laisse le serveur mandataire vide, puis on poursuit avec Continuer.

On laisse la collecte des informations sur l’utilisation des paquets sur Non, puis on continue.

On désactive l’environnement de bureau Debian et GNOME, puis on clique sur Continuer.

L’installation est maintenant terminée, nous pouvons redémarrer la machine en cliquant sur Continuer.

Au premier login, nous utiliserons le compte administrateur créé pendant l’installation avec son mot de passe associé.

Post-Installation

Configuration de l’administrateur

Pour respecter les bonnes pratiques d’administration, on n’utilisera pas le compte root au quotidien. On installe donc sudo et on ajoute l’utilisateur « administrateur » au groupe sudo afin de déléguer les privilèges d’administration de manière contrôlée.

su -

Passage en « root ».

apt update && apt upgrade -y

Mise à jour et installation des paquets.

apt install sudo -y

Installation de « sudo ».

usermod -aG sudo administrateur

Ajout de l’utilisateur au groupe sudo.

exit # Déconnexion de "root"
exit # Déconnexion de "administrateur"
🔴
Pour que la modification des droits obtenus par « administrateur » prenne effet, il faut se reconnecter à la session « administrateur ».

Sur l’écran de login, saisissez le login « administrateur » ainsi que son mot de passe associé, précédemment défini.

Configuration de l’IP Fixe du serveur

On va configurer une adresse IP statique afin de garantir que le serveur reste joignable de façon stable sur le réseau et puisse assurer correctement son rôle dans l’infrastructure.

🔴
Désormais, nous utiliserons la commande sudo devant chacune de nos commandes ayant un impact sur le système. Cela permet d’exécuter la commande avec les droits d’administration (root).
sudo nano /etc/network/interfaces

On édite le fichier /etc/network/interfaces.

iface eth0 inet static
    address 192.168.x.x
    netmask 255.255.255.0
    gateway 192.168.x.x
    dns-nameservers 1.1.1.1 8.8.8.8

Ajustez le bloc avec l’adresse IP et l’adresse de passerelle correspondant à votre réseau. Enregistrez votre fichier avec la combinaison de touches Ctrl+O, puis Entrée, et fermez-le avec Ctrl+X.

sudo systemctl restart networking

On redémarre les services réseau pour que nos modifications prennent effet.

On peut maintenant vérifier que notre serveur dispose de la bonne adresse avec la commande :

ip a

Un ping vers google.fr nous confirme que la connectivité de notre serveur est opérationnelle.

ping google.fr

Configuration de SSH

On installe le service SSH pour permettre la prise en main à distance du serveur. Cela nous permettra d’administrer notre serveur avec des outils plus adaptés, tels que MobaXterm.


Dans une logique de sécurité, on désactive la connexion directe au compte root et on limite l’accès aux utilisateurs disposant de droits sudo.

On commence par installer le serveur SSH.

sudo apt install openssh-server

On va ensuite éditer le fichier sshd_config.

sudo nano /etc/ssh/sshd_config

Il faut maintenant chercher la ligne :

#PermitRootLogin yes

La « décommenter » (retirer le caractère # devant la commande) et placer la valeur sur « no ».

Ce qui nous donne :

PermitRootLogin no

On procède de la même manière pour la ligne :

#PasswordAuthentification yes

Qu’on vient simplement « décommenter » sans toucher à sa valeur.

On enregistre notre fichier avec la combinaison de touches Ctrl+O, puis Entrée, et on le ferme avec Ctrl+X.

sudo systemctl enable ssh

Active SSH au démarrage du système.

sudo systemctl start ssh

Lance immédiatement le service SSH.


Installation du Pare-Feu

Bien que GLPI n’ait vocation à être accessible que depuis le LAN, nous allons renforcer la sécurité du serveur en installant UFW, en n’autorisant que les ports nécessaires et en bloquant par défaut toutes les autres connexions entrantes.


Pour commencer, nous allons procéder à l’installation de UFW.

sudo apt install ufw -y

Une fois cela effectué, nous allons définir nos règles de pare-feu.

sudo ufw allow OpenSSH

On autorise OpenSSH pour la prise en main à distance.

sudo ufw allow 80

On autorise le port HTTP (80).

sudo ufw allow 443

On autorise le port HTTPS (443).

sudo ufw default deny incoming

On bloque le reste du trafic entrant.

sudo ufw default allow outgoing

On autorise le trafic sortant.

sudo ufw enable

On active le pare-feu

Nous pouvons maintenant contrôler notre pare-feu avec la commande :

sudo ufw status

Utilisation de MobaXterm

Pour la suite du tutoriel, nous allons utiliser le logiciel MobaXterm, qui nous facilitera le copier-coller des fichiers de configuration.

On lance MobaXterm, puis on clique sur Session en haut à gauche.

On clique ensuite sur SSH, puis on remplit le champ Remote host avec l’adresse IP fixe de notre serveur GLPI.
On coche également la case Specify username, on entre le login de notre administrateur, puis on termine par OK.

Un nouvel onglet apparaît alors dans MobaXterm, nous demandant le mot de passe de l’utilisateur administrateur.
On le saisit, puis on valide avec Entrée.

Une fenêtre nous demande si nous souhaitons conserver le mot de passe.
On répond Yes.

Fenêtre de confirmation d’ajout du mot de passe à MobaXterm.

Nous voici alors sur le Shell de notre serveur en SSH.

Shell du serveur GLPI

Installation de GLPI

Installation de LAMP

sudo apt update && sudo apt upgrade

Mise à jour et installation des paquets.

sudo apt-get install apache2 php mariadb-server

On installe Apache, PHP et MariaDB. On confirme l’installation en appuyant sur Entrée (O par défaut).

sudo apt-get install php-xml php-common php-json php-mysql php-mbstring php-curl php-gd php-intl php-zip php-bz2 php-apcu

On installe les dépendances nécessaires. On confirme l’installation en appuyant sur Entrée (O par défaut).

Sécurisation de MariaDB

Une fois l’installation terminée, on va sécuriser notre base de données en exécutant le script suivant :

sudo mariadb-secure-installation

mysql-secure-installation est un script fourni avec MariaDB/MySQL pour renforcer la sécurité de l’installation par défaut.

Le script pose une série de questions auxquelles il faut répondre Y (Yes) ou N (No).

Switch to unix_socket authentication [Y/n] n

Garder le mot de passe root classique.

Change the root password? [Y/n] y

Définir un nouveau mot de passe root. C’est ici que vous devez définir le mot de passe root de la base de données. Veillez à le conserver précieusement.

Remove anonymous users? [Y/n] y

Supprimer les comptes sans identifiant défini.

Disallow root login remotely? [Y/n] y

Bloquer l’accès root depuis l’extérieur.

Remove test database and access to it? [Y/n] y

Supprimer la base de données "test", inutile et non sécurisée.

Reload privilege tables now? [Y/n] y

Appliquer immédiatement les nouveaux paramètres.

Une fois le script terminé, nous allons nous connecter à la base de données afin d’y créer l’utilisateur « glpi ».

Création de la base de donnée

sudo mysql -u root -p

On se connecte à la base de données avec le compte root et le mot de passe que l’on a défini précédemment dans le script.

CREATE DATABASE glpi;
GRANT ALL PRIVILEGES ON glpi.* TO glpi@localhost IDENTIFIED BY "MotdePasseUserGLPI";
FLUSH PRIVILEGES;
EXIT

On crée une table nommée « glpi » et on attribue tous les droits sur cette table à l’utilisateur « glpi ». Attention à bien remplacer MotdePasseUserGLPI par votre mot de passe.

Téléchargement de GLPI

cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/10.0.20/glpi-10.0.20.tgz

On se place dans le dossier /tmp et on télécharge la version 10.0.20 de GLPI.

sudo tar -xzvf glpi-10.0.20.tgz -C /var/www/

On décompresse l’archive dans le dossier /var/www.

sudo chown www-data /var/www/glpi/ -R

On modifie la propriété du dossier /var/www/glpi/ pour l’attribuer à l’utilisateur web www-data.

Création des dossiers de GLPI

sudo mkdir /etc/glpi

On crée un dossier de configuration pour GLPI.

sudo chown www-data /etc/glpi/

On modifie la propriété du dossier /etc/glpi/ pour l’attribuer à l’utilisateur web www-data.

sudo mv /var/www/glpi/config /etc/glpi

On déplace le dossier config de GLPI vers /etc/glpi.

sudo mkdir /var/lib/glpi

On crée un dossier pour les données de GLPI.

sudo chown www-data /var/lib/glpi/

On modifie la propriété du dossier /var/lib/glpi/ pour l’attribuer à www-data.

sudo mv /var/www/glpi/files /var/lib/glpi

On déplace le dossier files de GLPI vers /var/lib/glpi.

Création du dossier pour les logs de GLPI

sudo mkdir /var/log/glpi

On crée le dossier pour les journaux de GLPI.

sudo chown www-data /var/log/glpi

On modifie la propriété du dossier des logs GLPI pour l’attribuer à l’utilisateur www-data.

Création des fichiers de configurations

sudo nano /var/www/glpi/inc/downstream.php

On crée le fichier downstream.php.

<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/');
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
    require_once GLPI_CONFIG_DIR . '/local_define.php';
}

On colle ce code dans le fichier que nous venons de créer. On enregistre avec Ctrl+O, puis Entrée, et on quitte avec Ctrl+X.

sudo nano /etc/glpi/local_define.php

On crée le fichier de configuration local_define.php. Il permet d’indiquer à GLPI les emplacements personnalisés des dossiers : GLPI_VAR_DIR et GLPI_LOG_DIR

<?php
// Définition des chemins personnalisés pour les données et les logs de GLPI
define('GLPI_VAR_DIR', '/var/lib/glpi/files');
define('GLPI_LOG_DIR', '/var/log/glpi');

On colle le code dans le fichier que nous venons de créer. On enregistre avec Ctrl+O, puis Entrée, et on quitte avec Ctrl+X.

Configuration d'Apache

Un VirtualHost sous Apache est une configuration qui permet d’héberger plusieurs sites web (avec des noms de domaine ou des adresses IP différentes) sur un même serveur Apache.

Nous allons donc créer un fichier de configuration VirtualHost pour l’hébergement de notre GLPI.

sudo nano /etc/apache2/sites-available/support.damort.lab.conf

Ce qui devrai donner ceci :

<VirtualHost *:80>
    ServerName support.damort.lab

    DocumentRoot /var/www/glpi/public

    # If you want to place GLPI in a subfolder of your site (e.g. your virtual host is serving multiple applications),
    # you can use an Alias directive. If you do this, the DocumentRoot directive MUST NOT target the GLPI directory itself.
    # Alias "/glpi" "/var/www/glpi/public"

    <Directory /var/www/glpi/public>
        Require all granted

        RewriteEngine On

        # Redirect all requests to GLPI router, unless file exists.
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </Directory>
</VirtualHost>

Une fois nos modifications effectuées on enregistre notre fichier avec ctrl+o et on le ferme avec ctrl+x

sudo a2ensite support.damort.lab.conf

On active le site Apache support.damort.lab.conf.

sudo a2dissite 000-default.conf

On désactive le site Apache par défaut.

sudo a2enmod rewrite

On active le module rewrite d’Apache, qui permet de réécrire les URL.

sudo systemctl restart apache2

On redémarre le service Apache pour appliquer les changements.

Installation de PHP-FDM

sudo apt install php-fpm

On installe PHP-FPM, le gestionnaire de processus PHP.

sudo a2enmod proxy_fcgi setenvif

On active les modules proxy_fcgi et setenvif d’Apache, nécessaires pour l’utilisation de PHP-FPM.

sudo a2enconf php8.4-fpm

On active la configuration Apache pour PHP-FPM.

sudo systemctl reload apache2

On recharge Apache sans l’arrêter pour appliquer les changements.

sudo nano /etc/php/8.4/fpm/php.ini

On ouvre le fichier de configuration PHP-FPM pour édition.

Il faut maintenant rechercher la valeur (Ctrl+F) session.cookie_httponly et la passer sur on. Cela rend le cookie PHP accessible uniquement côté serveur.
On enregistre le fichier avec Ctrl+O et on le ferme avec Ctrl+X.
On redémarre ensuite le service PHP-FPM.

sudo systemctl restart php8.4-fpm.service

L'étape finale est de préciser à Apache que c'est le moteur PHP-FPM qui devra être utilisé. On retourne donc sur notre virtualhost créé précédemment pour le lui indiquer.

sudo nano /etc/apache2/sites-available/support.damort.lab.conf

On vient ensuite placer ce code entre les deux balises VirtualHost :

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost/"
</FilesMatch>

Ce qui donne ceci :

Il ne nous reste plus qu'à redémarrer une dernière fois Apache avec la commande :

sudo systemctl restart apache2

🎉
Notre GLPI est désormais accessible sur http://support.damort.lab !Notre **GLPI** est désormais accessible sur **http://support.damort.lab !**

Si vous ne disposez pas de serveur DNS et que vous souhaitez résoudre un nom de domaine localement, alors vous devez modifier votre fichier hosts pour accéder au site.

Configuration de GLPI

Une fois arrivé sur notre GLPI, on sélectionne Français et on clique sur OK.

On valide la licence en cliquant sur Continuer.

Notre GLPI étant une première installation, on clique sur Installer.

Après avoir vérifié que tous les pré-requis de GLPI sont satisfaits pour l'installation, on clique sur Continuer.

GLPI nous demande alors de renseigner les identifiants de connexion à la base de données définie lors de la création de l'utilisateur GLPI dans la base de données.

On indique l’emplacement du serveur de base de données. Comme la base est sur la même machine que GLPI, on renseigne localhost. Ensuite, on saisit l’utilisateur créé précédemment ainsi que son mot de passe associé.

On sélectionne ensuite notre base de données GLPI et on clique sur Continuer.

Un message de confirmation nous indique que la base a bien été installée. On poursuit avec Continuer.

On choisit d’envoyer les "statistiques d'usage" ou non à la société GLPI.

Enfin, une avant-dernière étape où on prend connaissance du message et on clique sur Continuer.

L'installation est enfin terminée et GLPI nous communique les mots de passe par défaut. On les enregistre et on clique sur Utiliser GLPI.


Première connexion à GLPI avec les identifiants de l’administrateur.
Écran d’accueil de GLPI

Il ne nous reste plus qu’à supprimer du serveur le fichier install.php, qui pourrait relancer l’installation et ainsi perturber le fonctionnement de GLPI.

sudo rm /var/www/glpi/install/install.php

Conclusion

L’installation et la configuration de GLPI sont maintenant terminées. Votre serveur est prêt à gérer les tickets, les inventaires et l’administration de votre infrastructure. Pensez à maintenir GLPI et vos dépendances (Apache, PHP, MariaDB) à jour, et à réaliser régulièrement des sauvegardes de la base de données et des fichiers pour garantir la sécurité et la pérennité de votre plateforme.