2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1704683 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
9 Licensed to the Apache Software Foundation (ASF) under one or more
10 contributor license agreements. See the NOTICE file distributed with
11 this work for additional information regarding copyright ownership.
12 The ASF licenses this file to You under the Apache License, Version 2.0
13 (the "License"); you may not use this file except in compliance with
14 the License. You may obtain a copy of the License at
16 http://www.apache.org/licenses/LICENSE-2.0
18 Unless required by applicable law or agreed to in writing, software
19 distributed under the License is distributed on an "AS IS" BASIS,
20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 See the License for the specific language governing permissions and
22 limitations under the License.
25 <modulesynopsis metafile="mod_remoteip.xml.meta">
27 <name>mod_remoteip</name>
28 <description>Remplace l'adresse IP et le nom d'hôte apparents du client
29 pour la requête par l'adresse IP présentée par un mandataire ou un
30 répartiteur de charge via les en-têtes de la requête.
34 <sourcefile>mod_remoteip.c</sourcefile>
35 <identifier>remoteip_module</identifier>
38 <p>Ce module permet de traiter l'hôte distant qui a initié la
39 requête en tant qu'hôte distant original du point de vue de httpd à
40 des fins d'autorisation et de connexion, même si cet hôte distant se
41 trouve derrière un répartiteur de charge, un serveur frontal, ou un
42 serveur mandataire.</p>
44 <p>Le module remplace les adresse IP et nom d'hôte apparents
45 distants (du client) pour la requête par l'adresse IP indiquée dans
46 l'en-tête de requête configuré via la directive
47 <directive module="mod_remoteip">RemoteIPHeader</directive>.</p>
49 <p>Une fois remplacée comme indiqué, cette adresse IP apparente est
50 utilisée pour la fonctionnalité <directive
51 module="mod_authz_core" name="Require">Require ip</directive> de
52 <module>mod_authz_host</module> ; elle est aussi affichée par
53 <module>mod_status</module>, et enregistrée via les directives
54 <code>%a</code> et <code>%h</code> du module
55 <module>mod_log_config</module>. Elle permet aussi d'identifier la
56 machine en essayant de lui attribuer une identité inetd via le
57 module <module>mod_ident</module> et en fonction de la configuration
58 de la directive <directive
59 module="mod_ident">IdentityCheck</directive>.</p>
61 <note type="warning">Il est essentiel de n'activer cette
62 fonctionnalité que pour les requêtes en provenance des serveurs
63 intermédiaires (mandataires, etc...) auxquels le serveur peut faire
64 confiance, car il est trivial pour le client distant d'usurper
65 l'identité d'un autre client.</note>
68 <seealso><module>mod_authz_host</module></seealso>
69 <seealso><module>mod_status</module></seealso>
70 <seealso><module>mod_log_config</module></seealso>
71 <seealso><module>mod_ident</module></seealso>
73 <section id="processing"><title>Traitement des adresses distantes</title>
75 <p>Apache identifie le client par la valeur remote_ip de la
76 connexion, et de cette valeur découlent les valeurs remote_host et
77 remote_logname de la connexion. Ces champs jouent un rôle
78 dans l'authentification, l'autorisation et la connexion, ainsi que
79 dans d'autres traitements effectués par d'autres modules
82 <p>mod_remoteip remplace la véritable remote_ip par la remote_ip
83 indiquée par exemple par un mandataire chaque fois que le serveur
84 effectue une évaluation du client, et réinitialise les valeurs de
85 remote_host et remote_logname afin de déclencher une nouvelle
86 requête dns ou ident sur l'adresse IP distante.</p>
88 <p>Lorsque la valeur de l'en-tête comporte plusieurs adresses IP
89 distantes séparées par des virgules, celles-ci sont traitées de la
90 droite vers la gauche. Le traitement s'arrête lorsque l'adresse IP
91 distante courante n'est pas digne de confiance pour présenter
92 l'adresse IP précédente. Le champ d'en-tête est alors mis à jour de
93 façon à ne contenir que cette liste d'adresses non confirmées, ou
94 bien, si toutes les adresses IP sont dignes de confiance, cet
95 en-tête est tout bonnement supprimé de la requête.</p>
97 <p>Lors du remplacement de l'adresse IP distante, le module stocke
98 la liste des hôtes intermédiaires dans un mémo
99 remoteip-proxy-ip-list, que l'on peut faire enregistrer par
100 <module>mod_log_config</module> en utilisant le symbole de format
101 <code>%{remoteip-proxy-ip-list}n</code>. Si l'administrateur doit
102 stocker ceci dans un en-tête additionnel, la même valeur peut aussi
103 être enregistrée sous la forme d'un en-tête en utilisant la
104 directive <directive module="mod_remoteip">RemoteIPProxiesHeader</directive>.</p>
106 <note><title>Adresses IPv4 converties au format IPv6</title>
107 Avec httpd, d'une manière générale, toute adresse IPv4 convertie au
108 format IPv6 est enregistrée sous sa forme IPv4.</note>
110 <note><title>Adresses internes (privées)</title>
111 Tous les blocs d'adresses internes 10/8, 172.16/12, 192.168/16,
112 169.254/16 and 127/8 (ainsi que les adresses IPv6 en dehors du bloc
113 public 2000::/3 block) ne sont évaluées par mod_remoteip que lorsque
114 des mandataires internes (intranet)
115 <directive module="mod_remoteip">RemoteIPInternalProxy</directive> sont enregistrés.</note>
120 <name>RemoteIPHeader</name>
121 <description>Définit le champ d'en-tête qui contiendra les adresses IP
122 du client</description>
123 <syntax>RemoteIPHeader <var>en-tête</var></syntax>
124 <contextlist><context>server config</context><context>virtual host</context></contextlist>
127 <p>La directive <directive module="mod_remoteip">RemoteIPHeader</directive> indique à
128 <module>mod_remoteip</module> de traiter la valeur de
129 l'<var>en-tête</var> spécifié comme l'adresse IP du client, ou comme
130 une liste d'adresses IP clients intermédiaires, en fonction de la
131 configuration des directives
132 <directive module="mod_remoteip">RemoteIPInternalProxy</directive> et
133 <directive module="mod_remoteip">RemoteIPTrustedProxy</directive>.</p>
135 <note type="warning">Si ces deux dernières
136 directives ne sont pas utilisées, <module>mod_remoteip</module>
137 traitera tout hôte présentant une adresse non interne
138 dans l'en-tête <directive
139 module="mod_remoteip">RemoteIPHeader</directive> comme hôte de
142 <example><title>Exemple à usage interne (répartiteur de
144 <highlight language="config">
145 RemoteIPHeader X-Client-IP
149 <example><title>Exemple dans le cas d'un mandataire</title>
150 <highlight language="config">
151 RemoteIPHeader X-Forwarded-For
158 <name>RemoteIPInternalProxy</name>
159 <description>Déclare les adresses IP intranet clients comme dignes de
160 confiance pour présenter la valeur RemoteIPHeader</description>
161 <syntax>RemoteIPInternalProxy
162 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax>
163 <contextlist><context>server config</context><context>virtual host</context></contextlist>
166 <p>La directive <directive module="mod_remoteip">RemoteIPInternalProxy</directive> permet
167 d'ajouter une ou plusieurs adresses (ou blocs d'adresses) auxquelles
168 on peut faire confiance pour présenter une valeur RemoteIPHeader
169 valide de l'adresse IP du client. A la différence de la directive
170 <directive module="mod_remoteip">RemoteIPTrustedProxy</directive>, toute adresse IP
171 présentée dans cet en-tête, y comprises les adresses intranet
172 privées, sont considérées comme dignes de confiance lorsqu'elles
173 sont indiquées par ces mandataires.</p>
175 <example><title>Exemple à usage interne (répartiteur de
177 <highlight language="config">
178 RemoteIPHeader X-Client-IP
179 RemoteIPInternalProxy 10.0.2.0/24
180 RemoteIPInternalProxy gateway.localdomain
187 <name>RemoteIPInternalProxyList</name>
188 <description>Déclare les adresses IP intranet clients comme dignes de
189 confiance pour présenter la valeur RemoteIPHeader</description>
190 <syntax>RemoteIPInternalProxyList <var>nom-fichier</var></syntax>
191 <contextlist><context>server config</context><context>virtual host</context></contextlist>
194 <p>La directive <directive module="mod_remoteip">RemoteIPInternalProxyList</directive>
195 permet de spécifier un fichier parcouru au démarrage du serveur pour
196 construire une liste d'adresses (ou blocs d'adresses), auxquelles
197 on peut faire confiance pour présenter une valeur RemoteIPHeader
198 valide de l'adresse IP du client.</p>
200 <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
201 sinon, toutes les lignes séparées par un caractère <code>nouvelle
203 tous les éléments d'une ligne séparés par un espace sont traités de
204 la même façon qu'avec la directive
205 <directive module="mod_remoteip">RemoteIPInternalProxy</directive>.</p>
207 <example><title>Exemple à usage interne (répartiteur de
209 <highlight language="config">
210 RemoteIPHeader X-Client-IP
211 RemoteIPInternalProxyList conf/trusted-proxies.lst
215 <example><title>contenu de conf/mandataires-de-confiance.lst</title>
217 # Nos mandataires internes de confiance
218 10.0.2.0/24 # Tout le monde dans le groupe de test
219 passerelle.domaine-local # Le frontal répartiteur de charge
226 <name>RemoteIPProxiesHeader</name>
227 <description>Déclare le champ d'en-tête qui contiendra toutes les
228 adresses IP intermédiaires</description>
229 <syntax>RemoteIPProxiesHeader <var>Nom_en-tête</var></syntax>
230 <contextlist><context>server config</context><context>virtual host</context></contextlist>
233 <p>La directive <directive module="mod_remoteip">RemoteIPProxiesHeader</directive> permet
234 de spécifier l'en-tête dans lequel <module>mod_remoteip</module> va
235 collecter une liste de toutes les adresses IP clients intermédiaires
236 auxquelles on pourra faire confiance pour résoudre la véritable
237 adresse IP distante. Notez que les adresses intermédiaires
238 <directive module="mod_remoteip">RemoteIPTrustedProxy</directive> sont enregistrées dans
239 cet en-tête, alors que toute adresse intermédiaire
240 <directive module="mod_remoteip">RemoteIPInternalProxy</directive> est omise.</p>
242 <example><title>Exemple</title>
243 <highlight language="config">
244 RemoteIPHeader X-Forwarded-For
245 RemoteIPProxiesHeader X-Forwarded-By
252 <name>RemoteIPTrustedProxy</name>
253 <description>Restreint les adresses IP clients dignes de
254 confiance pour présenter la valeur RemoteIPHeader</description>
255 <syntax>RemoteIPTrustedProxy
256 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax>
257 <contextlist><context>server config</context><context>virtual host</context></contextlist>
260 <p>La directive <directive module="mod_remoteip">RemoteIPTrustedProxy</directive> permet
261 de définir quelles adresses IP (ou blocs d'adresses) seront
262 considérées comme de confiance pour présenter une valeur RemoteIPHeader
263 valide de l'adresse IP du client.</p>
265 <p>A la différence de la directive
266 <directive module="mod_remoteip">RemoteIPInternalProxy</directive>, toutes les adresses IP
267 intranet ou privées indiquées par de tels mandataires, y compris les
268 blocs d'adresses 10/8, 172.16/12, 192.168/16, 169.254/16 et 127/8
269 (ou située en dehors du bloc IPv6 public 2000::/3), ne sont pas
270 dignes de confiance en tant qu'adresses IP distantes, et se situent
271 à gauche dans le contenu de l'en-tête
272 <directive module="mod_remoteip">RemoteIPHeader</directive>.</p>
274 <note type="warning">Par défaut, <module>mod_remoteip</module>
275 considérera comme de confiance tout hôte présentant une adresse non
276 interne dans l'en-tête <directive
277 module="mod_remoteip">RemoteIPHeader</directive>.
280 <example><title>Exemple d'adresse de confiance (répartiteur de
282 <highlight language="config">
283 RemoteIPHeader X-Forwarded-For
284 RemoteIPTrustedProxy 10.0.2.16/28
285 RemoteIPTrustedProxy proxy.example.com
292 <name>RemoteIPTrustedProxyList</name>
293 <description>Restreint les adresses IP clients dignes de
294 confiance pour présenter la valeur RemoteIPHeader</description>
295 <syntax>RemoteIPTrustedProxyList <var>nom-fichier</var></syntax>
296 <contextlist><context>server config</context><context>virtual host</context></contextlist>
299 <p>La directive <directive module="mod_remoteip">RemoteIPTrustedProxyList</directive>
300 permet de spécifier un fichier parcouru au démarrage du serveur pour
301 construire une liste d'adresses (ou blocs d'adresses), auxquelles
302 on peut faire confiance pour présenter une valeur RemoteIPHeader
303 valide de l'adresse IP du client.</p>
305 <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
306 sinon, toutes les lignes séparées par un caractère nouvelle ligne ou
307 tous les éléments d'une ligne séparés par un espace sont traités de
308 la même façon qu'avec la directive
309 <directive module="mod_remoteip">RemoteIPTrustedProxy</directive>.</p>
311 <example><title>Exemple d'adresse de confiance (répartiteur de
313 <highlight language="config">
314 RemoteIPHeader X-Forwarded-For
315 RemoteIPTrustedProxyList conf/trusted-proxies.lst
319 <example><title>conf/mandataires-de-confiance.lst contents</title>
320 # Mandataires externes identifiés<br/>
321 192.0.2.16/28 #groupe wap phone de mandataires<br/>
322 proxy.isp.example.com #un FAI bien connu