IIS et entête X-Forwarded-For (XFF)
Bien que ce ne soit pas techniquement une norme, l'entête X-Forwarded-For (XFF) est incroyablement utile si vous avez un type de proxy devant vos serveurs Web.
Quel est le problème ?
Lorsque vous équilibrez la charge de votre site Web au niveau de la couche 7, il deviendra non transparent. Cela signifie que l'adresse IP source actuel du client est remplacée par la propre adresse IP de l'équilibreur de charge - et seule cette adresse sera enregistrée dans les journals de bord IIS.
Une façon de contourner ce problème consiste à insérer des entêtes XFF sur l'équilibreur de charge pour suivre l'adresse IP source réelle du client. Le IIS peut ensuite être reconfiguré pour rendre ces données disponibles dans les journals de bord.
Les autres options pour obtenir la transparence de l'IP source consistent à configurer l'équilibreur de charge en mode NAT de couche 4, en mode DSR de couche 4 ou en couche 7 avec TPROXY activé.
Comment modifier le comportement du journal de bord ? Les étapes requises dépendent de votre version d'IIS.
IIS 8.5 et versions ultérieures
Un champ de journalisation personnalisé peut être ajouté pour enregistrer les entêtes XFF. Pour activer cette fonctionnalité sous IIS 8.5 ou supérieur :
- Démarrez le Gestionnaire des services Internet (IIS), puis dans le volet Connections (Connexions en français) à gauche, cliquez sur le site Web approprié sur lequel vous souhaitez activer la journalisation XFF. La page d'accueil s'affiche alors dans le panneau principal.
- Sur la page d'accueil, double-cliquez sur l'icône Logging (Journalisation en français) :
- Dans la section Log File, cliquez sur Select Fields (Sélectionner les champs... en français).
- Dans le coin inférieur gauche, cliquez sur Add Field... (Ajouter un champ... en français).
- Dans la fenêtre Add Custom Field (Ajouter un champ personnalisé en français), procédez comme suit : dans Field Name (Nom du champ), tapez «X-Forwarded-For», dans Source, tapez , laissez le type de source défini sur «Request Header» («En-tête de la demande» en français), cliquez sur OK dans la fenêtre Ajouter un champ personnalisé cliquez sur OK dans la fenêtre W3C Logging Fields (Champs de journalisation W3C en français).
- Dans le volet Actions sur la droite, cliquez sur Apply (Appliquer en français) pour mettre en oeuvre la modification.
- Les fichiers journaux se trouvent par défaut dans le répertoire «%SystemDrive%\inetpub\logs\LogFiles». Le IIS crée de nouveaux fichiers journals de bord et ajoute «_x» aux noms des fichiers de journals de bord pour indiquer qu'ils contiennent des champs personnalisés.
IIS 7 et IIS 7.5
Pour IIS 7 et IIS 7.5, le module complémentaire de Advanced Logging doit être installé. Une fois installé sur le serveur IIS, vous verrez une option supplémentaire appelée «Advanced Logging» dans IIS. Pour configurer et activer le Advanced Logging :
- Démarrez le Gestionnaire des services Internet (IIS), puis dans le volet Connections sur la gauche, cliquez sur le server, le site Web ou le répertoire sur lequel vous souhaitez configurer le Advanced Logging. La page d'accueil associée s'affiche dans le panneau principal.
- Dans la page d'accueil, sous IIS, double-cliquez sur Advanced Logging.
- Dans le volet Actions sur la droite, cliquez sur Enable Advanced Logging.
- Dans le volet Actions sur la droite, cliquez sur Edit Logging Fields.
- Dans la fenêtre Edit Logging Fields, cliquez sur Add Field, puis procédez comme suit : dans le Field ID, saisissez ClientSourceIP, dans Category, tapez Default, dans Source type:, sélectionnez Request Header, dans Source name, tapez «X-Forwarded-For», cliquez sur OK dans le formulaire Add Logging Field, cliquez sur OK dans le formulaire Edit Logging Fields.
- Dans le volet Actions sur la droite, cliquez sur Add Log Definition.
- Entrez le Client Source IP dans le champ Base file name.
- Cliquez sur Select Fields. Cochez (activez) le champ ClientSourceIP créé précédemment.
- Cliquez sur OK dans le formulaire Select Logging Fields, puis sur Apply dans le volet Actions.
- Cliquez sur Return To Advanced Logging dans le volet Actions.
- Exécutez la commande suivante :
- Le journal de bord avancé doit être affiché plutôt que le journal par défaut. Le journal avancé se trouve dans %SystemDrive%inetpublogsAdvancedLogs. Pour afficher les journaux, cliquez avec le bouton droit sur la définition du journal Client Source IP et cliquez sur View Log Files.
iisreset /restart |
pour appliquer les nouveaux paramètres.