Chapitre 1416 minIntermédiaire
Exploiter et sécuriser GLPI : cron, sauvegardes, mises à jour
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- faire tourner et surveiller les actions automatiques ;
- sauvegarder et restaurer une instance complète ;
- mettre à jour GLPI sans perte de données ;
- sécuriser une instance et ses intégrations ;
- appliquer le RGPD aux données de GLPI.
4 exercices corrigés
Exploiter GLPI au quotidien, c'est s'assurer que ses tâches automatiques tournent, que sa base et ses fichiers sont sauvegardés et restaurables, que l'application et ses plugins sont à jour, et que l'instance est protégée, puisqu'elle contient la carte complète du système d'information et des données personnelles. Ce chapitre rassemble les gestes d'administration : actions automatiques, sauvegarde et restauration, mise à jour de GLPI 11 vers 12, plugins, sécurité, journaux et conformité au RGPD.
Les actions automatiques et le cron
Beaucoup de fonctions de GLPI ne se déclenchent pas quand un utilisateur clique, mais à intervalles réguliers : ce sont les actions automatiques (Configuration > Actions automatiques). Chacune a une fréquence, un statut (active ou non), un mode d'exécution et une plage horaire.
- En mode GLPI, l'action est lancée de temps en temps quand des utilisateurs naviguent dans l'interface : la nuit ou le week-end, rien ne se passe.
- En mode CLI, l'action est lancée par une tâche planifiée du système, qui appelle
front/cron.php. C'est le mode recommandé.
# crontab de l'utilisateur du serveur web : sudo crontab -u www-data -e
* * * * * /usr/bin/php /var/www/glpi/front/cron.php
# forcer une action précise, par exemple la relève des courriels
sudo -u www-data php /var/www/glpi/front/cron.php --force mailgate
Les actions à connaître :
| Action | Rôle | Si elle ne tourne pas |
|---|---|---|
queuednotification | Envoie les courriels en file d'attente | Aucune notification ne part |
mailgate | Relève les boîtes des collecteurs | Les courriels au support ne deviennent pas des tickets |
slaticket, olaticket | Escalades et rappels des SLA et des OLA | Pas d'escalade, pas de rappel |
closeticket | Clôture automatique des tickets résolus | Les tickets restent « Résolu » indéfiniment |
createinquest | Crée les enquêtes de satisfaction | Pas d'enquête |
RecurrentItems | Crée les tickets et changements récurrents | La maintenance préventive n'est pas déclenchée |
contract, infocom, software, certificate | Alertes de fin de contrat, de garantie, de licence, de certificat | Les échéances passent sans prévenir |
Cleanoldagents | Traite les agents qui ne contactent plus le serveur | Les postes disparus restent « En service » |
queuedwebhook | Envoie les webhooks en file d'attente | Les outils externes ne sont pas prévenus |
savedsearchesalerts | Exécute les alertes des recherches sauvegardées | Les contrôles réguliers ne préviennent personne |
session, purgesessionhistory | Nettoie les sessions expirées et l'historique des connexions | La base grossit, les données de connexion sont gardées trop longtemps |
watcher | Surveille les autres actions automatiques | Une action bloquée passe inaperçue |
Depuis GLPI 12, une action qui échoue cinq fois de suite passe au statut Erreur et demande une intervention ; une action interrompue de l'extérieur passe au statut Interrompue et sera relancée. La colonne « dernière exécution » et l'onglet des journaux de chaque action sont les premières choses à regarder quand « GLPI ne fait plus » quelque chose.
Sauvegarder GLPI, et tester la restauration
Une sauvegarde de GLPI comprend trois choses, et oublier l'une d'elles rend les deux autres inutilisables :
| Élément | Emplacement (installation du chapitre 2) | Pourquoi |
|---|---|---|
| La base de données | Base glpi sur MariaDB | Toutes les fiches, les tickets, l'historique, la configuration |
| Les fichiers de données et les plugins | /var/lib/glpi/files et /var/lib/glpi/plugins | Documents joints aux tickets et aux fiches, images, plugins installés depuis le marketplace |
| La configuration | /etc/glpi | Les identifiants de la base et surtout la clé de chiffrement glpicrypt.key |
La clé glpicrypt.key mérite une attention particulière : GLPI chiffre avec elle les secrets qu'il stocke en base (mot de passe du compte de lecture de l'annuaire, mots de passe des collecteurs, jetons). Une base restaurée sans sa clé fonctionne, mais tous ces secrets sont illisibles : l'authentification par l'annuaire et les collecteurs cessent de fonctionner.
Le script de sauvegarde nocturne de Cèdre Habitat :
#!/bin/bash
# /usr/local/sbin/sauvegarde-glpi.sh, lancé chaque nuit par cron (compte root)
set -euo pipefail
DEST=/srv/sauvegardes/glpi
JOUR=$(date +%F)
mkdir -p "$DEST"
# 1. La base, dans une transaction cohérente, sans bloquer les utilisateurs
mariadb-dump --single-transaction --routines glpi | gzip > "$DEST/glpi-base-$JOUR.sql.gz"
# 2. Les fichiers et la configuration (dont la clé de chiffrement)
tar -czf "$DEST/glpi-fichiers-$JOUR.tar.gz" /var/lib/glpi /etc/glpi
# 3. Garder 14 jours de sauvegardes locales
find "$DEST" -name 'glpi-*' -mtime +14 -delete
Ces sauvegardes locales sont ensuite copiées hors du serveur, et une copie hors site, selon la règle 3-2-1 présentée dans le cours Sauvegarde et PRA. Avec Docker, on sauvegarde de la même façon la base (par docker compose exec sur le conteneur de la base) et le volume des données de GLPI.
Une sauvegarde qui n'a jamais été restaurée ne prouve rien. Chaque trimestre, Thomas restaure la sauvegarde de la veille sur une machine de test : il recrée la base, réimporte le fichier, remet en place les dossiers et la clé, puis vérifie qu'il peut se connecter avec un compte de l'annuaire, ouvrir un document joint et retrouver les tickets de la veille. Il note la date, la durée de la restauration et les problèmes rencontrés dans un ticket récurrent (chapitre 9).
# Restauration sur la machine de test
gunzip -c glpi-base-2026-11-01.sql.gz | sudo mariadb glpi
sudo tar -xzf glpi-fichiers-2026-11-01.tar.gz -C /
sudo chown -R www-data:www-data /var/lib/glpi /etc/glpi
Mettre à jour GLPI
GLPI publie régulièrement des versions correctives, souvent pour des failles de sécurité : 11.0.9, 11.0.10 et 12.0.1 étaient des versions de sécurité. Une instance jamais mise à jour est une instance vulnérable. Suis les annonces du projet et applique les versions correctives rapidement.
La procédure pour une installation à la main, celle que Thomas a suivie pour passer de GLPI 11 à GLPI 12 :
- Vérifier les prérequis de la nouvelle version : PHP 8.3 et MariaDB 10.11 au minimum pour GLPI 12. Le serveur de Cèdre Habitat était sous Debian 13, donc rien à changer ; sous Debian 12, il aurait d'abord fallu mettre à jour le système.
- Vérifier les plugins : chacun doit exister dans une version compatible avec la nouvelle version de GLPI, sinon il sera désactivé.
- Sauvegarder la base, les fichiers et la configuration, et noter la version actuelle.
- Passer en mode maintenance, pour que personne ne travaille pendant l'opération :
sudo -u www-data php bin/console maintenance:enable. - Remplacer le dossier de l'application par celui de la nouvelle archive. Grâce à la séparation des dossiers du chapitre 2, les données et la configuration ne bougent pas ; il faut seulement recréer
inc/downstream.php, qui est dans le dossier de l'application. - Mettre à jour la base :
sudo -u www-data php bin/console db:update. - Supprimer à nouveau
install/install.php, revenu avec la nouvelle archive. - Quitter le mode maintenance (
maintenance:disable), puis vérifier : connexion, tickets, inventaire d'un poste, envoi d'un courriel, actions automatiques. - Contrôler les points propres à la version : pour GLPI 12, la visibilité de la base de connaissances (chapitre 12) et la ré-authentification des administrateurs.
Avec Docker, la mise à jour consiste à changer l'étiquette de l'image (glpi/glpi:12.0 au lieu de glpi/glpi:11.0), puis docker compose up -d : le conteneur met la base à jour au démarrage. La sauvegarde préalable reste obligatoire.
Les plugins et le marketplace
Les plugins ajoutent des fonctions à GLPI. Ils s'installent depuis le marketplace intégré (Configuration > Plugins) ou en déposant leur dossier à la main. Quelques plugins courants :
| Plugin | Rôle |
|---|---|
| GLPI Inventory | Découverte et inventaire réseau, déploiement de logiciels, collecte, inventaire VMware (chapitre 4) |
| Data Injection | Import de fichiers CSV dans les fiches |
| Fields | Champs supplémentaires sur les objets natifs, comme les tickets |
| Uninstall | Procédure de sortie d'un matériel (nettoyage de sa fiche, de ses liens) |
Chaque plugin est du code de plus à maintenir et à mettre à jour, et un plugin abandonné peut bloquer une mise à jour de GLPI. Beaucoup de fonctions qui demandaient un plugin sont désormais natives (inventaire, formulaires, actifs personnalisés, webhooks, double authentification) : avant d'installer un plugin, vérifie que la fonction n'existe pas déjà. Depuis GLPI 12, l'accès à la liste des plugins et au marketplace demande une ré-authentification.
Sécuriser l'instance
GLPI contient la liste de tous les postes avec leurs versions de logiciels, les adresses du réseau, les contrats, les tickets (qui mentionnent parfois des mots de passe envoyés par erreur par des utilisateurs) et les comptes de l'annuaire. C'est une cible de choix. Les mesures, de la plus simple à la plus avancée :
| Domaine | Mesures |
|---|---|
| Réseau | GLPI en HTTPS uniquement ; accessible depuis le réseau interne ou par VPN, pas directement depuis Internet ; port 62354 vers les agents ouvert seulement depuis le serveur ; base de données non joignable depuis le réseau |
| Serveur | Racine du site sur public ; dossiers de données hors de l'arborescence web ; système et PHP à jour ; durcissement selon le cours Cybersécurité des infrastructures |
| Application | Versions correctives appliquées vite ; install.php supprimé ; plugins limités et à jour |
| Comptes | Comptes par défaut désactivés ; administrateurs nominatifs ; double authentification obligatoire pour les profils d'administration ; profils au moindre privilège (chapitre 3) |
| Sessions | Ré-authentification active (ne pas la désactiver par la constante GLPI_DISABLE_REAUTH, que GLPI signale d'ailleurs sur le tableau de bord des administrateurs) ; révocation des sessions en cas de doute |
| Intégrations | Agents authentifiés ; comptes d'API limités ; webhooks signés par une clé secrète |
| Traces | Journaux conservés et consultés ; sauvegardes hors site |
Les journaux
GLPI garde plusieurs traces, complémentaires :
- l'historique de chaque élément : qui a modifié quoi, quand, avec l'ancienne et la nouvelle valeur ;
- les journaux de l'application (Administration > Journaux) : connexions, échecs de connexion, actions d'administration, exécution des actions automatiques ;
- les fichiers de journaux du dossier
/var/log/glpi(erreurs PHP, erreurs SQL, journaux des collecteurs et de l'inventaire), consultables depuis GLPI 11 dans une visionneuse intégrée ; - les journaux du serveur web.
En cas d'incident (un compte d'administration créé sans raison, des fiches modifiées en masse), c'est en croisant ces sources qu'on reconstitue ce qui s'est passé : le cours Réponse aux incidents explique comment lire et conserver ces traces.
GLPI et le RGPD
GLPI traite des données personnelles : noms, adresses électroniques, téléphones, postes affectés, contenu des tickets, historique des connexions. L'organisation doit donc l'inscrire à son registre des traitements, avec sa finalité (gestion du parc et assistance), les catégories de données, les destinataires et les durées de conservation (cours Droit du numérique et RGPD). Dans GLPI, cela se traduit par :
- des profils qui limitent l'accès aux données au besoin de chacun ;
- des durées de conservation réglées dans Configuration > Données et confidentialité (nouveau menu de GLPI 12), qui rassemble les réglages de purge de l'historique et de l'historique des connexions ;
- la purge automatique des tickets clos au-delà d'une durée décidée par l'organisation, si elle est justifiée ;
- la désactivation des comptes des personnes parties, puis leur anonymisation ou leur suppression selon la politique de conservation ;
- l'option d'anonymisation des techniciens dans les tickets vus par les utilisateurs (onglet Assistance de l'entité), quand l'organisation le souhaite.
Superviser GLPI
GLPI est un service comme un autre : s'il tombe, plus personne ne peut ouvrir de ticket. La supervision de Cèdre Habitat surveille la réponse HTTPS de la page de connexion, l'espace disque de la base et des fichiers, la date d'expiration du certificat, et l'état fourni par la commande php bin/console system:status, qui indique notamment l'état de la base et des actions automatiques (dont, depuis GLPI 12, celles en erreur). Le cours Supervision montre comment intégrer ces contrôles dans Zabbix, l'outil du labo SISR (Centreon fait de même) : voir les scénarios web Zabbix.
Exercices
Exercice 1 sur 4 La restauration ratée Réussi À revoir
Après une panne de disque, Thomas restaure la base de GLPI de la veille sur un nouveau serveur. L'interface fonctionne, les tickets sont là, mais plus personne ne peut se connecter avec son compte Active Directory, le collecteur de courriels est en erreur, et les pièces jointes des tickets affichent une erreur. Explique les deux oublis et comment les corriger.
Voir la réponseMasquer la réponse de l'exercice 1
- La configuration et sa clé de chiffrement
glpicrypt.keyn'ont pas été restaurées (ou une nouvelle clé a été générée à la réinstallation). Les mots de passe du compte de lecture de l'annuaire et du collecteur, chiffrés en base avec l'ancienne clé, sont illisibles : l'authentification LDAP et la relève des courriels échouent. Correction : restaurer/etc/glpidepuis la sauvegarde, avec la clé d'origine (ou, à défaut, ressaisir tous les secrets). - Les fichiers de données (
/var/lib/glpi/files) n'ont pas été restaurés : la base référence des documents qui n'existent pas sur le nouveau disque. Correction : restaurer l'archive des fichiers et rendre les dossiers àwww-data.
Leçon : sauvegarder et restaurer les trois éléments, et tester la restauration complète à intervalles réguliers.
Tu avais trouvé ?
Exercice 2 sur 4 Ordonner une mise à jour Réussi À revoir
Remets dans l'ordre les étapes d'une mise à jour de GLPI 11 vers GLPI 12 sur un serveur installé à la main : (a) db:update ; (b) vérifier la version de PHP ; (c) sauvegarder la base, les fichiers et la configuration ; (d) remplacer le dossier de l'application et recréer inc/downstream.php ; (e) activer le mode maintenance ; (f) supprimer install/install.php ; (g) vérifier la compatibilité des plugins ; (h) désactiver le mode maintenance et tester.
Voir la réponseMasquer la réponse de l'exercice 2
b, g, c, e, d, a, f, h. On vérifie d'abord que la mise à jour est possible (PHP, plugins), on sauvegarde, on isole l'instance (maintenance), on remplace le code, on met la base à jour, on supprime le script d'installation revenu avec l'archive, puis on rouvre et on teste. Les étapes b et g peuvent s'échanger.
Tu avais trouvé ?
Exercice 3 sur 4 Rien ne se passe la nuit Réussi À revoir
Chez un client, les tickets résolus ne se ferment jamais automatiquement, les courriels envoyés au support n'apparaissent comme tickets que pendant la journée, et les alertes de contrats n'arrivent jamais le week-end. Quel est le diagnostic, et comment le corriger ?
Voir la réponseMasquer la réponse de l'exercice 3
Les actions automatiques sont en mode GLPI : elles ne se lancent que lorsque des utilisateurs naviguent dans l'interface, donc jamais la nuit ni le week-end, et de façon irrégulière en journée. Correction : ajouter la ligne de cron (* * * * * /usr/bin/php /var/www/glpi/front/cron.php) à la crontab de l'utilisateur du serveur web, puis passer les actions (closeticket, mailgate, contract, queuednotification…) en mode CLI. On vérifie ensuite que la date de dernière exécution avance chaque minute.
Tu avais trouvé ?
Exercice 4 sur 4 Audit de sécurité d'une instance Réussi À revoir
On te demande d'auditer le GLPI d'une PME en dix points. Propose ta grille de contrôle, avec pour chaque point la vérification concrète.
Voir la réponseMasquer la réponse de l'exercice 4
| Point | Vérification |
|---|---|
| 1. Version | La version installée est la dernière corrective de sa branche (page « À propos » ou system:status) |
| 2. HTTPS | GLPI ne répond qu'en HTTPS, avec un certificat valide ; HTTP redirige |
| 3. Exposition | GLPI n'est pas joignable directement depuis Internet (test depuis l'extérieur) |
| 4. Racine web | Aucune alerte de sécurité sur la page d'accueil ; racine sur public |
| 5. Script d'installation | install/install.php absent |
| 6. Comptes par défaut | glpi, tech, normal, post-only désactivés ou mots de passe changés |
| 7. Privilèges | Liste des utilisateurs Super-Admin et Admin : nominatifs, peu nombreux, justifiés |
| 8. Double authentification | Obligatoire pour les profils d'administration |
| 9. Agents et API | Authentification des agents active ; comptes d'API limités ; pas de NO_SSL_CHECK dans le déploiement |
| 10. Sauvegardes | Base, fichiers et configuration sauvegardés chaque nuit, copie hors site, dernière restauration testée datée de moins de trois mois |
Chaque écart devient une recommandation priorisée, et sa correction un ticket.
Tu avais trouvé ?