SUPINFO International University

SUPINFO Institute of Information Technology
Laboratoire Microsoft




Tous les Articles du Laboratoire Microsoft

IT Forum 2005 - Vue d’ensemble de IIS 7.0 sous Windows Vista / Longhorn
Accueil > Articles > Evènements
Auteurs 
Matthieu MARTINEAU
PI SERVICES (GOLD PARTNER MICROSOFT)
Ingénieur systèmes et réseaux


 Tous les articles de cet auteur

4,2/5

Bien


66495
228/978

3. Mise en œuvre de IIS 7.0

3.1 Les outils d'administration intégrés

La nouvelle console d'administration se nomme Outil de gestion IIS ("IIS Management Tool") et est basée sur la version 3.0 de MMC. L'organisation des menus est donc la même que celle des autres consoles "nouvelles génération" (console gestion DFS, console gestion ISA Server...); on retrouve donc :

  • une arborescence situé à gauche (elle permet de visualiser tous les sites Web et tous les répertoire virtuels)

  • un panneau central permet de visualise la configuration de l'objet sélectionné dans l'arborescence (le serveur, un site ou un répertoire virtuel)

  • un menu nommé Tâches situé à droite liste toutes les actions possible lorsqu'un composant est sélectionné dans le panneau central

Cette nouvelle organisation évite de devoir réaliser continuellement l'opération "clic droit / propriétés" sur chaque élément de l'arborescence étant donné que toutes les informations qui était auparavant affichées dans les propriétés le sont maintenant dans le panneau central ! La photo ci-dessous montre les propriétés du serveur :


L'ergonomie de la console MMC a été entièrement revue

La photo ci-contre présente une vue détaillée de l'arborescence de la console Outil de gestion IIS. Les aficionados de la version 6.0 du produit ne seront pas dépaysés étant donné que l'organisation des composants est restées la même : une section Pools d'applications rassemble tous les pools d'application configurés sur la machine et une section Sites rassemble tous les sites Web.

Les nouvelles possibilités en terme de délégation permettent de donner le contrôle total à un utilisateur uniquement sur un site ou un pool d'applications particulier. Il est ensuite possible de créer console personnalisée pour cet utilisateur où seul le site (ou le pool d'applications) est visible !

De nombreuses autres options sont disponibles; toujours dans le but de simplifier l'administration du serveur. On peut par exemple visualiser immédiatement un site Web en réalisant l'action clic droit / Explorer ou bien encore éditer instantanément le fichier de configuration d'un site Web en réalisant l'action clic droit / Se connecter à la configuration du site (web.config) ! La photo ci-dessous montre comment l'on peut éditer ce fichier XML :


La nouvelle console est entièrement personnalisable

 

3.2 Gestion des composants des services IIS

Le serveur IIS dans sa version 7.0 se veut entièrement modulable. Ainsi, les composants du serveur peuvent être activés ou désactivés au niveau du serveur, d'un site Web ou bien encore d'un répertoire virtuel. Cette modification peut s'opérer dans la console MMC ou bien directement au niveau du fichier de configuration ! En effet, chaque site Web possède un fichier XML nommé web.config qui stocke l'intégralité de sa configuration (ce fichier respecte le schéma XML de l'ASP .net 2.0). Voici un exemple de configuration pour un site Web :

<configuration>
        <system.webServer>
                <modules>
                        <clear />
                        <add name="StaticFileModule" />
                        <add name="AnonymousAuthenticationModule" />
                        <add name="DefaultDocumentModule" />
                </modules>
                <defaultDocument enabled="true">
                        <files>
                                <add value="itforum.html" />
                        </files>
                </defaultDocument>
                <directoryBrowse enabled="true">
        </system.webServer>
</configuration>

Dans le fichier web.config ci dessus, on remarque qu'une section "modules" permet de spécifier les composants du serveur qui sont activés au niveau de ce site Web. Aucun composant n'est hérité à partir du serveur grâce à la balise <clear /> et seuls trois fonctions sont activés :

  • le support des fichiers statiques (HTML, JPG, GIF...)

  • le support de l'accès anonyme

  • le support du fichier par défaut

La seule méthode permettant de se connecter à ce site Web est donc l'authentification anonyme (les méthodes d'authentifications basique, digest, intégrée à Windows... ne sont même pas chargées en mémoire au niveau de ce site) ! De plus seuls les fichiers statiques sont gérés par ce serveur (les pages utilisant un langage dynamique comme le PHP ou l'ASP ne sont pas supportées). Dans cet exemple, seuls 3 modules (au lieu de la quarantaine présente de base dans IIS 7.0) sont activés !

Bien entendu, des modules supplémentaires peuvent être développés. Pour cela Microsoft fourni un kit de développement (SDK) autorisant le développement en C/C++, en C# ou bien encore en VB .net. Ces modules supplémentaires pourront bien entendu être commercialisés par des firmes tierce partie comme c'est déjà le cas pour certain filtres ISAPI sous IIS 6.0.

Bien que les filtres ISAPI soient amenés à disparaître avec IIS 7.0, le serveur offre tout de même un support des filtres actuels. Ainsi, deux modes seront disponibles pour l'ASP .net : le mode ISAPI (fonctionne à l'aide de la DLL aspnet_dff.dll comme sous IIS 6.0) ou bien le mode intégré (on utilise le composant ASP .net intégré au serveur IIS 7.0). En termes de performance, il est recommandé d'utiliser le mode intégré, cependant, le mode ISAPI permet d'assurer une compatibilité à 100% avec les applications Web fonctionnant actuellement sous IIS 6.0 !

 

3.3 Implémentation de la sécurité et délégation

Avec cette nouvelle version de IIS, Microsoft souhaite proposer le serveur Web le plus sécurisé possible. Pour cela toutes les pratiques recommandées en terme de sécurité ont été intégrées au produit :

  • la désactivation des modules/composants inutiles permet de réduire la surface d'attaque (cf. section précédente)

  • la délégation très fine de l'administration permet d'assigner uniquement les autorisations requises (cela évite de devoir inclure un grand nombre d'utilisateurs dans le groupe Administrateurs local)

  • l'administration à distance est sécurisée grâce au protocole HTTP over SSL (HTTPs)

  • un filtreur d'URL est intégré au produit. Il permet de bloquer des requêtes HTTP reçues au niveau du serveur en fonction de l'URL demandée (en-têtes host et URI de la requête HTTP)

  • la gestion de l'authentification pourra être configurée de manière plus précise

La seule manière d'autoriser un utilisateur (par exemple un développeur Web) à configurer un serveur IIS 6.0 est de l'inclure dans le groupe Administrateurs local. Cependant cette opération est à proscrire car elle donne tous les droits sur la machine à l' utilisateur !!! L'idéal en termes de sécurité est donc de ne donner aucun droits aux développeurs qui devront s'adresser à l'administrateur pour effectuer chaque modification. Avec IIS 6.0, il y a donc un goulot d'étranglement au niveau de la gestion du serveur lorsque l'on respecte les pratiques recommandées en terme de sécurité !

Pour contourner ce problème un vrai système de délégation a été implémenté au sein de IIS 7.0. Ainsi il est possible de créer des rôles et de les assigner à tel ou tel utilisateur. On peut par exemple créer un rôle "Administration du site Laboratoire Microsoft" offrant le contrôle total sur un site Web en particulier et l'affecter à l'utilisateur Loïc Thobois. Cet utilisateur pourra uniquement configurer le site Web du Laboratoire Microsoft et n'aura pas la main sur les autres sites ni sur la configuration du serveur ! Dans l'exemple ci-dessous, on remarque qu'un seul rôle nommé "whatup" est présent - l'administrateur a la possibilité d'affecter ce rôle à l'utilisateur Bob.


La console MMC permet de créer des utilisateurs et de leur assigner des rôles

Etant donné qu'il est maintenant possible de créer des utilisateurs dans IIS (cf. l'utilisateur Bob ci-dessus), le compte anonyme est maintenant intégré au serveur et ne correspond plus à un compte Windows comme c'est actuellement le cas sous IIS 6.0 (le compte anonyme correspond à un compte Windows stocké dans la base SAM et nommé IUSR_nom_du_serveur) ! De nombreuses méthodes d'authentification sont d'ailleurs implémentées par défaut comme l'authentification intégrée à Windows, l'authentification SQL Server ou bien encore l'authentification par formulaire !

Il est possible d'activer cette dernière méthode (l'authentification par formulaire) sur n'importe quel site Web (par exemple sur un site Web en HTML pur) ! Cela permet de mettre en place une restriction d'accès sur le site sans pour autant devoir développer du code (lorsqu'elle est activée l'authentification par formulaire utilise l'ASP .net).

La base de compte utilisée par le module "authentification par formulaire", peut être la base SAM locale, Active Directory, SQL Server ou même une simple base Microsoft Access ! La capture d'écran ci-contre montre le design par défaut de la page d'authentification (ce design devrait être modifiable).

Voici le code XML du site Web précédent (section 3.2), lorsque l'authentification par formulaire est activée (on remarque les utilisateurs anonymes ne sont pas autorisés à accéder au site et que seuls les utilisateurs possédant le rôle "whatup" le peuvent) :

<configuration>
        <system.webServer>
                <modules>
                        <clear />
                        <add name="StaticFileModule" />
                        <add name="AnonymousAuthenticationModule" />
                        <add name="DefaultDocumentModule" />
                </modules>
                <defaultDocument enabled="true">
                        <files>
                                <add value="itforum.html" />
                        </files>
                </defaultDocument>
                <directoryBrowse enabled="true">
        </system.webServer>
        <system.web>
                <authentication mode="Forms" />
                <authorization>
                        <allow roles="whatup" />
                        <deny users="*" />
                </authorization>
        </system.web>

</configuration>

 

3.4 Compatibilité avec l'existant

Microsoft souhaite faciliter la transition de IIS 6.0 vers IIS 7.0 (et pourquoi pas de Apache vers IIS ;-) ) ! C'est pourquoi la compatibilité avec tous les filtres ISAPI existant a été conservée. De plus l'ASP .net version 2.0 mais aussi version 1.1 sera supporté (fonctionnalité très important car peu de sites Web sont actuellement développés en ASP .net 2.0). Enfin les scripts WMI (Windows Management Instrumentation) ainsi que le langage WQL (Windows Query Language), déjà utilisés dans l'administration système (Active Directory, surveillance des performances, GPOs...) pourront être utilisés pour gérer le serveur !


Le filtre ISAPI (php5isapi.dll) n'est activé qu'au niveau du site Web

Bien entendu chaque composant ou filtre ISAPI du serveur peut être activé indépendamment au niveau du serveur, d'un site Web ou d'un répertoire virtuel. Il est donc possible d'activer le support du PHP via le filtre ISAPI php4isapi.dll sur un premier site, d'activer le support du PHP sur un second site avec un filtre ISAPI différent (php5isapi.dll) et de ne pas activer le support du PHP sur un troisième site Web !

 

3.5 Les outils de diagnostic et de dépannage

Contrairement à IIS 6 qui n'était qu'une simple plateforme permettant de publier des sites Web localement ou sur la toile, la version 7.0 souhaite devenir une véritable plateforme de développement Web. C'est pourquoi de nombreux outils de diagnostic et de dépannage ont été directement intégrés dans la console MMC ! Etant donné qu'une bonne démonstration vaut mieux qu'un long discours, Brett Hill et Olga Londer nous ont simulé deux pannes inspirées de la réalité :

  1. un site Web inexplicablement lent !

  2. un site Web affichant une erreur 500 au niveau de la page de démarrage

La première démonstration était très simple : la page d'accueil était inexplicablement lente lors du chargement (plus de 60 secondes pour afficher le titre de la page...) ! En général ceci provient d'un bug dans le code des pages Web (boucle dans le code, appel à de multiples fichiers "include"...), cependant il est souvent difficile de savoir quelle est la page exacte qui pose problème étant donné le nombre de pages et de morceaux de codes pouvant être appelées par la page d'accueil d'un site. Pour savoir pourquoi le serveur était très lent, le démonstrateur a commencé par afficher la liste des processus IIS actuellement en cours (à l'aide de la console MMC) :


le pool d'application utilise 100% du temps CPU !!!

A l'aide de cet outil, il nous a aisément montré que le pool d'application correspondant à notre site Web utilisait 100% des ressources CPU (la quantité de mémoire vive et de mémoire virtuelle utilisée par le pool est aussi affichée) ! Il a ensuite affiché une vue détaillée de toutes les requêtes actuellement exécutées par ce pool d'application (chose totalement impossible sous IIS 6.0) :


A chaque fois que la page badbuy.asp est exécutée, la requête "plante"

On remarque que trois requêtes pour la même page Web (badbuy.asp) sont en cours d'exécution depuis plus de 2 minutes (le temps d'exécution n'est pas visible sur la capture d'écran ci-dessus car il est affiché sur une colonne situé plus à droite) ! L'administrateur du site Web peut donc facilement en déduire que cette page contient une erreur de code (ici il s'agissait d'une boucle dans le code ASP de la page) !

La seconde démonstration consistait a afficher un autre site Web qui lui affichait une erreur 500. Lorsqu'une erreur de ce type est affichée au niveau d'un site Web, cela signifie qu'une erreur s'est produite au niveau du serveur Web. Cependant cela n'indique pas à l'administrateur de quel problème exact il s'agit !!! Dans notre exemple, Bret Hill a activé une fonction de traçage nommée "FAIL REQUEST TRACING" au niveau du serveur IIS et a retenté d'afficher la page. L'erreur s'est donc reproduite et cette fois-ci le serveur IIS a généré un rapport complet lors de l'exécution de la requête (affichage de la page d'accueil) :


Les fonctionnalités de traçage intégrées à IIS 7.0 sont très utiles pour diagnostiquer les pannes !

Cette trace (sous forme de fichier XML ou HTML) met en évidence un problème avec un filtre ISAPI nommé "IsapiModule" et permet donc d'orienter l'administrateur sur la cause du problème et sur son éventuelle résolution ! Par défaut toutes les traces générées par le serveur sont stockées dans C:\Inetpub\Failesreqlogfile. Ces fonctionnalités de dépannage sont vraiment un gros plus de IIS étant donné qu'elles permettent de localiser précisément les erreurs de code mais aussi de résoudre les problèmes de performances !

 


1. Introduction

2. Présentation de la version 7.0 de IIS
     2.1 Historique
     2.2 Les possibilités de IIS sous Windows Server 2003
     2.3 Les problèmes rencontrés avec Internet Information Services 6.0
     2.4 Les nouvelles fonctionnalités de IIS 7.0

3. Mise en œuvre de IIS 7.0
     3.1 Les outils d'administration intégrés
     3.2 Gestion des composants des services IIS
     3.3 Implémentation de la sécurité et délégation
     3.4 Compatibilité avec l'existant
     3.5 Les outils de diagnostic et de dépannage

4. Conclusion




En Savoir Plus 
Evaluez cet article 


Pour afficher ou poster un commentaire, cliquez sur ce lien : Forum-Microsoft



Retrouvez ci-dessous les autres sections du Laboratoire Microsoft