| <?xml version="1.0"?> |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?> |
| <!-- English Revision : 1557612 --> |
| <!-- French translation : Lucien GENTIS --> |
| <!-- Reviewed by : Vincent Deffontaines --> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <modulesynopsis metafile="mod_authz_host.xml.meta"> |
| |
| <name>mod_authz_host</name> |
| <description>Autorisations de groupe basées sur l'hôte (nom ou adresse |
| IP)</description> |
| <status>Base</status> |
| <sourcefile>mod_authz_host.c</sourcefile> |
| <identifier>authz_host_module</identifier> |
| <compatibility>Disponible depuis les versions 2.1 et supérieures |
| d'Apache</compatibility> |
| |
| <summary> |
| <p>Les directives fournies par le module |
| <module>mod_authz_host</module> s'utilisent dans des sections |
| <directive module="core" type="section">Directory</directive>, |
| <directive module="core" type="section">Files</directive>, et |
| <directive module="core" type="section">Location</directive>, ou des |
| fichiers |
| <code><a href="core.html#accessfilename">.htaccess</a> </code> 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 <a href="../env.html">variables |
| d'environnement</a>. Les directives <directive |
| module="mod_authz_host">Allow</directive> et <directive |
| module="mod_authz_host">Deny</directive> permettent de spécifier |
| quels clients sont ou ne sont pas autorisés à accéder au serveur, |
| alors que la directive <directive |
| module="mod_authz_host">Order</directive> définit le statut d'accès |
| par défaut, et détermine la manière dont les directives <directive |
| module="mod_authz_host">Allow</directive> et <directive |
| module="mod_authz_host">Deny</directive> vont interagir.</p> |
| |
| <p>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 <directive module="core">Satisfy</directive> |
| permet de déterminer la manière dont ces deux méthodes de |
| restriction interagissent.</p> |
| |
| <p>En général, les directives de restriction d'accès s'appliquent à |
| toutes les méthodes d'accès (<code>GET</code>, <code>PUT</code>, |
| <code>POST</code>, 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 |
| <directive module="core" type="section">Limit</directive>.</p> |
| </summary> |
| |
| <seealso><directive module="core">Satisfy</directive></seealso> |
| <seealso><directive module="core">Require</directive></seealso> |
| |
| |
| <directivesynopsis> |
| <name>Allow</name> |
| <description>Contrôles quels hôtes peuvent accéder à une certaine zone |
| du serveur</description> |
| <syntax> Allow from all|<var>hôte</var>|env=[!]<var>var-env</var> |
| [<var>hôte</var>|env=[!]<var>var-env</var>] ...</syntax> |
| <contextlist><context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>Limit</override> |
| <compatibility>Le support de la négation de env=<var>env-variable</var> |
| est assuré depuis la version 2.2.10 du serveur HTTP Apache</compatibility> |
| |
| <usage> |
| <p>La directive <directive>Allow</directive> 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.</p> |
| |
| <p>Le premier argument de cette directive est toujours |
| <code>from</code>. Les arguments suivants peuvent se présenter sous |
| trois formes. Si <code>Allow from all</code> est spécifié, tous les |
| hôtes ont l'autorisation d'accès, sauf si la configuration des |
| directives <directive module="mod_authz_host">Deny</directive> et |
| <directive module="mod_authz_host">Order</directive> 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 <var>hôte</var> sous les formes |
| suivantes :</p> |
| |
| <dl> |
| <dt>Un nom de domaine, éventuellement partiel</dt> |
| |
| <dd> |
| <example><title>Exemple :</title> |
| Allow from apache.org<br /> |
| Allow from .net exemple.edu |
| </example> |
| <p>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 à <code>foo.apache.org</code>, |
| mais pas à <code>fooapache.org</code>. 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 |
| <directive module="core">HostnameLookups</directive>. 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.</p></dd> |
| |
| <dt>Une adresse IP complète</dt> |
| |
| <dd> |
| <example><title>Exemple :</title> |
| Allow from 10.1.2.3<br /> |
| Allow from 192.168.1.104 192.168.1.205 |
| </example> |
| <p>L'adresse IP d'un hôte qui a l'autorisation d'accès</p></dd> |
| |
| <dt>Une adresse IP partielle</dt> |
| |
| <dd> |
| <example><title>Exemple :</title> |
| Allow from 10.1<br /> |
| Allow from 10 172.20 192.168.2 |
| </example> |
| <p>Les 1 à 3 premiers octets d'une adresse IP, pour référencer un |
| sous-réseau.</p></dd> |
| |
| <dt>Une paire réseau/masque de sous-réseau</dt> |
| |
| <dd> |
| <example><title>Exemple :</title> |
| Allow from 10.1.0.0/255.255.0.0 |
| </example> |
| <p>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.</p></dd> |
| |
| <dt>Une spécification CIDR réseau/nnn</dt> |
| |
| <dd> |
| <example><title>Exemple :</title> |
| Allow from 10.1.0.0/16 |
| </example> |
| <p>Identique au cas précédent, mais le masque de sous-réseau se |
| compose des nnn bits de poids forts.</p></dd> |
| </dl> |
| |
| <p>Notez que les trois derniers exemples référencent exactement le |
| même ensemble d'hôtes.</p> |
| |
| <p>On peut spécifier des adresses et sous-réseaux IPv6 de la manière |
| suivante :</p> |
| |
| <example> |
| Allow from 2001:db8::a00:20ff:fea7:ccea<br /> |
| Allow from 2001:db8::a00:20ff:fea7:ccea/10 |
| </example> |
| |
| |
| |
| <p>Le troisième format d'arguments de la directive |
| <directive>Allow</directive> permet de contrôler l'accès au |
| serveur en fonction de l'existence d'une <a |
| href="../env.html">variable d'environnement</a>. Lorsque |
| <code>Allow from |
| env=<var>var-env</var></code> est spécifié, la |
| requête est autorisée si la variable d'environnement |
| <var>var-env</var> existe. Lorsque <code>Allow from |
| env=!<var>var-env</var></code> est spécifié, la requête est |
| autorisée à accéder si la variable d'environnement |
| <var>var-env</var> 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 <module>mod_setenvif</module>. On |
| peut ainsi utiliser cette directive pour contrôler l'accès en |
| fonction de certains en-têtes comme <code>User-Agent</code> (type de |
| navigateur), <code>Referer</code>, etc...</p> |
| |
| <example><title>Exemple :</title> |
| SetEnvIf User-Agent ^KnockKnock/2\.0 laisse_moi_entrer<br /> |
| <Directory /docroot><br /> |
| <indent> |
| Order Deny,Allow<br /> |
| Deny from all<br /> |
| Allow from env=laisse_moi_entrer<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <p>Dans cet exemple, les navigateurs dont la chaîne de description |
| de l'en-tête user-agent commence par <code>KnockKnock/2.0</code> se |
| verront accorder l'accès, alors que tous les autres se le verront |
| refuser.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>Deny</name> |
| <description>Détermine quels hôtes ont l'accès au serveur |
| refusé</description> |
| <syntax> Deny from all|<var>hôte</var>|env=[!]<var>var-env</var> |
| [<var>hôte</var>|env=[!]<var>var-env</var>] ...</syntax> |
| <contextlist><context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>Limit</override> |
| |
| <usage> |
| <p>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 |
| <directive>Deny</directive> sont identiques à ceux de la directive |
| <directive module="mod_authz_host">Allow</directive>..</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>Order</name> |
| <description>Détermine le statut d'accès par défaut et l'ordre dans |
| lequel les directives <directive>Allow</directive> et |
| <directive>Deny</directive> sont évaluées.</description> |
| <syntax> Order <var>ordre</var></syntax> |
| <default>Order Deny,Allow</default> |
| <contextlist><context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>Limit</override> |
| |
| <usage> |
| |
| <p>La directive <directive>Order</directive>, utilisée avec les |
| directives <directive module="mod_authz_host">Allow</directive> et |
| <directive module="mod_authz_host">Deny</directive>, fournit un |
| système de contrôle d'accès en trois passes. La première passe |
| traite soit toutes les directives <directive |
| module="mod_authz_host">Allow</directive>, soit toutes les |
| directives <directive module="mod_authz_host">Deny</directive>, |
| comme spécifié par la directive <directive>Order</directive>. La |
| seconde passe traite le reste des directives (<directive |
| module="mod_authz_host">Deny</directive> ou <directive |
| module="mod_authz_host">Allow</directive>). La troisième passe |
| s'applique à toutes les requêtes auxquelles aucune des deux |
| premières passes ne s'appliquent.</p> |
| |
| <p>Notez que toutes les directives <directive |
| module="mod_authz_host">Allow</directive> et <directive |
| module="mod_authz_host">Deny</directive> 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 <directive |
| module="mod_authz_host">Allow</directive> sont traitées comme un |
| groupe, toutes les directives <directive |
| module="mod_authz_host">Deny</directive> comme un autre, et le |
| statut d'accès par défaut est indépendant.</p> |
| |
| <p><em>Ordre</em> peut être soit :</p> |
| |
| <dl> |
| <dt><code>Allow,Deny</code></dt> |
| |
| <dd>Toutes les directives <directive |
| module="mod_authz_host">Allow</directive> 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 <directive |
| module="mod_authz_host">Deny</directive>. Si l'une au moins |
| convient, le requête est rejetée. Enfin, toute requête à laquelle |
| ne convient aucune directive <directive |
| module="mod_authz_host">Allow</directive> ou <directive |
| module="mod_authz_host">Deny</directive> sera rejetée par défaut.</dd> |
| |
| <dt><code>Deny,Allow</code></dt> |
| |
| <dd>Toutes les directives <directive |
| module="mod_authz_host">Deny</directive> sont évaluées en premier |
| ; si l'une au moins |
| convient, le requête est rejetée, <strong>sauf</strong> si une |
| directive <directive module="mod_authz_host">Allow</directive> |
| convient aussi. Enfin, |
| toute requête à laquelle |
| ne convient aucune directive <directive |
| module="mod_authz_host">Allow</directive> ou <directive |
| module="mod_authz_host">Deny</directive> aura l'autorisation |
| d'accès par défaut.</dd> |
| |
| <dt><code>Mutual-failure</code></dt> |
| |
| <dd>Cet ordre est identique à l'ordre <code>Order |
| Allow,Deny</code> qui le remplace.</dd> |
| </dl> |
| |
| <p>Les mots-clés ne doivent être séparés que par des virgules ; |
| aucun espace ne doit s'intercaler entre eux.</p> |
| |
| <table border="1"> |
| <tr> |
| <th>Directives qui conviennent</th> |
| <th>Résultat de Allow,Deny</th> |
| <th>Résultat de Deny,Allow</th> |
| </tr><tr> |
| <th>Allow seulement convient</th> |
| <td>Requête autorisée</td> |
| <td>Requête autorisée</td> |
| </tr><tr> |
| <th>Deny seulement convient</th> |
| <td>Requête rejetée</td> |
| <td>Requête rejetée</td> |
| </tr><tr> |
| <th>Aucune directive ne convient</th> |
| <td>La seconde directive par défaut: Rejet</td> |
| <td>La seconde directive par défaut: Autorisation</td> |
| </tr><tr> |
| <th>Allow & Deny conviennent</th> |
| <td>La dernière directive qui convient prend le contrôle: Rejet</td> |
| <td>La dernière directive qui convient prend le contrôle: Autorisation</td> |
| </tr> |
| </table> |
| |
| <p>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é.</p> |
| |
| <example> |
| Order Deny,Allow<br /> |
| Deny from all<br /> |
| Allow from apache.org |
| </example> |
| |
| <p>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 à <directive |
| module="mod_authz_host">Deny</directive>.</p> |
| |
| <example> |
| Order Allow,Deny<br /> |
| Allow from apache.org<br /> |
| Deny from foo.apache.org |
| </example> |
| |
| |
| <p>En revanche, si la directive <directive>Order</directive> du |
| dernier exemple a pour valeur <code>Deny,Allow</code>, 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 <code>Allow |
| from apache.org</code> est évaluée en dernier et l'emporte donc sur |
| la directive <code>Deny from foo.apache.org</code>. Tous les hôtes |
| qui ne font pas partie du domaine <code>apache.org</code> auront |
| aussi l'autorisation d'accès, car le statut d'accès par défaut est |
| défini à |
| <directive module="mod_authz_host">Allow</directive>.</p> |
| |
| <p>Même en l'absence de directives <directive |
| module="mod_authz_host">Allow</directive> et <directive |
| module="mod_authz_host">Deny</directive> associées, la présence |
| d'une directive <directive>Order</directive> peut affecter l'accès à |
| une partie du serveur, à cause de son effet sur le statut d'accès |
| par défaut. Par exemple,</p> |
| |
| <example> |
| <Directory /www><br /> |
| <indent> |
| Order Allow,Deny<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <p>interdira tout accès au répertoire <code>/www</code> car le |
| statut d'accès par défaut est défini à <directive |
| module="mod_authz_host">Deny</directive>.</p> |
| |
| <p>La directive <directive>Order</directive> 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 <directive |
| module="mod_authz_host">Allow</directive> ou <directive |
| module="mod_authz_host">Deny</directive> apparaissant dans une |
| section <directive module="core" type="section">Location</directive> |
| sera toujours évaluée après une directive <directive |
| module="mod_authz_host">Allow</directive> ou <directive |
| module="mod_authz_host">Deny</directive> apparaissant dans une |
| section <directive module="core" |
| type="section">Directory</directive> ou un fichier |
| <code>.htaccess</code>, sans tenir compte de la définition de la |
| directive <directive>Order</directive>. Pour plus de détails sur la |
| fusion des sections de configuration, voir la documentation <a |
| href="../sections.html">Comment fonctionnent les sections Directory, |
| Location et Files</a>.</p> |
| </usage> |
| </directivesynopsis> |
| |
| </modulesynopsis> |