Vous êtes ici

Comment sécuriser update.php sous Drupal 8 ?

Portrait de DrupalFacile
Soumis par DrupalFacile le jeu, 22/10/2015 - 08:49

Un des problèmes de sécurité qui peut être détecté par Drupal 8 lorsque vous vous rendez sur la page Menu d'administration > Rapports > Tableau de bord d'administration concerne update.php qui doit être protégé.

update.php non sécurisé

La configuration qui déclenchera l'alerte est la suivante, dans settings.php

$settings['update_free_access'] = TRUE;

Cela signifie que le contrôle d'accès à update.php est désactivé que vous possédiez ou non la permission Gérer la mise à jour logicielle ou que vous soyez super utilisateur (UID 1) du site. En d'autres termes, n'importe qui aurait désormais accès à la mise à jour du site. Vous comprenez donc que modifier settings.php pour changer cette valeur ne doit être que temporaire, et seulement dans le cas où vous auriez un problème d'accès ou de permissions sur le site.

Si le fichier est correctement protégé, vous ne pourrez pas accéder à la page d'administration des mises à jour. Vous pouvez tester, par exemple dans une fenêtre en mode incognito de votre navigateur. Rendez-vous sur l'URL /update.php et observez le message d'erreur :

In order to run update.php you need to either be logged in as admin or have set $update_free_access in your settings.php.

Permissions minimales

Cette clarification étant faite, vous pouvez également vous assurer que le fichier update.php possède les permissions attendues, Si vous accès à la ligne de commande sur Linux ou Mac OS, vous pouvez utiliser la commande stat qui vous donnera toutes les informations du fichier. Par défaut ce fichier devra posséder les permissions 644 ou autrement dit, les permissions de lecture et d'écriture pour l'utilisateur Apache, mais seulement les droits de lecture aux autres.

$ stat update.php
  File: ‘update.php’
  Size: 547       	Blocks: 8          IO Block: 4096   regular file
Device: 806h/2054d	Inode: 7365878     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/drupalfacile)   Gid: ( 1000/drupalfacile)
Access: 2015-10-19 11:12:26.186194155 +0200
Modify: 2015-10-19 11:05:55.122180228 +0200
Change: 2015-10-19 11:07:41.554184018 +0200
 Birth: -

Si ce n'est pas le cas, ne manquez pas de changer les permissions de manière à éviter toute faille de sécurité :

$ chmod 644 update.php

Permissions renforcées

@Flocon de toile fait remarquer dans les commentaires que les permissions pourrait être plus restrictives. C'est vrai, car vous pouvez effectuer ce que l'on appelle du security harderning qui consite dans notre cas à renforcer les permissions. Vous pouvez dès lors restreindre le fichier à 440 (lecture uniquement pour l'utilisateur et le groupe) et faire en sorte que le fichier "appartienne" à l'utilisateur Apache www-data et au groupe de votre choix (généralement le groupe dédié à l'administration du docroot).

Pour renforcer les permissions, vous pouvez donc utiliser :

$ chmod 440 update.php

Pour changer l'utilisateur et le groupe, utilisez :

$ chown www-data:drupalfacile update.php

Et enfin votre fichier update.php devrait ressembler à cela :

$ stat update.php
  File: `update.php'
  Size: 547       	Blocks: 8          IO Block: 4096   regular file
Device: ca10h/51728d	Inode: 21170145    Links: 1
Access: (0440/-r--r-----)  Uid: (   33/www-data)   Gid: (95139/    drupalfacile)
Access: 2015-11-02 02:55:04.000000000 +0000
Modify: 2015-10-22 15:16:44.000000000 +0000
Change: 2015-10-22 15:16:47.000000000 +0000
 Birth: -

N'oubliez pas non plus que dans tous les cas il y a une permission à donner pour que les utilisateurs aient accès à update.php - Il s'agit de la permission Gérer la mise à jour logicielle qui se trouve sous Gérer > Personnes > Droits (admin/people/permissions). Faites donc bien attention à restreindre cette permission à l'administrateur du site ou à un rôle utilisateur bien spécifique apte à gérer cette partie critique du site.

Version: 
Drupal 8
Niveau: 
Confirmé
Partager ce contenu