480 likes | 574 Vues
Journée de Transfert d ’Expertise. Paris / Lausanne – Mars 2004. Eric DETOC Ingénieur support produits Internet edetoc@microsoft.com MICROSOFT France. Agenda. Introduction Architecture IIS6 versus IIS5 Securité Nouvelle Metabase Nouveautés FTP Liens techniques. Introduction.
E N D
Journée de Transfert d ’Expertise Paris / Lausanne – Mars 2004
Eric DETOC Ingénieur support produits Internet edetoc@microsoft.com MICROSOFT France
Agenda • Introduction • Architecture IIS6 versus IIS5 • Securité • Nouvelle Metabase • Nouveautés FTP • Liens techniques
Introduction • Comparatif entre les éditions: • http://www.microsoft.com/windowsserver2003/evaluation/features/compareeditions.mspx
IntroductionWeb Edition • Limitations • Architecture 32 bits, 2 GB Ram Max • N’offre que le serveur Web (impossible d’installer SQL, WMS, etc …) • Ne peut être contrôleur de domaine • 10 connexions SMB entrantes Max • Mode Cluster non supporté • Pas de serveur VPN, ni Terminal server (accepte les connexions RDP entrantes) • http://www.microsoft.com/windowsserver2003/evaluation/overview/web.mspx
Architecture IIS5 DLLHOST.exe Appl. Poolées OOP INETINFO.exe Métabase FTP, SMTP, NNTP ASPNET_WP.exe DLLHOST.exe DLLHOST.exe W3SVC .Net App Domain Isolated OOP App .Net App Domain Application Domain .NET DLLHOST.exe Isolated OOP App Appl.In-process ASP.NET Appl. Poolées OOP Filtres ISAPI Mode Utilisateur Mode Noyau Winsock
X W3ADM Administration & Monitoring User mode Kernel mode Queue Cache HTTP.sys Architecture IIS6 • Objectif: accroître performance et fiabilité Inetinfo Application Pools FTP XML Metabase NNTP … SMTP IIS 6.0 TCP/IP Request Response
HTTP.SYS • De quoi s’agit-il ? • Pilote en mode Kernel qui écoute les requêtes HTTP • Ce pilote est toujours actif • Fiabilité • Les requêtes sont routées vers une file d’attente en mode Kernel • Routage effectué en fonction de l’URL demandée • Performance • Gestion d’un cache de réponses en mode Kernel • Gestion du logging en mode texte uniquement • Gestion des connexions TCP et de QoS pour le trafic HTTP
Requête HTTP.SYS HTTP.SYS API HTTP.SYS Send Response Listener Req. Queue Req. Queue Req. Queue Namespace Mapper ResponseCache HTTP Engine HTTP Parser TCP/IP
HTTP.SYSConfiguration • Contrôle via le registre • HKLM\System\CCS\Services\HTTP • http://support.microsoft.com/?id=820129 • L’utilitaire en mode ligne de commande HTTPCFG.EXE • Entre autre, gestion de la “IP listen list” • L’utitilitaire graphique livré avec Windows Media Server • WMSHttpSysCfg.exe
HTTP.SYSSocket Pooling • Par défaut, IIS5 (via Winsock) se lie à toutes les adresses IP • Comportement désactivable par la clé de métabase DisableSocketPooling • Par défaut, IIS6 (via HTTP.SYS) se lie également à toutes les adresses IP • Du fait que Winsock n’est plus utilisé pour HTTP, la clé DisableSocketPooling n’est plus fonctionnelle • Utiliser HTTPCFG pour renseigner la “IP Listen list” • Attention: “IP Listen List” est lue uniquement au démarrage du pilote HTTP.SYS • http://support.microsoft.com/?id=813368
Worker process • Disponible uniquement en mode “natif” IIS6 (WPIM) • W3wp.exe • Responsable de l’exécution du code de l’application Web • Sorte de “Mini” serveur Web • Invoque filtres et extensions ISAPI nécessaires à l’exécution du code • Cloisonnement entre l’exécution du code de l’application et le reste du serveur Web
Worker Process ISAPI Extensions ISAPI Filters Plus concrètement… INETINFO DLLHOST.EXE DLLHOST.EXE WAM DLLHOST.EXE metabase WAM WAM ISAPI Extensions W3ADM Worker Process Worker Process Worker Process WAM INETINFO ISAPI Extensions ISAPI Extensions Metabase FTP NNTP SMTP ISAPI Extensions ISAPI Extensions ISAPI Extensions ISAPI Extensions ISAPI Filters ISAPI Filters ISAPI Filters ISAPI Filters TCP/IP HTTP.SYS
Modes d’isolation IIS6 • Isolation par Worker Process • Activé par défaut si installation de Windows 2003 • Isolation IIS5 • Activé par défaut lors d’une mise à jour vers Windows 2003 Server • À utiliser temporairement en cas d’incompatiblité des applications avec le mode d’isolation par Worker process • Choix du mode d’isolation dans l’interface d’administration IIS6
Application Pool Application Pool W3WP.EXE W3WP.EXE Worker Process Worker Process Worker Process Worker Process Worker Process Web Garden Application Pool ISAPI Extensions ISAPI Extensions ISAPI Extensions ISAPI Extensions ISAPI Extensions W3WP.EXE W3 Admin Service ISAPI Filters ISAPI Filters ISAPI Filters ISAPI Filters ISAPI Filters Inetinfo.exe Metabase Lsass.exe Svchost.exe FTP Service Windows Authentication WWW Service SSL for HTTP.sys SMTP Service NNTP Service User Mode Kernel Mode HTTP Protocol Stack Listener – Response Cache - Sender Isolation par Worker process
DLLHost.EXE DLLHost.EXE High-Isolation Out-of-Process Application Host High-Isolation Out-of-Process Application Host ISAPI Extensions ISAPI Extensions Isolation IIS5 DLLHost.EXE Medium-Isolation (Pooled) Out-of-Process Application Host ISAPI Extensions Inetinfo.exe W3 Admin Service FTP Service Worker Process Svchost.exe WWW Service Low-Isolation ISAPI Extensions SMTP Service metabase NNTP Service Lsass.exe ISAPI Filters Windows Authentication SSL for HTTP.SYS HTTP Protocol Stack
Pools d’ApplicationsDéfinition • Un ou plusieurs pools d’applications • Chacun est servi par un ou plusieurs W3WP.exe • Chaque W3WP.exe ne sert qu’un pool • Requêtes routées directement au Pool par HTTP.sys • Isolation basée sur : • Site/Client • Fonctionnalité • Fiabilité
Pool d’applicationsIdentité • Identités possibles du Worker process: • Network Service (par défaut) • Local System • Local Service • Compte utilisateur • Groupe IIS_WPG
Pool d’applicationsRecyclage • Recyclage périodique des applications basé sur : • La durée de vie du WP [Défaut] • Nb. requêtes • une heure planifiée • Consommation mémoire • A la demande (GUI) • Pourquoi ? • Rafraîchir les applications pour s’assurer de leur disponibilité • Éviter que des applications ne perturbent le système
Pool d’applicationsRecyclage par recouvrement startup ready Old Worker Process New Worker Process W3ADM Web Proc. Core DLL Web Proc. Core DLL ISAPI Exts & Filters ISAPI Exts & Filters HTTP.SYS Request Request Shut down Ready for Recycle user kernel
Pool d’applicationsRecyclage • Attention, le recyclage par recouvrement peut poser problème si l’application ne supporte pas la multi-instanciation • Possibilité de désactiver le recyclage par recouvrement • Clé de métabase DisallowOverlappingRotation • Le worker process doit alors se terminer avant qu’un nouveau soit crée • Dans tous les cas (recouvrement ou pas), les requêtes restent en file d’attente au niveau Kernel • Aucune interruption de service !
Pool d’applicationsSurveillance • Détection de Crash • WADM détecte les crash des W3WP.exe • WADM démarre un nouveau W3WP.exe si besoin • Requêtes en file d’attente dans HTTP.sys pendant que W3WP démarre • Pas d’Interruption de Service • Rapid Fail Protection • N’autorise que X fautes par intervalle de temps • Stoppe automatiquement le Pool si la valeur est dépassée • IIS6 retourne des codes 503 aux requêtes sur ce pool
Pool d’applicationsSurveillance - Ping • Comment ça marche ? • W3ADM “ping” à intervalle de temps régulier les worker process • Un worker process est configuré pour répondre au ping dans une limite de temps donné • Si (pas de réponse dans la limite de temps) • Par défaut: le WP est tué, enregistrement de l’évènement, démarrage d’un nouveau WP • Possibilité de rendre le WP orphelin à des fins de debugging (par ex: attacher un debugger), “Orphaning”
Pool d’applicationsSurveillance - Orphaning • Activable via des clés de Metabase • http://support.microsoft.com/?id=828222 • Des actions personnalisées peuvent être exécutées. Par exemple: • Envoyer un message à l’admin • Attacher un debugger, prendre un dump mémoire d’un WP • Exécuter une application spécifique • Le WP n’est pas tué, il reste actif donc penser à le terminer
Web Garden Pool d’application utilisant plus d’un worker process Pour une même connexion les requêtes sont routées vers le même WP au sein du garden Équilibrage de charge entre les WP du garden en cas de charge importante ou de problème (attention aux pertes de sessions) Affinité Lier un pool d’applications à 1 ou plusieurs CPUs Pool d’applicationsPerformance
Comparatif filtres et extensions ISAPI • Filtres ISAPI • Fonctionnement synchrone par nature (S’enregistre pour être notifié lors de certains évènements) • Configurable par site uniquement • Moins flexible • Extensions ISAPI • Fonctionnement asynchrone • Configurable jusqu’au répertoire virtuel • Différents contenus peuvent être mappés sur différentes extensions • Plus flexible
Filtres ISAPI • Avec IIS5, les filtres ISAPI sont chargés dans inetinfo.exe • Ils s’exécutent dans le contexte de sécurité LocalSystem • Une seule instance du filtre • Avec IIS6, les filtres sont chargés dans le WP • Héritage du contexte de sécurité du WP • Plusieurs instances possibles • Les filtres qui s’enregistrent pour les notifications READ_RAW_DATA (permet de lire les données venant du client avant tout traitement) ne sont supportés qu’en mode d’isolation IIS5 • http://support.microsoft.com/?id=311852
Recommandations • Développer des applications qui puissent être multi-instanciées • Pas de single locks, etc. • Permet l’utilisation du recyclage par recouvrement • Externaliser la gestion des sessions • Les applications recyclées perdront les sessions si celles-ci sont gérées in-process • ASP.NET State service, SQL Server • Isoler les nouvelles applications dans des “debug pools” • Activer le “Rapid Fail Protection” • Activer l’orphaning d’application
Changements SSL dans IIS6 • Raisons: • Soulager IIS des traitements liés à SSL • Fournir un comportement similaire aux versions antérieures IIS quant au filtre ISAPI READ_RAW_DATA • Le service windows “HTTP SSL” implémente maintenant SSL pour HTTP • Hébergé par défaut dans LSASS.EXE, mais peut être hébergé dans son propre SVCHOST.EXE • (INETINFO.EXE en mode d’isolation IIS5) • SSL est implémenté par les fichiers W3SSL.DLL and STRMFILT.DLL
Sécurité avec IIS6 • IIS6 n’est pas installé par défaut • Installé dans un état verrouillé • Seul le service Web est activé par défaut • Seules les pages statiques et dont l’extension est connue sont servies • Fonctionne sous un compte à faibles privilèges • Outils en ligne de commande non accessibles aux utilisateurs • Contenus protégés en écriture • Protection contre les dépassements de buffers
Verrouillage du serveur • Activation des extensions Web via l’interface graphique • Activation des extensions Web par script avec iisext.vbs
SécuritéCompte Network Service • IIS fonctionne désormais sous le compte pré-defini NetworkService • Compte à faibles privilèges • Ne peut pas accéder au système de fichiers • Ne peut pas accéder au registre • Moins de privilèges = plus sécurisé !
MetabaseAméliorations • Métabase stockée au format XML • Edit while running • Gestion automatique de l’historique des modifications • Backup/restauration simplifié • Export/import de nœuds spécifiques • Administrabilité
Composants de la Metabase IIS6 • Metabase.bin (IIS5) remplacé par 2 fichiers XML dans %SYSTEMROOT%\SYSTEM32\INETSRV • Metabase.xml • Configuration de IIS • MBSchema.xml • Schema de la metabase • La Metabase est lue et chargée en mémoire au démarrage du service IIS Admin • Modifications périodiquement sauvegardées sur disque
SauvegardeHistorique des modifications • Versions de Metabase.xml et MBSchema.xml automatiquement sauvegardées après modifications • %systemroot%\system32\inetsrv\history • La version majeure est incrémentée lorsque la copie mémoire de la metabase est écrite sur disque • La version mineure est incrémentée lorsque metabase.xml est directement modifié (par ex notepad) • Clés de métabase • HistoryMajorVersionNumber • EnableHistory = 1 • MaxHistoryFiles = 10
SauvegardeChronologie • Fréquence • Une sauvegarde est demandée 1 minute après la date de dernière modification • À ce moment là, si le nombre de modifications >30, la sauvegarde est différée d’une minute • La sauvegarde est forcée 5 minutes après la date de 1ère modification • Les données sont écrites dans metabase.xml • Les fichiers d’historique sont crées • La table de routage (URL -> pool d’applications) est mise à jour par W3ADM
Sauvegarde manuelle • Sauvegarde portable • Backup encrypté avec un mot de passe fourni par l’administrateur • Sauvegarde locale • Backup encrypté avec la “machine key” donc non décryptable sur un autre serveur • Sauvegardes stockées dans: • %systemroot%\system32\inetsrv\metaback
Export/Import • Export de l’intégralité ou partie d’un noeud • Noeud = Site Web, répertoire virtuel, Application pool, Site FTP etc • “Save configuration to file” • Import de l’intégralité ou partie d’un noeud • Create new [object] from file • En cas d’import sur un autre serveur, attention aux données spécifiques de la machine source
Données spécifiques à la machine • Chemin aux ressources • Comptes IWAM et IUSR • ServerBindings • Access Control Lists • Mots de passe
Administrabilité • Gestionnaire IIS • Sauvegarde de la copie mémoire de la metabase vers le disque • Par scripts: • ADSI • WMI • Admin base Objects (objets COM) • Notepad • MetaEdit v2.2, MBExplorer (RK IIS6)
Nouveautés FTP • Isolations des utilisateurs • http://www.microsoft.com/usa/webcasts/ondemand/2095.asp • Plage de ports du mode FTP passif configurable
Isolation des utilisateurs • Authentification locale ou par rapport à un domaine • Une seule racine FTP pour tous les home directory • Elle peut être locale ou sur un partage réseau • Structure des répertoires • Anonymous • C:\Inetpub\FTPRoot\LocalUser\Public • Utilisateurs locaux • C:\Inetpub\FTPRoot\LocalUser\username • Utilisateurs de domaines • C:\Inetpub\FTPRoot\domainname\username
Isolation des utilisateurs avec AD • Authentification par rapport à un conteneur AD • Plusieurs racines FTP possibles car les home directory peuvent être répartis sur plusieurs serveurs • Le Home directory d’un utilisateur est construit en fonction des valeurs des attributs FTPRoot et FTPDir (extensions de l’objet Utilisateur) positionnés dans l’AD grâce à l’outil iisftp.vbs
Isolation des utilisateurs avec AD • L’interface graphique ne permet pas de configurer l’accès Anonyme • Créer un script ou utiliser un éditeur de Metabase pour positionner: • AnonymousUserName = ADUser (ADUser doit avoir les attributs FTPRoot & FTPDir positionnés) • AnonymousUserPass = password • AllowAnonymous : DWORD = 1
PassivePortRange • En mode FTP passif, la plage de ports 1025-5000 est utilisée par défaut • Large plage à ouvrir sur le Firewall!! • Plage maintenant configurable par une clé de Metabase • PassivePortRange • Positionnée au niveau service seulement /LM/MSFTPSVC • Ex: PassivePortRange: (String) = 5001-6000 • La plage de ports doit être inclus dans 5001-65535, autrement le service ne démarra pas • voir http://support.microsoft.com/?id=810639 pour IIS5
Liens techniques • http://www.microsoft.com/iis • Communauté: • Forum : microsoft.public.fr.iis • http://www.iisfaq.com/ • Resource Kit IIS6 • http://www.microsoft.com/downloads/details.aspx?FamilyID=80a1b6e6-829e-49b7-8c02-333d9c148e69&DisplayLang=en • Resource Kit tools IIS6 • http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&DisplayLang=en