| <?xml version="1.0"?> |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?> |
| <!-- English Revision : 784558 --> |
| <!-- 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_remoteip.xml.meta"> |
| |
| <name>mod_remoteip</name> |
| <description>Remplace l'adresse IP et le nom d'hôte apparents du client |
| pour la requête par l'adresse IP présentée par un mandataire ou un |
| répartiteur de charge via les en-têtes de la requête. |
| </description> |
| |
| <status>Base</status> |
| <sourcefile>mod_remoteip.c</sourcefile> |
| <identifier>remoteip_module</identifier> |
| |
| <summary> |
| <p>Ce module permet de traiter l'hôte distant qui a initié la |
| requête en tant qu'hôte distant original du point de vue de httpd à |
| des fins d'autorisation et de connexion, même si cet hôte distant se |
| trouve derrière un répartiteur de charge, un serveur frontal, ou un |
| serveur mandataire.</p> |
| |
| <p>Le module remplace les adresse IP et nom d'hôte apparents |
| distants (du client) pour la requête par l'adresse IP indiquée dans |
| l'en-tête de requête configuré via la directive |
| <directive>RemoteIPHeader</directive>.</p> |
| |
| <p>Une fois remplacée comme indiqué, cette adresse IP apparente est |
| utilisée pour les fonctionnalités <directive module="mod_authz_host" |
| type="section">Require host</directive> et <directive |
| module="mod_authz_host" type="section">Require ip</directive> de |
| <module>mod_authz_host</module> ; elle est aussi affichée par |
| <module>mod_status</module>, et enregistrée via les directives |
| <code>%a</code> et <code>%h</code> du module |
| <module>mod_log_config</module>. Elle permet aussi d'identifier la |
| machine en essayant de lui attribuer une identité inetd via le |
| module <module>mod_ident</module> et en fonction de la configuration |
| de la directive <directive |
| module="mod_ident">IdentityCheck</directive>.</p> |
| |
| <note type="warning">Il est essentiel de n'activer cette |
| fonctionnalité que pour les requêtes en provenance des serveurs |
| intermédiaires (mandataires, etc...) auxquels le serveur peut faire |
| confiance, car il est trivial pour le client distant d'usurper |
| l'identité d'un autre client.</note> |
| </summary> |
| |
| <seealso><module>mod_authz_host</module></seealso> |
| <seealso><module>mod_status</module></seealso> |
| <seealso><module>mod_log_config</module></seealso> |
| <seealso><module>mod_ident</module></seealso> |
| |
| <section id="processing"><title>Traitement des adresses distantes</title> |
| |
| <p>Apache identifie le client par la valeur remote_ip de la |
| connexion, et de cette valeur découlent les valeurs remote_host et |
| remote_logname de la connexion. Ces champs jouent un rôle |
| dans l'authentification, l'autorisation et la connexion, ainsi que |
| dans d'autres traitements effectués par d'autres modules |
| chargeables.</p> |
| |
| <p>mod_remoteip remplace la véritable remote_ip par la remote_ip |
| indiquée par exemple par un mandataire chaque fois que le serveur |
| effectue une évaluation du client, et réinitialise les valeurs de |
| remote_host et remote_logname afin de déclencher une nouvelle |
| requête dns ou ident sur l'adresse IP distante.</p> |
| |
| <p>Lorsque la valeur de l'en-tête comporte plusieurs adresses IP |
| distantes séparées par des virgules, celles-ci sont traitées de la |
| droite vers la gauche. Le traitement s'arrête lorsque l'adresse IP |
| distante courante n'est pas digne de confiance pour présenter |
| l'adresse IP précédente. Le champ d'en-tête est alors mis à jour de |
| façon à ne contenir que cette liste d'adresses non confirmées, ou |
| bien, si toutes les adresses IP sont dignes de confiance, cet |
| en-tête est tout bonnement supprimé de la requête.</p> |
| |
| <p>Lors du remplacement de l'adresse IP distante, le module stocke |
| la liste des hôtes intermédiaires dans un mémo |
| remoteip-proxy-ip-list, que l'on peut faire enregistrer par |
| <module>mod_log_config</module> en utilisant le symbole de format |
| <code>%{remoteip-proxy-ip-list}n</code>. Si l'administrateur doit |
| stocker ceci dans un en-tête additionnel, la même valeur peut aussi |
| être enregistrée sous la forme d'un en-tête en utilisant la |
| directive <directive>RemoteIPProxiesHeader</directive>.</p> |
| |
| <note><title>Adresses IPv4 converties au format IPv6</title> |
| Avec httpd, d'une manière générale, toute adresse IPv4 convertie au |
| format IPv6 est enregistrée sous sa forme IPv4.</note> |
| |
| <note><title>Adresses internes (privées)</title> |
| Tous les blocs d'adresses internes 10/8, 172.16/12, 192.168/16, |
| 169.254/16 and 127/8 (ainsi que les adresses IPv6 en dehors du bloc |
| public 2000::/3 block) ne sont évaluées par mod_remoteip que lorsque |
| des mandataires internes (intranet) |
| <directive>RemoteIPInternalProxy</directive> sont enregistrés.</note> |
| |
| </section> |
| |
| <directivesynopsis> |
| <name>RemoteIPHeader</name> |
| <description>Définit le champ d'en-tête qui contiendra les adresses IP |
| du client</description> |
| <syntax>RemoteIPHeader <var>en-tête</var></syntax> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>RemoteIPHeader</directive> indique à |
| <module>mod_remoteip</module> de traiter la valeur de |
| l'<var>en-tête</var> spécifié comme l'adresse IP du client, ou comme |
| une liste d'adresses IP clients intermédiaires, en fonction de la |
| configuration des directives |
| <directive>RemoteIPInternalProxy</directive> et |
| <directive>RemoteIPTrustedProxy</directive>. Si ces deux dernières |
| directives ne sont pas utilisées, <module>mod_remoteip</module> |
| traitera tout hôte présentant une valeur d'IP |
| <directive>RemoteIPHeader</directive> comme hôte de confiance.</p> |
| |
| <example><title>Exemple à usage interne (répartiteur de |
| charge)</title> |
| RemoteIPHeader X-Client-IP |
| </example> |
| |
| <example><title>Exemple dans le cas d'un mandataire</title> |
| RemoteIPHeader X-Forwarded-For |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>RemoteIPInternalProxy</name> |
| <description>Déclare les adresses IP intranet clients comme dignes de |
| confiance pour présenter la valeur RemoteIPHeader</description> |
| <syntax>RemoteIPInternalProxy |
| <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>RemoteIPInternalProxy</directive> permet |
| d'ajouter une ou plusieurs adresses (ou blocs d'adresses) auxquelles |
| on peut faire confiance pour présenter une valeur RemoteIPHeader |
| valide de l'adresse IP du client. A la différence de la directive |
| <directive>RemoteIPTrustedProxy</directive>, toute adresse IP |
| présentée dans cet en-tête, y comprises les adresses intranet |
| privées, sont considérées comme dignes de confiance lorsqu'elles |
| sont indiquées par ces mandataires.</p> |
| |
| <example><title>Exemple à usage interne (répartiteur de |
| charge)</title> |
| RemoteIPHeader X-Client-IP<br/> |
| RemoteIPTrustedProxy 10.0.2.0/24<br/> |
| RemoteIPTrustedProxy passerelle.domaine-local |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>RemoteIPInternalProxyList</name> |
| <description>Déclare les adresses IP intranet clients comme dignes de |
| confiance pour présenter la valeur RemoteIPHeader</description> |
| <syntax>RemoteIPInternalProxyList <var>nom-fichier</var></syntax> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>RemoteIPInternalProxyList</directive> |
| permet de spécifier un fichier parcouru au démarrage du serveur pour |
| construire une liste d'adresses (ou blocs d'adresses), auxquelles |
| on peut faire confiance pour présenter une valeur RemoteIPHeader |
| valide de l'adresse IP du client.</p> |
| |
| <p>Le caractère '<code>#</code>' indique une ligne de commentaires, |
| sinon, toutes les lignes séparées par un caractère <code>nouvelle |
| ligne</code> ou |
| tous les éléments d'une ligne séparés par un espace sont traités de |
| la même façon qu'avec la directive |
| <directive>RemoteIPInternalProxy</directive>.</p> |
| |
| <example><title>Exemple à usage interne (répartiteur de |
| charge)</title> |
| RemoteIPHeader X-Client-IP<br/> |
| RemoteIPTrustedProxyList conf/mandataires-de-confiance.lst |
| </example> |
| |
| <example><title>contenu de conf/mandataires-de-confiance.lst</title> |
| # Nos mandataires internes de confiance<br/> |
| 10.0.2.0/24 # Tout le monde dans le groupe de test<br/> |
| passerelle.domaine-local # Le frontal répartiteur de charge |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>RemoteIPProxiesHeader</name> |
| <description>Déclare le champ d'en-tête qui contiendra toutes les |
| adresses IP intermédiaires</description> |
| <syntax>RemoteIPProxiesHeader <var>Nom_en-tête</var></syntax> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>RemoteIPProxiesHeader</directive> permet |
| de spécifier l'en-tête dans lequel <module>mod_remoteip</module> va |
| collecter une liste de toutes les adresses IP clients intermédiaires |
| auxquelles on pourra faire confiance pour résoudre la véritable |
| adresse IP distante. Notez que les adresses intermédiaires |
| <directive>RemoteIPTrustedProxy</directive> sont enregistrées dans |
| cet en-tête, alors que toute adresse intermédiaire |
| <directive>RemoteIPInternalProxy</directive> est omise.</p> |
| |
| <example><title>Exemple</title> |
| RemoteIPHeader X-Forwarded-For<br/> |
| RemoteIPProxiesHeader X-Forwarded-By |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>RemoteIPTrustedProxy</name> |
| <description>Déclare les adresses IP intranet clients comme dignes de |
| confiance pour présenter la valeur RemoteIPHeader</description> |
| <syntax>RemoteIPTrustedProxy |
| <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>RemoteIPTrustedProxy</directive> permet |
| d'ajouter une ou plusieurs adresses, ou blocs d'adresses, auxquelles |
| on peut faire confiance pour présenter une valeur RemoteIPHeader |
| valide de l'adresse IP du client. A la différence de la directive |
| <directive>RemoteIPInternalProxy</directive>, toutes les adresses IP |
| intranet ou privées indiquées par de tels mandataires, y compris les |
| blocs d'adresses 10/8, 172.16/12, 192.168/16, 169.254/16 et 127/8 |
| (ou située en dehors du bloc IPv6 public 2000::/3), ne sont pas |
| dignes de confiance en tant qu'adresses IP distantes, et se situent |
| à gauche dans le contenu de l'en-tête |
| <directive>RemoteIPHeader</directive>.</p> |
| |
| <example><title>Exemple d'adresse de confiance (répartiteur de |
| charge</title> |
| RemoteIPHeader X-Forwarded-For<br/> |
| RemoteIPTrustedProxy 10.0.2.16/28<br/> |
| RemoteIPTrustedProxy proxy.example.com |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>RemoteIPTrustedProxyList</name> |
| <description>Déclare les adresses IP intranet clients comme dignes de |
| confiance pour présenter la valeur RemoteIPHeader</description> |
| <syntax>RemoteIPTrustedProxyList <var>nom-fichier</var></syntax> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>RemoteIPTrustedProxyList</directive> |
| permet de spécifier un fichier parcouru au démarrage du serveur pour |
| construire une liste d'adresses (ou blocs d'adresses), auxquelles |
| on peut faire confiance pour présenter une valeur RemoteIPHeader |
| valide de l'adresse IP du client.</p> |
| |
| <p>Le caractère '<code>#</code>' indique une ligne de commentaires, |
| sinon, toutes les lignes séparées par un caractère nouvelle ligne ou |
| tous les éléments d'une ligne séparés par un espace sont traités de |
| la même façon qu'avec la directive |
| <directive>RemoteIPTrustedProxy</directive>.</p> |
| |
| <example><title>Exemple d'adresse de confiance (répartiteur de |
| charge</title> |
| RemoteIPHeader X-Forwarded-For<br/> |
| RemoteIPTrustedProxyList conf/mandataires-de-confiance.lst |
| </example> |
| |
| <example><title>conf/mandataires-de-confiance.lst contents</title> |
| # Mandataires externes identifiés<br/> |
| 192.0.2.16/28 #groupe wap phone de mandataires<br/> |
| proxy.isp.example.com #un FAI bien connu |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| |
| </modulesynopsis> |