Serveur Apache HTTP Version 2.2

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.
| 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 | 
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>.
| 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 :
        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.
        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
        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.
        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.
        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...
      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.
| 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..
| 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,DenyAllow 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,AllowDeny 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-failureOrder
      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.