Dossier Public de GLPI : Configuration Sécurisée pour la Production

Comment configurer le DocumentRoot de GLPI sur le dossier public avec Apache et Nginx, pourquoi c'est obligatoire et ce qui se passe si vous ne le configurez pas.

Si le DocumentRoot de votre GLPI ne pointe pas vers le dossier public, vos données sont en danger. Il s’agit de la configuration de sécurité la plus importante de GLPI en production.

Pourquoi le dossier public existe

GLPI 10+ a séparé les fichiers web (accessibles par le navigateur) des fichiers internes (config, données, logique). Le dossier public ne contient que :

  • index.php (routeur principal)
  • .htaccess (règles Apache)
  • Fichiers statiques (CSS, JS, images)

Tout le reste (configuration de la base de données, classes PHP, données sensibles) reste en dehors du webroot.

Apache

<VirtualHost *:443>
    ServerName glpi.suaempresa.com
    DocumentRoot /var/www/glpi/public

    <Directory /var/www/glpi/public>
        AllowOverride All
        Require all granted
    </Directory>

    SSLEngine On
    SSLCertificateFile /etc/ssl/certs/glpi.crt
    SSLCertificateKeyFile /etc/ssl/private/glpi.key
</VirtualHost>

Nginx

server {
    listen 443 ssl http2;
    server_name glpi.suaempresa.com;
    root /var/www/glpi/public;
    index index.php;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Vérification

Après la configuration, testez en accédant à des URL qui ne devraient PAS fonctionner :

  • /config/config_db.php → doit retourner 404
  • /src/ → doit retourner 404
  • /vendor/ → doit retourner 404
  • /install/install.php → doit retourner 404 (après suppression)

Si l’une d’elles retourne du contenu, le DocumentRoot est mal configuré.

Questions fréquentes

À partir de GLPI 10, le serveur web doit pointer vers /var/www/glpi/public (et non /var/www/glpi). Cela n'expose que les fichiers nécessaires au navigateur, protégeant ainsi le code source et les configurations.

Les fichiers de configuration, la base de données locale et le code PHP peuvent être potentiellement accessibles via URL. Il s'agit d'une vulnérabilité de sécurité critique.

Accédez à https://votreglpi.com/config/config_db.php dans le navigateur. Si une erreur 404 ou 403 s'affiche, c'est correct. Si du contenu PHP ou un téléchargement s'affiche, c'est incorrect.

Besoin d'aide ?