GLPI (Gestionnaire Libre de Parc Informatique) est sans doute l’outil open source de gestion de service informatique le plus évolué à ce jour.
Edité par les français de Teclib’ il est depuis presque 20 ans un choix évident quand il s’agit de gérer son parc, ses contrats, ses demandes d’interventions ou tout autre aspect de la vie d’une DSI.

Nous allons voir dans cet article comment installer de manière efficace cette applicatif complet et essentiel.

 Prérequis

Nous installerons GLPI sur une Ubuntu 22.04 fraichement mise à jour.
La machine mise en place possédera 2go de RAM et 2 vCPU.

Vous retrouverez les prérequis complets ICI.

Nous sécuriserons le serveur avec HTTPS grâce à la création d’une autorité de certification racine.
Le domaine local est domaintest.loc et le FQDN du serveur web glpi.domaintest.loc.

Installation des pré-requis

Tout d’abord nous vérifierons que le serveur est bien à jour :

sudo apt-get update && sudo apt-get upgrade

Puis nous installerons Apache :

sudo apt-get install apache2 -y

Nous activerons Apache au démarrage de la machine :

sudo systemctl enable apache2

Puis nous installerons la base de données, ici MariaDB :

sudo apt-get install mariadb-server -y

Et nous installerons les modules annexes nécessaires :

sudo apt-get install php libapache2-mod-php -y

sudo apt-get install php-{ldap,imap,apcu,xmlrpc,curl,common,gd,json,mbstring,mysql,xml,intl,zip,bz2}

Configuration de MariaDB

Nous initialiserons la base de données MariaDB et nous répondrons aux questions comme ci-dessous :

sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

 

Nous nous connecterons à la base de données avec les identifiants précédemment rentrés. Nous créerons une base de données pour GLPI et un utilisateur ayant les droits pour accéder à cette base :

mysql -u root -p

create database glpidb character set utf8 collate utf8_bin;

grant all privileges on glpidb.* to glpi@localhost identified by 'votre_mot_de_passe';

flush privileges;

quit

Clonage du projet

Nous récupérerons les sources de l’outil et les placerons dans le bon répertoire avec les commandes suivantes:

wget https://github.com/glpi-project/glpi/releases/download/10.0.2/glpi-10.0.2.tgz

sudo mkdir /var/www/glpi.domaintest.loc

sudo tar -xzvf glpi-10.0.2.tgz

sudo cp -R glpi/* /var/www/glpi.domaintest.loc/

Puis nous donnerons les droits adéquats:

sudo chown -R www-data:www-data /var/www/glpi.domaintest.loc/

sudo chmod -R 775 /var/www/glpi.domaintest.loc/

Configuration de PHP

Nous devrons reconfigurer quelques paramètres dans PHP dont le temps de session, la mémoire et la taille des pièces jointes:

sudo nano /etc/php/8.1/apache2/php.ini

Puis nous modifierons les lignes comme ci dessous:

memory_limit = 64M 
file_uploads = on 
max_execution_time = 600 
session.auto_start = 0 
session.use_trans_sid = 0

Sécurisation du serveur web via HTTPS

Afin de sécuriser au mieux le service web GLPI, nous aurons besoin de mettre en place un certificat HTTPS.
Si le serveur est connecté à internet nous pourrons utiliser Let’s Encrypt.
Ici par soucis de sécurité nous ne connecterons pas ce serveur vers l’extérieur. Nous générerons donc notre propre autorité de certification et un certificat « wildcard » pouvant être réutilisé sur n’importe quel serveur web de notre organisation.
Il sera nécessaire de diffuser le certificat racine via une GPO sur tous les postes de notre domaine.

Nous commencerons par passer en root et par créer le dossier de travail nécessaire à ce nouveau serveur faisant « autorité de certification » et nous nous y placerons:

sudo su
mkdir /etc/ssl/glpi.domaintest.loc/
cd /etc/ssl/glpi.domaintest.loc/

Nous commencerons par générer la clé privée pour l’autorité de certification en rentrant un mot de passe.
Ce dernier sera absolument nécessaire pour la signature de certificat, conservez-le précieusement:

openssl genrsa -des3 -out domaintestCA.key 2048
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

 

Puis nous générerons le certificat root de l’autorité de certification à destination des clients au format .pem:

openssl req -x509 -new -nodes -key domaintestCA.key -sha256 -days 3650 -out domaintestCA.pem

Enter pass phrase for domaintestCA.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:DS
Locality Name (eg, city) []:City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LAB Remiflandrois.fr
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:Wildcard domaintest.loc
Email Address []:admin@domaintest.loc

Pour des raisons pratiques nous génèrerons également un certificat au format .crt:

openssl x509 -in domaintestCA.pem -inform PEM -out domaintestCA.crt

Nous créerons la clé privée utilisée pour tous les serveurs de domaintest.loc de telle manière que le certificat final soit un certificat wildcard (*.domaintest.loc).
Puis nous génererons le CSR (Certificate Signing Request) :

openssl genrsa -out wildcard.domaintest.loc.key 2048

openssl req -new -key wildcard.domaintest.loc.key -out wildcard.domaintest.loc.csr

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:DS
Locality Name (eg, city) []:City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LAB Remiflandrois.fr
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:Wildcard Domaintest.loc
Email Address []:admin@domaintest.loc

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

 

Nous créerons un fichier contenant les paramètres pour notre certificat HTTPS:

nano wildcard.domaintest.loc.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.domaintest.loc

Enfin nous signerons notre certificat avec notre autorité de certification et obtiendrons le certificat public pour Apache.
Lors de ce processus le mot de passe de notre autorité de certification nous sera demandé:

openssl x509 -req -in wildcard.domaintest.loc.csr -CA domaintestCA.pem -CAkey domaintestCA.key -CAcreateserial -out wildcard.domaintest.loc.crt -days 3650 -sha256 -extfile wildcard.domaintest.loc.ext

Certificate request self-signature ok
subject=C = FR, ST = DS, L = City, O = LAB Remiflandrois.fr, OU = IT, CN = Wildcard Domaintest.loc, emailAddress = admin@domaintest.loc
Enter pass phrase for domaintestCA.key:

 

Configuration du VHost Apache

Nous devrons ensuite configurer le VHost nécessaire a la publication du site. Nous exécuterons donc la commande:

sudo nano /etc/apache2/sites-available/glpi.domaintest.loc.conf

Et nous compléterons ce fichier comme ci dessous:

NameVirtualHost glpi.domaintest.loc:443

<VirtualHost *:80>
DocumentRoot /var/www/glpi.domaintest.loc
ServerName glpi.domaintest.loc
Redirect permanent / https://glpi.domaintest.loc/
ErrorLog ${APACHE_LOG_DIR}/glpi_error.log
CustomLog ${APACHE_LOG_DIR}/glpi_access.log combined
</VirtualHost>

<VirtualHost *:443>
ServerAdmin admin@example.com
DocumentRoot /var/www/glpi.domaintest.loc
ServerName glpi.domaintest.loc
SSLEngine On
SSLCertificateFile /etc/ssl/glpi.domaintest.loc/wildcard.domaintest.loc.crt
SSLCertificateKeyFile /etc/ssl/glpi.domaintest.loc/wildcard.domaintest.loc.key
<Directory /var/www/glpi.domaintest.loc>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/glpi_error.log
CustomLog ${APACHE_LOG_DIR}/glpi_access.log combined

</VirtualHost>

Puis nous activerons le module Apache SSL:

sudo a2enmod ssl

Nous créerons le lien symbolique et redémarrerons Apache:

sudo ln -s /etc/apache2/sites-available/glpi.domaintest.loc.conf /etc/apache2/sites-enabled/glpi.domaintest.loc.conf

sudo systemctl restart apache2

Configuration du pare-feux IPTABLES

Nous commencerons par installer iptables-persistent afin de mieux sauvegarder les règles que nous allons créer:

sudo apt-get install iptables-persistent

Puis nous rentrerons les règles autorisant uniquement le ssh le HTTP et le HTTPS:

sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -P INPUT DROP

Puis nous sauvegarderons les règles:

sudo iptables-save

Installation de GLPI

Une fois le serveur enregistré dans votre serveur DNS, nous pourrons accéder à GLPI par l’adresse https://glpi.domaintest.loc/

Nous validerons en cliquant sur « OK ».

Nous accepterons la licence GPL en cliquant sur le bouton « Continuer ».

Puis nous cliquerons sur « Installer » pour passer à l’étape suivante.

Le système d’installation vérifiera alors si les prè-requis sont respectés. Nous cliquerons sur le bouton « Continuer » après un rapide coups d’oeil.

Nous devrons ensuite connecter GLPI à sa base de données:

  • Serveur SQL = 127.0.0.1
  • Utilisateur SQL = glpi
  • Mot de passe SQL= votre_mot_de_passe défini a la création de la base de données

Nous cliquerons sur « Continuer » pour tester la connexion.

Une fois connecté, nous sélectionnerons la base de données a utiliser. Ici il s’agira de sélectionner « glpidb ».

Nous passerons à l’étape suivante en cliquant sur « Continuer ».

La base de données s’initialisera. Nous passerons à l’étape suivante en cliquant sur « Continuer ».

Vous pourrez choisir d’envoyer des données statistiques. Nous passerons à l’étape suivante en cliquant sur « Continuer ».

L’écran suivant vous proposera une offre commerciale pour l’assistance et le support. Nous passerons à l’étape suivante en cliquant sur « Continuer ».

Enfin l’assistant d’installation est terminé. Nous cliquerons sur « Utiliser GLPI » pour accéder à la page de connexion de notre GLPI.

Lors de cette derniere phase d’installation nous noterons les comptes par defaut créés:

Niveau de droit Identifiant Mot de passe
Administrateur glpi glpi
Technicien tech tech
Normal normal normal
postonly post-only post-only

Première connexion et finalisation de l’installation

A l’ecran de connexion, nous choisierons de nous connecter en tant qu’administrateur avec l’identifiant « glpi »:

L’ecran d’accueil nous indiquera immediatement que des configurations post-installaltion sont necessaires:

 

Pour commencer nous retournerons sur le serveur pour supprimer le fichier install.php:

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

Pour des raisons de sécurité nous créerons notre propre utilisateur « super admin » afin d’administrer le logiciel.

Nous irons dans le menu « Administration », puis « Utilisateurs »:

 

A partir de cet écran nous créerons un nouvel utilisateur en cliquant sur le bouton « Ajouter Utilisateur » en haut de la page:

Nous créerons notre utilisateur d’administration à partir du formulaire venant de s’ouvrir. Une fois les champs remplis et le profil « Super-Admin » selectionné dans la rubrique habilitation nous validerons en cliquant sur le bouton « Ajouter » :

Une fois notre utilisateur Super Admin créer nous nous conencterons avec ce dernier pour la suite des opérations.

De retour dans le menu de gestion des utilisateurs, nous selectionnerons les comptes par défaut créer lors de l’installation et nous choisirons de les « Mettre à la corbeille »:

 

Notre installation de GLPi est maintenant fonctionnelle et prete à accueuillir nos parametrages, comptes utilisateurs, documents etc…

Nous verrons dans une deuxieme partie comment créer nos utilisateurs sur la base d’une authentification interne, comment connecter GLPI à un Active Directory, comment faire remonter les caracteristiques de son parc automatiquement et bien d’autre choses….

Categories:

Comments are closed