Serveur HTTP Apache Version 2.4

| Description: | Autorisations de groupe à base de nom d'hôte (nom ou adresse IP) | 
|---|---|
| Statut: | Extension | 
| Identificateur de Module: | access_compat_module | 
| Fichier Source: | mod_access_compat.c | 
| Compatibilité: | Disponible dans la version 2.3 du serveur HTTP Apache
à des fins de compatibilité
avec les précédentes versions d'Apache httpd 2.x. Les directives fournies par
ce module sont devenues obsolètes depuis la refonte d'authz. Voir mod_authz_host | 
Les directives fournies par le module
    mod_access_compat s'utilisent dans les sections
    <Directory>,
    <Files> et
    <Location>, ainsi
    que dans les fichiers .htaccess et permettent
    de contrôler l'accès à certaines parties du serveur. On peut
    contrôler cet accès en fonction du nom d'hôte du client, de son
    adresse IP ou d'autres caractéristiques de la requête, telles
    qu'elles sont enregistrées dans les 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 interagissent
    entre elles.
Les restrictions d'accès à base de nom d'hôte et
    l'authentification à base de mot de passe peuvent être implémentées
    simultanément. Dans ce cas, on utilise la directive Satisfy pour déterminer la
    manière dont ces deux modes de restrictions interagissent.
Les directives fournies par le module
      mod_access_compat sont devenues obsolètes depuis
      la refonte du module mod_authz_host. Mélanger d'anciennes
      directives comme Order, Allow ou Deny avec des nouvelles comme
      Require est techniquement
      possible mais déconseillé. En effet, mod_access_compat a
      été conçu pour supporter des configurations ne contenant que des anciennes
      directives afin de faciliter le passage à la version 2.4. Voir le document
      upgrading pour plus de détails.
      
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 restreindre
    certaines méthodes, alors que les autres méthodes ne se verront
    imposée aucune restriction, en regroupant les directives à
    l'intérieur d'une section <Limit>.
Lorsqu'une directive fournie par ce module est utilisée dans une nouvelle section de configuration, cette dernière n'hérite d'aucune directive définie dans une section précédente.
| Description: | Spécifie quels hôtes peuvent accéder à une certaine zone du serveur | 
|---|---|
| Syntaxe: |  Allow from all|hôte|env=[!]variable
d'environnement
[hôte|env=[!]variable d'environnement] ... | 
| Contexte: | répertoire, .htaccess | 
| Surcharges autorisées: | Limit | 
| Statut: | Extension | 
| Module: | mod_access_compat | 
La directive Allow permet de définir quels
    hôtes ont le droit d'accéder à une certaine partie du serveur. On
    peut contrôler l'accès par nom d'hôte, adresse IP, intervalle
    d'adresses IP, ou toute autre caractéristique de la requête client
    enregistrée dans les variables d'environnement.
Le premier argument de cette directive est toujours
    from. Les arguments suivants peuvent prendre trois
    formes différentes. Si Allow from all est spécifié,
    tout hôte se voit accordé l'accès, en tenant compte des directives
    Deny et Order comme décrit plus loin.
    Pour ne permettre l'accès au serveur qu'à un hôte ou un groupe
    d'hôtes particuliers, on peut spécifier un nom d'hôte sous
    une des formes suivantes :
Allow from example.org Allow from .net example.edu
Les hôtes dont les noms correspondent ou se terminent par la
      chaîne spécifiée ont l'autorisation d'accès. Seules les
      composantes entières du nom d'hôte doivent correspondre ; ainsi,
      dans l'exemple ci-dessus, foo.example.org
      correspondra, mais fooexample.org ne conviendra pas.
      Avec cette configuration, Apache httpd va effectuer une double recherche
      DNS sur l'adresse IP du client, sans tenir compte de la
      définition de la directive HostnameLookups. Tout d'abord, une
      recherche DNS inverse sur l'adresse IP est effectuée pour
      déterminer le nom d'hôte associé, puis une recherche directe sur
      le nom d'hôte est effectuée afin de s'assurer qu'il correspond
      bien à l'adresse IP originale. L'accès ne sera accordé que si le
      nom d'hôte correspond et si les recherches DNS inverse et directe
      concordent.
Allow from 10.1.2.3 Allow from 192.168.1.104 192.168.1.205
L'adresse IP d'un hôte auquel on a accordé l'accès
Allow from 10.1 Allow from 10 172.20 192.168.2
De un à trois des premiers octets d'une adresse IP, afin de restreindre l'accès à un sous-réseau.
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 une définition plus précise de la restriction d'accès imposée à un sous-réseau.
Allow from 10.1.0.0/16
Identique au cas précédent, mis à part que le masque est constitué des nnn bits de poids fort.
Notez que les trois derniers exemples désignent 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'argument 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=variable d'environnement est spécifié, la
    requête est autorisée si la variable d'environnement variable
    d'environnement existe. En revanche, lorsque Allow from
    env=!env-variable est spécifié, la
    requête est autorisée si la variable d'environnement variable
    d'environnement n'existe pas. Le serveur permet de définir
    avec souplesse des variables d'environnement en se basant sur les
    caractéristiques de la requête client et en utilisant les directives
    fournies par le module mod_setenvif. Ainsi, on peut
    utiliser la directive Allow pour permettre
    l'accès en fonction de paramètres comme le User-Agent
    (type de navigateur) des clients, le Referer, ou
    d'autres champs d'en-tête de la requête HTTP.
SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
<Directory "/docroot">
    Order Deny,Allow
    Deny from all
    Allow from env=let_me_in
</Directory>
    Dans cet exemple, les navigateurs dont la chaîne user-agent
    commence par KnockKnock/2.0 se verront accorder
    l'accès, alors que tous les autres seront rejetés.
Lorsqu'une directive fournie par ce module est utilisée dans une nouvelle section de configuration, cette dernière n'hérite d'aucune directive définie dans une section précédente.
| Description: | Définit quels hôtes ne sont pas autorisés à accéder au serveur | 
|---|---|
| Syntaxe: |  Deny from all|hôte|env=[!]variable
d'environnement
[hôte|env=[!]variable d'environnement] ... | 
| Contexte: | répertoire, .htaccess | 
| Surcharges autorisées: | Limit | 
| Statut: | Extension | 
| Module: | mod_access_compat | 
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 aux arguments de la
    directive Allow.
| Description: | Définit le statut d'accès par défaut et l'ordre dans lequel
les directives AllowetDenysont évaluées. | 
|---|---|
| Syntaxe: |  Order ordre | 
| Défaut: | Order Deny,Allow | 
| Contexte: | répertoire, .htaccess | 
| Surcharges autorisées: | Limit | 
| Statut: | Extension | 
| Module: | mod_access_compat | 
La directive Order, associée aux
    directives Allow
    et Deny,
    implémente un système de contrôle d'accès en trois passes. Au cours
    de la première passe, ce sont soit toutes les directives Allow, soit toutes les
    directives Deny qui sont traitées, selon
    la définition de la directive Order. Le reste des
    directives (Deny
    ou Allow) est
    traité au cours de la seconde passe. La troisième passe s'applique à
    toutes les requêtes qui ne sont concernées par aucune des deux
    premières passes.
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
    correspond est utilisée. La dernière directive qui correspond
    s'applique ( à la différence là encore d'un pare-feu classique). De
    plus, l'ordre dans lequel les lignes apparaissent dans le fichier de
    configuration n'a pas d'incidence -- toutes les lignes Allow sont considérées comme
    un groupe, toutes les lignes Deny comme un autre, et le
    statut par défaut a son existence propre.
Ordre peut être :
Allow,DenyAllow sont évaluées ; au
      moins une d'entre elles doit correspondre, sinon la requête est
      rejetée. Ensuite, toutes les directives Deny sont évaluées. Si au
      moins l'une d'entre elles correspond, la requête est rejetée.
      Enfin, toute requête qui ne correspond à aucune directive
      Allow ou
      Deny est rejetée
      par défaut.Deny,AllowDeny sont évaluées ; Si au
      moins une d'entre elles correspond, la requête est rejetée,
      à moins qu'elle corresponde aussi à une directive
      Allow. Toute
      requête qui ne correspond à aucune directive Allow ou Deny est autorisée.Mutual-failureAllow,Deny et
      est devenu de ce fait obsolète.Les mots-clés ne peuvent être séparés que par des virgules ; aucun espace ne doit s'intercaler entre eux.
| Match | Résultat Allow,Deny | Résultat Deny,Allow | 
|---|---|---|
| Correspond à Allow seulement | Requête autorisée | Requête autorisée | 
| Correspond à Deny seulement | Requête rejetée | Requête rejetée | 
| Aucune correspondance | Par défaut la seconde directive : rejet | Par défaut la seconde directive : autorisation | 
| Correspond à Allow & Deny | La dernière correspondance l'emporte : rejet | La dernière correspondance l'emporte : autorisation | 
Dans cet exemple, tous les hôtes du domaine example.org ont l'autorisation d'accès ; tous les autres voient leur accès refusé.
Order Deny,Allow Deny from all Allow from example.org
Dans l'exemple suivant, tous les hôtes du domaine example.org ont
    l'autorisation d'accès, sauf ceux du sous-domaine foo.example.org qui
    voient leur accès refusé. Tous les hôtes qui ne sont pas dans le
    domaine example.org sont rejetés car le statut par défaut est positionné
    sur Deny, et consiste donc en un
    refus d'accès.
Order Allow,Deny Allow from example.org Deny from foo.example.org
Par contre, si la valeur de la directive
    Order, dans l'exemple précédent, est
    Deny,Allow, tout le monde a l'autorisation d'accès.
    Ceci est dû au fait que Allow from example.org sera
    évalué en dernier, sans tenir compte de l'ordre réel dans lequel les
    directives apparaissent dans le fichier de configuration, et va
    l'emporter sur Deny from foo.example.org. Tout hôte qui
    n'est pas dans le domaine example.org aura aussi
    l'autorisation d'accès car le statut par défaut est positionné sur
    Allow et constitue donc une
    autorisation d'accès.
La présence d'une directive Order peut
    affecter le contrôle d'accès à une partie du serveur même en
    l'abscence de directives Allow et Deny associées, à cause de
    son influence sur le statut par défaut. Par exemple,
<Directory "/www">
    Order Allow,Deny
</Directory>
    va interdire tout accès au répertoire /www à cause
    du statut d'accès par défaut qui est défini à Deny.
La directive Order ne contrôle l'ordre
    dans lequel sont traitées les directives d'accès qu'au cours de
    chaque phase du traitement de la configuration du serveur. Ceci
    implique, par exemple, qu'une directive Allow ou Deny située dans une section
    <Location> sera
    toujours évaluée après une directive Allow ou Deny située dans une section
    <Directory> ou un
    fichier .htaccess, sans tenir compte de la
    définition de la directive Order. Pour plus
    de détails à propos de la fusion des sections de configuration, voir
    le document Comment fonctionnent les sections Directory,
    Location et Files.
Lorsqu'une directive fournie par ce module est utilisée dans une nouvelle section de configuration, cette dernière n'hérite d'aucune directive définie dans une section précédente.
| Description: | Interaction entre le contrôle d'accès en fonction de l'hôte et l'authentification utilisateur | 
|---|---|
| Syntaxe: | Satisfy Any|All | 
| Défaut: | Satisfy All | 
| Contexte: | répertoire, .htaccess | 
| Surcharges autorisées: | AuthConfig | 
| Statut: | Extension | 
| Module: | mod_access_compat | 
| Compatibilité: | Affecté par <Limit>et<LimitExcept>à partir de la version
2.0.51 | 
Politique d'accès dans le cas où on utilise à la fois Allow et Require. L'argument est soit
    All, soit Any. L'utilisation de cette
    directive n'a de sens que si l'accès à une zone particulière du
    serveur est restreinte par utilisateur/mot de passe et en fonction
    de l'adresse IP de l'hôte client. Dans ce cas, par
    défaut (All), le client doit satisfaire à la
    restriction d'adresse, et fournir un couple
    utilisateur/mot de passe valide. Avec l'argument Any,
    le client se verra accorder l'accès s'il satisfait à la restriction
    d'adresse ou fournit un couple utilisateur/mot de passe valide. On
    peut utiliser cette dernière définition pour restreindre l'accès à
    une zone par mot de passe, mais accorder l'accès aux clients
    possédant certaines adresses IP sans qu'ils aient à fournir de mot
    de passe.
Par exemple, si vous souhaitez que les utilisateurs de votre réseau accèdent à une zone de votre site web sans restriction, mais que l'accès à cette zone nécessite un mot de passe pour les autres utilisateurs, vous pouvez utiliser une configuration du style :
Require valid-user Allow from 192.168.1 Satisfy Any
    Une autre utilisation fréquente de la directive
    Satisfy est l'allègement des restrictions
    d'accès à un sous-répertoire par rapport aux restrictions d'accès au
    répertoire parent :
    
<Directory "/var/www/private">
    Require valid-user
</Directory>
<Directory "/var/www/private/public">
    Allow from all
    Satisfy Any
</Directory>
    Dans l'exemple ci-dessus, l'accès au répertoire
    /var/www/private nécessitera une authentification,
    alors que l'accès au répertoire /var/www/private/public
    sera accordé sans restriction.
Depuis la version 2.0.51, les directives
    Satisfy peuvent être restreintes à certaines
    méthodes particulières à l'aide des sections <Limit> et <LimitExcept>.
Lorsqu'une directive fournie par ce module est utilisée dans une nouvelle section de configuration, cette dernière n'hérite d'aucune directive définie dans une section précédente.