<-
Apache > Serveur HTTP > Documentation > Version 2.2 > Modules

A savoir

Ce document concerne une version ancienne (2.2) du serveur HTTP Apache. La version actuelle est documentée ici. Si vous n'avez pas encore effectué la mise è jour, veuillez suivre ce lien pour plus d'informations.

Pour consulter la version actuelle de ce document, vous pouvez suivre ce lien.

Module Apache mod_authz_host

Langues Disponibles:  en  |  fr  |  ja  |  ko 

Description:Autorisations de groupe basées sur l'hôte (nom ou adresse IP)
Statut:Base
Identificateur de Module:authz_host_module
Fichier Source:mod_authz_host.c
Compatibilité:Disponible depuis les versions 2.1 et supérieures d'Apache

Sommaire

Les directives fournies par le module mod_authz_host s'utilisent dans des sections <Directory>, <Files>, et <Location>, ou des fichiers .htaccess pour contrôler l'accès à certaines zones du serveur. Le contrôle d'accès peut être effectué en fonction du nom d'hôte, de l'adresse IP, ou d'autres caractéristiques de la requête client, telles qu'elles sont enregistrées dans des variables d'environnement. Les directives Allow et Deny permettent de spécifier quels clients sont ou ne sont pas autorisés à accéder au serveur, alors que la directive Order définit le statut d'accès par défaut, et détermine la manière dont les directives Allow et Deny vont interagir.

Les restrictions d'accès basées sur l'hôte et l'authentification à base de mots de passe peuvent être utilisées conjointement. Dans ce cas, la directive Satisfy permet de déterminer la manière dont ces deux méthodes de restriction interagissent.

En général, les directives de restriction d'accès s'appliquent à toutes les méthodes d'accès (GET, PUT, POST, etc...). C'est d'ailleurs ce que l'on souhaite dans la plupart des cas. Il est cependant possible de ne restreindre l'accès que pour certaines méthodes, tout en laissant les autres méthodes sans protection, en plaçant les directives dans une section <Limit>.

Directives

Voir aussi

top

Directive Allow

Description:Contrôles quels hôtes peuvent accéder à une certaine zone du serveur
Syntaxe: Allow from all|hôte|env=[!]var-env [hôte|env=[!]var-env] ...
Contexte:répertoire, .htaccess
AllowOverride:Limit
Statut:Base
Module:mod_authz_host
Compatibilité:Le support de la négation de env=env-variable est assuré depuis la version 2.2.10 du serveur HTTP Apache

La directive Allow permet de contrôler quels hôtes peuvent accéder à une zone du serveur. On peut contrôler l'accès en fonction du nom d'hôte, de l'adresse IP, d'un intervalle d'adresses IP, ou d'autres caractéristiques de la requête client enregistrées dans des variables d'environnement.

Le premier argument de cette directive est toujours from. Les arguments suivants peuvent se présenter sous trois formes. Si Allow from all est spécifié, tous les hôtes ont l'autorisation d'accès, sauf si la configuration des directives Deny et Order apporte une restriction quelconque, comme décrit plus loin. Afin de n'accorder l'accès au serveur qu'à certains hôtes ou groupes d'hôtes, on peut utiliser l'argument hôte sous les formes suivantes :

Un nom de domaine, éventuellement partiel

Exemple :

Allow from apache.org
Allow from .net exemple.edu

Les hôtes dont les nom correspond à la chaîne spécifiée, ou se terminant par elle, sont autorisés à accéder. Seuls les éléments complets du nom de domaine sont comparés, si bien que l'exemple ci-dessus correspondra à foo.apache.org, mais pas à fooapache.org. Avec cette configuration, Apache va effectuer une double recherche DNS sur l'adresse IP du client, sans tenir compte de la définition de la directive HostnameLookups. Il effectue tout d'abord une recherche DNS inverse sur l'adresse IP afin de déterminer le nom d'hôte associé, puis une recherche directe sur le nom d'hôte pour vérifier s'il correspond bien à l'adresse IP originale. L'accès ne sera accordé que si le nom d'hôte correspond à la chaîne spécifiée et si les recherches DNS inverse et directe produisent un résultat cohérent.

Une adresse IP complète

Exemple :

Allow from 10.1.2.3
Allow from 192.168.1.104 192.168.1.205

L'adresse IP d'un hôte qui a l'autorisation d'accès

Une adresse IP partielle

Exemple :

Allow from 10.1
Allow from 10 172.20 192.168.2

Les 1 à 3 premiers octets d'une adresse IP, pour référencer un sous-réseau.

Une paire réseau/masque de sous-réseau

Exemple :

Allow from 10.1.0.0/255.255.0.0

Un réseau a.b.c.d, et un masque de sous-réseau w.x.y.z. pour la restriction plus fine d'un sous-réseau.

Une spécification CIDR réseau/nnn

Exemple :

Allow from 10.1.0.0/16

Identique au cas précédent, mais le masque de sous-réseau se compose des nnn bits de poids forts.

Notez que les trois derniers exemples référencent exactement le même ensemble d'hôtes.

On peut spécifier des adresses et sous-réseaux IPv6 de la manière suivante :

Allow from 2001:db8::a00:20ff:fea7:ccea
Allow from 2001:db8::a00:20ff:fea7:ccea/10

Le troisième format d'arguments de la directive Allow permet de contrôler l'accès au serveur en fonction de l'existence d'une variable d'environnement. Lorsque Allow from env=var-env est spécifié, la requête est autorisée si la variable d'environnement var-env existe. Lorsque Allow from env=!var-env est spécifié, la requête est autorisée à accéder si la variable d'environnement var-env n'existe pas. Le serveur fournit la possibilité de définir des variables d'environnement avec une grande souplesse en fonction des caractéristiques de la requête client à l'aide des directives fournies par le module mod_setenvif. On peut ainsi utiliser cette directive pour contrôler l'accès en fonction de certains en-têtes comme User-Agent (type de navigateur), Referer, etc...

Exemple :

SetEnvIf User-Agent ^KnockKnock/2\.0 laisse_moi_entrer
<Directory /docroot>
Order Deny,Allow
Deny from all
Allow from env=laisse_moi_entrer
</Directory>

Dans cet exemple, les navigateurs dont la chaîne de description de l'en-tête user-agent commence par KnockKnock/2.0 se verront accorder l'accès, alors que tous les autres se le verront refuser.

top

Directive Deny

Description:Détermine quels hôtes ont l'accès au serveur refusé
Syntaxe: Deny from all|hôte|env=[!]var-env [hôte|env=[!]var-env] ...
Contexte:répertoire, .htaccess
AllowOverride:Limit
Statut:Base
Module:mod_authz_host

Cette directive permet de restreindre l'accès au serveur en fonction du nom d'hôte, de l'adresse IP, ou de variables d'environnement. Les arguments de la directive Deny sont identiques à ceux de la directive Allow..

top

Directive Order

Description:Détermine le statut d'accès par défaut et l'ordre dans lequel les directives Allow et Deny sont évaluées.
Syntaxe: Order ordre
Défaut:Order Deny,Allow
Contexte:répertoire, .htaccess
AllowOverride:Limit
Statut:Base
Module:mod_authz_host

La directive Order, utilisée avec les directives Allow et Deny, fournit un système de contrôle d'accès en trois passes. La première passe traite soit toutes les directives Allow, soit toutes les directives Deny, comme spécifié par la directive Order. La seconde passe traite le reste des directives (Deny ou Allow). La troisième passe s'applique à toutes les requêtes auxquelles aucune des deux premières passes ne s'appliquent.

Notez que toutes les directives Allow et Deny sont traitées, à la différence d'un pare-feu classique, où seule la première règle qui convient est traitée. La dernière directive qui convient l'emporte sur les autres (à la différence là aussi d'un pare-feu classique). De plus, l'ordre dans lequel les lignes apparaissent dans les fichiers de configuration n'a aucune importance -- toutes les directives Allow sont traitées comme un groupe, toutes les directives Deny comme un autre, et le statut d'accès par défaut est indépendant.

Ordre peut être soit :

Allow,Deny
Toutes les directives Allow sont évaluées en premier ; l'une d'elles au moins doit convenir, faute de quoi la requête sera rejetée. Vient ensuite le tour des directives Deny. Si l'une au moins convient, le requête est rejetée. Enfin, toute requête à laquelle ne convient aucune directive Allow ou Deny sera rejetée par défaut.
Deny,Allow
Toutes les directives Deny sont évaluées en premier ; si l'une au moins convient, le requête est rejetée, sauf si une directive Allow convient aussi. Enfin, toute requête à laquelle ne convient aucune directive Allow ou Deny aura l'autorisation d'accès par défaut.
Mutual-failure
Cet ordre est identique à l'ordre Order Allow,Deny qui le remplace.

Les mots-clés ne doivent être séparés que par des virgules ; aucun espace ne doit s'intercaler entre eux.

Directives qui conviennent Résultat de Allow,Deny Résultat de Deny,Allow
Allow seulement convient Requête autorisée Requête autorisée
Deny seulement convient Requête rejetée Requête rejetée
Aucune directive ne convient La seconde directive par défaut: Rejet La seconde directive par défaut: Autorisation
Allow & Deny conviennent La dernière directive qui convient prend le contrôle: Rejet La dernière directive qui convient prend le contrôle: Autorisation

Dans l'exemple suivant, tous les hôtes du domaine apache.org ont l'autorisation d'accès ; tous les autres hôtes voient leur accès refusé.

Order Deny,Allow
Deny from all
Allow from apache.org

Dans l'exemple suivant, tous les hôtes du domaine apache.org ont l'autorisation d'accès, sauf les hôtes du sous-domaine foo.apache.org qui voient leur accès refusé. Tous les hôtes qui ne font pas partie du domaine apache.org voient leur accès refusé car le statut d'accès par défaut est défini à Deny.

Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org

En revanche, si la directive Order du dernier exemple a pour valeur Deny,Allow, tous les hôtes auront l'autorisation d'accès. Ceci est dû au fait que l'on ne tient pas compte de l'ordre dans lequel apparaissent les directives dans le fichier de configuration, et que la directive Allow from apache.org est évaluée en dernier et l'emporte donc sur la directive Deny from foo.apache.org. Tous les hôtes qui ne font pas partie du domaine apache.org auront aussi l'autorisation d'accès, car le statut d'accès par défaut est défini à Allow.

Même en l'absence de directives Allow et Deny associées, la présence d'une directive Order peut affecter l'accès à une partie du serveur, à cause de son effet sur le statut d'accès par défaut. Par exemple,

<Directory /www>
Order Allow,Deny
</Directory>

interdira tout accès au répertoire /www car le statut d'accès par défaut est défini à Deny.

La directive Order ne contrôle l'ordre de traitement des directives d'accès qu'à l'intérieur de chaque phase du traitement de la configuration du serveur. Ceci implique, par exemple, qu'une directive Allow ou Deny apparaissant dans une section <Location> sera toujours évaluée après une directive Allow ou Deny apparaissant dans une section <Directory> ou un fichier .htaccess, sans tenir compte de la définition de la directive Order. Pour plus de détails sur la fusion des sections de configuration, voir la documentation Comment fonctionnent les sections Directory, Location et Files.

Langues Disponibles:  en  |  fr  |  ja  |  ko 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.