You are not logged in.
Suite à mes travaux précédents sur l'installation d'un LAMP/GLPI consultable ici, il est temps de procéder à une migration vers la dernière version 10.0.16, dans le but de combler des failles de sécurités.
La manière d'installer GLPI a changé entre temps, pour renforcer la sécurité les dossiers config et files doivent se trouver en dehors du dossier GLPI.
Nous verrons dans cette procédure plusieures étapes nécessaires avant, pendant et après la migration au bon fonctionnement de GLPI.
Cette procédure s'appuie principalement sur la documentation qui est bien renseignée, si l'on se prend le temps de la lire en y ajoutant un peu de bon sens. (RTFM)
I. Prérequis
Les sauvegardes nécessaires à la migration:
- base de données mysql (par sécurité)
- dossier "config"
- dossier "files"
- dossier "marketplace"
- dossier "plugins"
- désactiver tous les plugins
Pour cela nous allons créer un dossier de backup avec les bons droits, dans une fenêtre Terminale en root ( su - ):
mkdir /var/backup
chmod -R 755 /var/backup/
Une fois le dossier créé, passons à la sauvegarde:
cd /var/backup/
mysqldump -u root -p --databases glpidb > dumpdb.sql
cp -R /var/www/html/glpi/config /var/backup/
cp -R /var/www/html/glpi/files /var/backup/
cp -R /var/www/html/glpi/marketplace /var/backup/
cp -R /var/www/html/glpi/plugins /var/backup/
Une fois les auvegardes terminées nous pouvons passer à la migration.
II. Mise à jour GLPI.
Téléchargeons la dernière version en date de GLPI:
cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/10.0.16/glpi-10.0.16.tgz
Puis décompressez l'archive:
tar xvf glpi-10.0.16.tgz
Purgez le dossier GLPI avant d'y installer la nouvelle version:
rm -Rf /var/www/html/glpi/*
Installez la nouvelle version dans le dossier purgé précédemment:
cd glpi
cp -R * /var/www/html/glpi/
Restaurez les dossiers sauvegardés précédemment:
cd /var/backup/
cp -R config/* /var/www/html/glpi/config/
cp -R files/* /var/www/html/glpi/files/
cp -R marketplace/* /var/www/html/glpi/marketplace/
cp -R plugins/* /var/www/html/glpi/plugins/
Donnez les bons droits au dossier GLPI:
chown -R apache:apache /var/www/html/glpi
chmod -R 755 /var/www/html/glpi
Rajoutez des droits SELinux pour le serveur Web:
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/glpi(/.*)?"
restorecon -Rv /var/www/html/glpi
Activez ensuite certains booléens SELinux requis:
setsebool -P httpd_can_network_connect on
setsebool -P httpd_can_network_connect_db on
setsebool -P httpd_can_sendmail on
La migration est à présent terminée.
III. Paramétrage de renforcement.
Comme expliqué plus haut, il est nécessaire d'externaliser les dossiers config et files de GLPI, pour cela il faut créer des dossier avec les droits adéquats.
Création des dossiers:
mkdir /etc/glpi
mkdir /var/lib/glpi
mkdir /var/log/glpi
Donnez les bons droits:
chown -R apache:apache /etc/glpi
chown -R apache:apache /var/lib/glpi
chown -R apache:apache /var/log/glpi
chmod -R 755 /etc/glpi
chmod -R 755 /var/lib/glpi
chmod -R 755 /var/log/glpi
Copiez le contenu config et files de GLPI dans les dossiers créés:
cp -R /var/www/html/glpi/config/* /etc/glpi/
cp -R /var/www/html/glpi/files/* /var/lib/glpi/
Il n'y a rien à copier dans /var/log/files, juste vérifier si les droits sont bons. (ls -l et si besoin chown, chmod décris plus haut)
Suivant la nouvelle nomenclature, il faut créer un fichier php avec les bonnes redirections, n'oubliez pas de donner les bons droits (ls -l et si besoin chown, chmod décris plus haut):
cd /var/www/html/glpi/inc/
nano downstream.php
collez le code php ci-dessous et enregistrez le:
<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/');
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
require_once GLPI_CONFIG_DIR . '/local_define.php';
}
Créez ensuite un fichier local et copiez le code php, n'oubliez pas de donner les bons droits (ls -l et si besoin chown, chmod décris plus haut):
nano /etc/glpi/local_define.php
<?php
define('GLPI_VAR_DIR', '/var/lib/glpi');
define('GLPI_LOG_DIR', '/var/log/glpi');
Procédez à la mise à niveau du vhost:
nano /etc/httpd/conf.d/glpi.conf
<VirtualHost *:80>
ServerName glpi
DocumentRoot /var/www/html/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/html/glpi/public"
<Directory /var/www/html/glpi/public>
Require all granted
RewriteEngine On
# Ensure authorization headers are passed to PHP.
# Some Apache configurations may filter them and break usage of API, CalDAV, ...
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect all requests to GLPI router, unless file exists.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
</VirtualHost>
mysql nécessite aussi une mise à niveau de la timezone, redémarrez le service après cela:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -p -u root mysql
systemctl restart mysql
Redémarrez le service apache pour prendre en compte les changements de nomenclature:
systemctl reload httpd && systemctl restart httpd
Configurez la sécurité des sessions dans PHP:
nano /etc/php.ini
session.cookie_secure = on
session.cookie_httponly = on
session.cookie_samesite = Lax
Enregistrez puis redémarrez le service apache:
systemctl reload httpd && systemctl restart httpd
Vérifiez une dernière fois si tous les dossiers et code php ont les bons droits. (ls -l et si besoin chown, chmod décris plus haut)
IV. Installation de GLPI.
Procédez à la mise à niveau de la base de donnée:
cd /var/www/html/glpi/
sudo php bin/console db:check_schema_integrity
sudo php bin/console db:update
Une fois la base de donnée à jour vous pouvez procéder à l'installation de GLPI:
dans votre navigateur renseignez votre adresse IP et suivez les instructions et sélectionnez la base de donnée glpidb.
Vous pouvez vous réferer à cette procédure
Une fois GLPI installé, n'oubliez pas de supprimer install.php:
rm -Rf /var/www/html/glpi/install/install.php
Vous pourrez consulter A propos pour la version de GLPI:
N'oubliez pas de réactiver tous vos plugins.
V. Mise à niveau PHP.
cette mise à niveau se base sur un LAMP avec une version 8.1 de PHP qui arrive bientôt en fin de suport de sécurité, il est conseillé d'upgrader vers la dernière version supportée en date soit PHP8.3.
Désinstallez PHP:
dnf remove php*
désactivez PHP8.1:
dnf module disable php:remi-8.1
Réinitialisez PHP:
dnf module reset php
Activez la dernière version de PHP:
dnf module enable php:remi-8.3
dnf update php\*
Installez PHP et ses composants:
dnf install php-mysqlnd php-opcache php-gd php-xmlrpc php-ldap php-imap php-soap php-pecl-apcu php-pear php-devel make libsodium libsodium-devel php-pear-CAS php-mbstring php-sodium phpmyadmin -y
Reconfigurez la sécurité des sessions dans PHP:
nano /etc/php.ini
session.cookie_secure = on
session.cookie_httponly = on
session.cookie_samesite = Lax
Redémarrez le service apache:
systemctl reload httpd && systemctl restart httpd
Pour vérifier la version de PHP installé:
php -v
Mettez à niveau le fichier index.php dans le dossier GLPI pour la prise en charge de PHP8.3:
nano /var/www/html/glpi/index.php
remplacez comme dans la description ci-dessous puis enregistrez et redémarrez le service apache:
Sources:
https://forum.glpi-project.org/viewtopic.php?id=284490 *pour la mise en place du plateau
https://glpi-install.readthedocs.io/fr/latest/ *la documentation indispensable
https://blog.remirepo.net/post/2022/06/ … -and-8.1.7 *pour les versions de PHP
Last edited by vandykmarsu (2024-08-02 10:44:46)
Offline