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é :
-
un site Web inexplicablement lent !
-
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
|
|
 |
Pour afficher ou poster un commentaire, cliquez sur ce lien : Forum-Microsoft
|
|