TL;DR : Le serveur Apache est dorénavant livré en version 2.4 dans les distributions modernes comme Debian 10. Tout apache récent devrait se passer de directives de type allow from [...]  ou deny from [...]  car elles ont été supplantées depuis longtemps par des directives de type Require allow from [...]  ou Require deny from [...]. Je conseille de désactiver le module apache mod_access_compat  et de vous débarrasser de sa syntaxe dépréciée au profit de mod_authz_host.

Sommaire

État des lieux access_compat et authz_host

Si je donne l’extrait de configuration Apache suivant (déprécié) qui utilise mod_access_compat avec des directives comme deny from all  :

Est-ce que cela ressemble à quelque chose sur votre serveur ? Si oui, il est temps de vous en débarrasser au profit de la syntaxe suivante utilisant mod_authz_host :

Pourquoi opérer un tel changement ?

  • Tout d’abord parce que c’est la documentation Apache officielle qui le dit ;
  • Ensuite, parce que le mélange des deux entraîne des comportements imprévisibles (voir mes déboires à ce sujet) ;
  • Pour finir, parce que la nouvelle syntaxe est meilleure car elle unifie les contrôles d’accès et les méthodes d’authentification selon une même logique comme avec auth_basic et auth_digest.

Vous êtes convaincus ? Allons-y !

Se passer de access_compat

Pour commencer je vous propose de désactiver le module apache access_compat grâce à a2dismod access_compat  suivi d’un rechargement de Apache service apache2 reload . Préalablement il faudra retirer toutes les lignes utilisant la syntaxe dépréciée car elle ne sera plus supportée par votre serveur.

Attention, le rechargement de Apache ne sera pas possible tant que vos fichiers de configuration ne seront pas nettoyés de la syntaxe dépréciée.

Mettre en place authz_host

Le module authz_host et sa dépendance authz_core sont activés pour toute installation récente de Apache, il ne sera pas nécessaire de les activer.

Pour mettre à jour vos fichiers de configuration avec la nouvelle syntaxe je vous propose de vous fier à l’article suivant qui propose un tableau de conversions.

Pour aller plus loin…

Un exemple de configuration adaptative

Certains framework comme Symfony ou certains modules de Prestashop déploient une configuration capable de s’adapter à l’existant sur le serveur d’hébergement.

Exemple ici avec l’interdiction du fichier composer.lock. Si le module mod_authz_core  est absent on utilise la syntaxe Apache 2.2 ou Apache 2.4 avec access_compat . Si le module mod_authz_core  est présent on l’utilise.

Un exemple d’utilisation mixte de mod_authz_core avec auth_digest

La configuration qui suit nécessite soit d’avoir une IP amie, soit de connaître le mot de passe de l’authentification auth_digest.

Vous pouvez voir que mod_authz_core  et auth_digest  utilisent une même logique, une même syntaxe et que les règles d’accès mixtes sont ainsi très proprement configurées.