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….
Comments are closed