GLPI: Installation sur Debian 10

Installation de GLPI

Installer les paquets nécessaires

apt update apt dist-upgrade apt-get install apache2 mariadb-server libapache2-mod-php php-mysql php-curl php-intl php-zip php-bz2 \ php-ldap php-gd php-imap php-mbstring php-xml php-xmlrpc php-apcu php-cas

Sécuriser mariadb

mysql_secure_installation

Télécharger & décompresser le package

wget -qO- https://github.com/glpi-project/glpi/releases/download/9.5.3/glpi-9.5.4.tgz | tar xvzf -

Copier les fichiers téléchargés dans /var/www

cp -r glpi /var/www</htmlcode> - Configurer un utilisateur Mysql pour Glpi <code bash>mysql -u root -p
CREATE DATABASE glpi; CREATE USER glpi@localhost IDENTIFIED BY "**motdepasse**"; GRANT ALL PRIVILEGES ON glpi.* TO glpi@localhost; flush privileges; quit

Changer le propriétaire du dossier

chown -R www-data:www-data /var/www/html/glpi/

Visiter la page de GLPI pour configurer via l'interface Web http://ip/glpi

Configurer un cron pour les tâches

crontab -e

et coller la ligne suivante

* * * * * /usr/bin/php /var/www/glpi/front/cron.php &>/dev/null

Editer le fichier php.ini dans le répertoire /etc/php/7.3/cli

nano /etc/php/7.3/cli/php.ini

et adapter cette ligne pour y indiquer votre timezone

date.timezone = Europe/Brussels

Vous pouvez aussi l'adapter pour autoriser l'upload de fichiers volumineux

upload_max_filesize = 500M
post_max_size = 500M
memory_limit = 500M
default_socket_timeout = 6000

Editer le fichier php.ini dans le répertoire /etc/php/7.3/fpm

nano /etc/php/7.3/fpm/php.ini

et adapter cette ligne pour y indiquer votre timezone

date.timezone = Europe/Brussels

Vous pouvez aussi l'adapter pour autoriser l'upload de fichiers volumineux

upload_max_filesize = 500M
post_max_size = 500M
memory_limit = 500M
default_socket_timeout = 6000

Installation de FusionInventory

Télécharger le plug-in pour GLPI

wget https://github.com/fusioninventory/fusioninventory-for-glpi/releases/download/glpi9.5.0%2B1.0/fusioninventory-9.5.0+1.0.tar.bz2

Décompresser l'archive

tar xvfj fusioninventory-9*

Copier les fichiers dans le bon répertoire

cp -r fusioninventory /var/www/glpi/plugins/

Changer le propriétaire des fichiers

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

Dans GLPI, installer puis activer le plugin FusionInventory

Intégration au serveur LDAP/Active Directory

Installer les packages nécessaires

apt-get install php-ldap ldap-utils

Copier le certificat du serveur LDAP dans le répertoire /usr/local/share/ca-certificates

cp server-ad.crt /usr/local/share/ca-certificates

Mettre à jour la database des certificats

update-ca-certificates

Vérifiez si vous savez vous connecter sur le serveur LDAP distant

#Si je veux vérifier localement un certificat sur base des CA présents dans /etc/ssl/certs #openssl verify -CApath /etc/ssl/certs sambaCert.pem openssl s_client -showcerts -connect srv-ad.makeitsimple.lan:636

La réponse devrait être : Verify return code: 0 (ok)

Editer le fichier ldap.conf

nano /etc/ldap/ldap.conf

Il devrait ressembler à ceci

BASE dc=makeitsimple.lan
URI ldaps://srv-ad.makeitsimple.lan
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
# TLS certificates (needed for GnuTLS)
TLS_CACERT /etc/ssl/certs/ca-certificates.crt

Faire un test de connexion en interrogeant le serveur LDAP

ldapsearch -x -d 1 -D 'cn=Administrator,cn=Users,dc=makeitsimple,dc=lan' -W -b'cn=Users,dc=MAKEITSIMPLE,dc=LAN'

ou

ldapsearch -x -d 1 -D 'cn=Administrator,cn=Users,dc=makeitsimple,dc=lan' -W -b'cn=Users,dc=MAKEITSIMPLE,dc=LAN' -H ldaps://srv-ad:636

Dans GLPI Configuration → Authentification → Annuaire Ldap → Cliquer sur le +

Voici un exemple de configuration, adapter selon les besoins et tester

Importer les users via Administration → Utilisateurs → Liaison annuaire LDAP

Faire une règle cron pour synchroniser régulièrement les utilisateurs:

php /var/www/glpi/scripts/ldap_mass_sync.php action=2

Pour assigner les profils aux groupes de manière automatique lors de l'import, aller dans Administration, règles, affectations automatiques

Configuration SSL

Activer et ssl & désactiver l'accès par défaut

a2dissite 000-default.conf a2enmod ssl

Créer les certicats nécessaires

Editer le fichier /etc/apache2/sites-available/glpi.conf

nano /etc/apache2/sites-available/glpi.conf

Voici à quoi devrait ressembler le fichier

#les 4 premières lignes sont des tests pour intercepter tout ce qui n’est pas nommé par DNS <VirtualHost 10.0.0.214:80> ServerName 10.0.0.214/ DocumentRoot /var/www/glpi </VirtualHost> <VirtualHost srv-glpi.makeitsimple.lan:80> ServerName srv-glpi.makeitsimple.lan/ Redirect / https://srv-glpi.makeitsimple.lan/ </VirtualHost> <VirtualHost srv-glpi.makeitsimple.lan:443> ServerName srv-glpi.makeitsimple.lan DocumentRoot /var/www/glpi SSLEngine on SSLCertificateFile /etc/apache2/srv-glpi.crt SSLCertificateKeyFile /etc/apache2/srv-glpi.key </VirtualHost>

Dans les paramètres généraux de GLPI, changer l’url du serveur pour refléter son FQDN. Sinon le déploiement de paquet ne fonctionnera pas. Dans les paramètres Administration → Entités → Root entity → Fusioninventory

Single Sign On (SSO)

Installer les paquets kerberos nécessaire

apt-get -y install krb5-user libapache2-mod-auth-kerb

Editer le fichier krb5.conf

nano /etc/krb5.conf

Coller une configuration +/- similaire

[libdefaults] default_realm = MAKEITSIMPLE.LAN # The following krb5.conf variables are only for MIT Kerberos. kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true fcc-mit-ticketflags = true [realms] MAKEITSIMPLE.LAN = { kdc = srv-ad.makeitsimple.lan admin_server = srv-ad.makeitsimple.lan default_domain = srv-ad.makeitsimple.lan } .makeitsimple.lan = MAKEITSIMPLE.LAN makeitsimple.lan = MAKEITSIMPLE.LAN

Faire un test de session

kinit Administrator

Se connecter sur le serveur Samba-AD et faire les 3 commandes suivantes en modifiant le nom du serveur

samba-tool user create --random-password http-glpi.makeitsimple.lan samba-tool spn add HTTP/glpi.makeitsimple.lan http-glpi.makeitsimple.lan samba-tool domain exportkeytab /root/httpd.keytab --principal=HTTP/glpi.makeitsimple.lan@MAKEITSIMPLE.LAN

Vérifier avec la commande kvno

kvno HTTP/glpi.makeitsimple.lan@MAKEITSIMPLE.LAN

De retour sur le serveur GLPI, déplacer le fichier dans le dossier apache et lui donner les bons droits

mv httpd.keytab /etc/apache2/ chown www-data:root /etc/apache2/httpd.keytab chmod 640 /etc/apache2/httpd.keytab

Editer le fichier apache

nano /etc/apache2/sites-enabled/000-default.conf
DocumentRoot /var/www Servername glpi.makeitsimple.lan <Location /> AuthType Kerberos AuthName "Demande d'identification SSO" KrbAuthRealms MAKEITSIMPLE.LAN KrbServiceName HTTP/glpi.makeitsimple.lan Krb5Keytab /etc/apache2/httpd.keytab KrbMethodNegotiate On KrbMethodK5Passwd On require valid-user </Location>

Activer le module d'authentification

a2enmod auth_kerb

Dans GLPI → Configuration → Authentification → Autre méthode d’authentification

Champs de stockage de l’identifiant : PHP_AUTH_USER

Supprimer le domaine des identifiants : NON

Le navigateur doit être en mesure d’envoyer les infos Kerberos. Pour IE/edge Chromium, il faut que le site soit reconnu comme Sécurité=intranet et l'intranet renseigné par exemple “*.makeitsimple.lan”.

Cron ne veut pas fonctionner

Liste numérotéeVérifier que le timezone est bien configuré dans les deux fichiers PHP

Voir dans Configuration → Action automatique → Tasksheduler si

Mode éxécution = CLI

Prochaine exécution n’est pas bloqué

Sources

https://blog.untoldvoyage.com/2012/10/08/sharepoint-sso-ntlm-from-apache-ubuntu/