Nouveau livre sur l’administration IIS 7 et IIS 8.5

Le livre Internet Information Services (IIS) pour Windows Server 2008 R2: Concepts et 42 Travaux Pratiques présente et explique les notions suivantes:

  • Architecture IIS 7 / 7.5, Services de rôles, Modules,
  • Modules natifs préinstallés, Modules gérés,
  • Fonctionnalités, Extensibilité, Installation et migration de IIS,
  • Prérequis IIS,  Comment migrer vers IIS,
  • Introduction à Windows PowerShell,  Traitement de la requête,
  • Gérer les services IIS,
  • Service d’activation des processus Windows,
  • Service de publication World Wide Web,
  • Liens entre WAS et W3SVC,  Service d’administration IIS,
  • Service FTP Microsoft,  Application Host Helper Service,
  • Service de gestion Web,  Service d’état ASP.NET,
  • Fichiers de paramétrages,  Schéma XML, Fichier IIS_schema.xml,
  • Validation du schéma,  Fichiers de configuration,
  • Sections et groupes de sections,  Héritage et conflits,
  • Machine.config, Web.config racine,  applicationHost.config,
  • Web.config applicatifs,  Outils d’administration,
  • Gestionnaire des services Internet (IIS),
  • Module Éditeur de gestion,  Netsh, Administrer avec WMI,
  • Windows PowerShell, Commande AppCmd,
  • API Microsoft.Web.Administration, Délégation d’administration,
  • Administrer à distance,  Pools d’applications,
  • Structure d’un site Web, Liaison d’un site web,
  • Adresses IP multiples, Ports multiples, Nom d’hôte,
  • Répertoire virtuel, Persistances des connexions HTTP,
  • Délai d’attente, Applications ISAPI,  Applications écrites en ASP,
  • Applications ASP.NET, Microsoft .NET,
  • Version .NET pour un pool d’applications,
  • Modes d’exécution, Mode classique ASP.NET, État de session,
  • Applications Fast-CGI, Valeurs par défaut d’installation,
  • DefaultAppPool, Default Web Site,
  • Valeurs par défaut des pools d’applications, Pool Général,
  • Modèle de processus, Processus orphelins,
  • Protection rapide en cas d’échec, Recyclage, UC,
  • Valeurs par défaut des sites web, Web Général, Comportement,
  • Valeurs par défaut des sites FTP, FTP Général, Comportement,
  • Configurer les fonctionnalités, Document par défaut,
  • Exploration de répertoire,  Pages d’erreurs HTTP,
  • Redirection HTTP, En-têtes de réponse HTTP, Types MIME,
  • Sécurité, Les cibles, Les attaquants,
  • La récupération d’informations, Les principales attaques,
  • Comment se défendre, Authentification, Autorisation,
  • Certificats serveur, Filtrage des demandes,
  • Exemples de critères de filtrage,
  • Réduire le nombre de modules installés,
  • Restrictions ISAPI et CGI,
  • Restrictions par adresse IP et de domaine,
  • Restrictions liées au domaine et à l’adresse IPv4 FTP,
  • Règles d’autorisation, Dépannage et supervision,
  • Principe de dépannage, Connaissance du nouveau problème,
  • Problème reproductible ou aléatoire,
  • Vérifications liées aux utilisateurs,
  • Vérifications réseaux liées au périphérique client,
  • Vérifications liées au navigateur client,
  • Vérifications liées au réseau et aux serveurs,
  • Résoudre les problèmes liés à IIS, Assurer la surveillance de IIS,
  • Observateur d’événements, Gestion des logs IIS,
  • Format des logs IIS, Format W3C, Autres fichiers journaux,
  • Impact sur les performances de la journalisation,
  • Surveillance des processus de travail,
  • Suivi des demandes ayant échoué, Sauvegarde et restauration,
  • Sauvegarde automatique de applicationHost.config,
  • Sauvegardes automatiques de la métabase,
  • Commandes de sauvegarde, Commandes de restauration,
  • Réinstaller un serveur IIS, Gestion des performances,
  • Méthodologie, Lenteur de chargement des pages,
  • Profiler Visual Studio, Moniteur réseau du navigateur web,
  • Outil Fiddler, Compteurs de performances,
  • Améliorer les performances générales, Compression,
  • Mise en cache de sortie, Limiter les ressources,
  • Gérer les performances des pools d’applications,
  • Recycler les processus de travail,
  • Et bien d’autres encore !

Vous apprendrez aussi à : Configurer le serveur, Manipuler les  services de rôles, Installer IIS avec le Gestionnaire de serveur, Manipuler les modules, Gérer les fonctionnalités, Configurer IIS avec l’outil DISM, Installer IIS avec PowerShell, Exporter et Importer un package, Comprendre les liens entre les services IIS, Comprendre le rôle de IISRESET, Paramétrer le fichier applicationHost.config,  Se familiariser avec AppCmd, Configurer avec AppCmdUI,  Configurer avec AppCmd,  Configurer avec PowerShell, Manipuler applicationHost.config,  Configurer Administration distante, Configurer le DNS, Créer différents sites web, Installer une application ASP.NET, Installer une application PHP, Gérer les flux HTTP, Détecter les anomalies, Paramétrer les Documents par défaut, Configurer le Pied de page, Manipuler les répertoires virtuels, Personnaliser les messages, Rediriger les flux HTTP, Créer un site sécurisé en HTTPS, Mettre en oeuvre des Restrictions par adresse IP,  Autoriser Accès non anonyme, Gérer les permissions NTFS, Configurer les fichiers journaux, Consulter les fichiers journaux dans différents formats, Restaurer un site web, Limiter la consommation des autres sites, Protéger les pools d’applications, Déboguer les applications,  Analyser les performances, Mettre en œuvre le WebDav, …

Internet Information Services (IIS) pour Windows Server 2008 R2: Concepts et 42 Travaux Pratiques

Nouveau livre sur IIS (Internet Information Services) 8 et 8.5

Sortie d’un nouveau livre sur Internet Information Services (IIS) pour Windows Server 2012 R2: Concepts et Travaux Pratiques.

L’objectif de ce livre est de vous rendre rapidement autonome et opérationnel dans l’utilisation d’Internet Information Services pour Windows Server 2012 (IIS 8) et Windows Server 2012 R2 (IIS 8.5).

Vous serez en mesure de comprendre le fonctionnement d’IIS 8 et 8.5, afin de pouvoir le configurer, le sécuriser, le dépanner, le maintenir en condition opérationnelle et améliorer ses performances.

Vous utiliserez des commandes PowerShell et AppCmd, ainsi que des outils moins connus mais très utiles comme NETSH, DISM, SC, SFC, etc.

Vous apprendrez aussi à utiliser le moniteur réseau intégré au navigateur pour visualiser les échanges entre le client et le serveur IIS.

Vous pourrez vous entraîner grâce aux 42 Travaux pratiques corrigés !

Chaque exercice est composé d’un descriptif de l’objectif. Puis la solution est présentée et commentée, étape par étape, jusqu’à l’atteinte de l’objectif. Afin de vous assurer d’être sur la bonne voie, de nombreuses copies d’écrans illustrent la solution. Enfin, un récapitulatif vous rappelle ce que venez d’apprendre.

Déchiffrer les mots de passes IIS grâce aux commandes natives de Windows

Dans IIS (Internet Information Services), le fichier de configuration applicationHost.config, logé sous C:/Windows/System32/inetsrv/config, contient le compte de service de chaque pool d’applications.

Un pool d’applications est un regroupement de sites et d’applications web. A chaque pool d’application est associé un ou plusieurs programmes intitulés processus de travail ou worker process (w3wp.exe). C’est le processus de travail qui va exécuter la requête http, par exemple.

De ce fait, le programme w3wp.exe s’exécutera avec les droits du compte de service du pool d’applications. Bien évidemment, il est conseillé de donner les droits exactement nécessaires à ce compte de service. Toutefois, le sujet est assez complexe et ne se résume pas qu’à cela.

Stockage du mot de passe du pool d’applications

Ce qui est intéressant c’est le stockage du mot de passe dans le fichier applicationHost.config. En effet, le mot de passe du compte de service est chiffré dans applicationHost.config.

Par exemple, un extrait du fichier pour une configuration SharePoint, qui concerne le pool d’application SecurityTokenServiceApplicationPool:

<configuration> …
<system.applicationHost> …
<applicationPools>
<add name= »SecurityTokenServiceApplicationPool » autoStart= »true » managedPipelineMode= »Integrated »>
<processModel identityType= »SpecificUser » userName= »FORMATIONsvcMOSS27″ password= »[enc:IISWASOnlyAesProvider:UuTHp744ksuY4G/dRfgTRf5kqwdsdf10MNlsYT8Qqtgu7685HRHRS+oUU1rcJ8+5:enc] »

Derrière la balise password, vous trouvez le mot clef chiffré : « [enc:IISWASOnlyAesProvider:UuTHp744ksuY4G/dRfgTRf5kqwdsdf10MNlsYT8Qqtgu7685HRHRS+oUU1rcJ8+5:enc] ».

Le sel de l’histoire c’est qu’il facile de retrouver le mot de passe en clair correspondant grâce à une commande APPCMD de IIS.

Déchiffrage du mot de passe du pool d’applications

La commande APPCMD pour déchiffrer est à  exécuter en tant qu’administrateur dans une invite de commandes:

cd "C:/Windows/System32/inetsrv"

 

appcmd.exe list apppool "SecurityTokenServiceApplicationPool" /text:*

donne le résultat abrégé suivant:

APPPOOL

[add]

[processModel]
identityType: »SpecificUser »
userName: »FORMATIONsvcMOSS27″
password: »Passw0rd@ »

En face de password, vous trouvez le mot de passe en clair.

Précautions pour éviter de divulguer trop d’informations

Cette commande doit être exécutée comme administrateur. Il faut donc être administrateur local pour retrouver le mot de passe.

Cependant, si vous êtes dans une compagnie internationale, avec plusieurs niveaux de ramifications d’administrateurs, vous pourriez récupérer indûment des mots de passe d’autres comptes de services, voire d’administrateurs.

Pire encore, si le compte de service du pool d’applications est le compte Administrateur de domaine !

C’est un argument supplémentaire pour créer des comptes de services spécifiques et de ne jamais utiliser les comptes de domaines comme compte de service.

Commandes AppCmd de IIS

Pour administrer IIS (Internet Information Server), il existe les outils suivants : l’interface graphique du Gestionnaire IIS, les scripts WMI (rootWebAdministration), le PowerShell, le code managé de l’API Microsoft.Web.Administration et l’outil en ligne de commande AppCmd.exe.

Afin d’automatiser l’audit de IIS, j’ai développé une série de petits scripts basés sur AppCmd. Ces scripts ont été rédigés après la lecture de l’article Appcmd.exe (IIS 7) de Microsoft.

Certains des scripts peuvent s’utiliser sans personnalisation. Toutefois, de nombreux scripts nécessitent une adaptation des variables pour fonctionner correctement dans votre environnement.

Liste des scripts:

AUTHAnonymous- Désactive l’authentification anonyme
AUTHBase+ Active l’authentification de base
AUTHClaims+ Active l’emprunt d’identité ASP.NET
AUTHClaimsUser IIS doit emprunter l’identité d’un compte précis
AUTHDigest+ Active l’authentification Digest avec un domaine précis
AUTHFBA+ Active l’authentification par formulaire
AUTHWindows+ Active l’authentification Windows
Backup Sauvegarde la configuration IIS
BackupList Liste les sauvegardes existantes
BackupNommée Sauvegarde IIS avec un nom de sauvegarde imposé
BackupRestaure Restaure une sauvegarde nommée précise
BackupSansConfirm Sauvegarde la configuration IIS. Ne sauvegarde pas le contenu
Compression+ Active la compression HTTP du contenu statique
CompressionParams Configure les paramètres de compression de contenu statique
Custerr Ajoute un message d’erreur personnalisé pour l’erreur 401.2
CustomHeaders Ajoute un en-tête de réponse
DirectoryBrowse- Désactive l’exploration de répertoire
DirectoryBrowse+ Active l’exploration de répertoire
DocDefautFiles- Supprime un fichier de la liste de documents par défaut
DocDefautFiles+ Ajoute un fichier à la liste de documents par défaut
FilteringEtendus+ Autorise les caractères étendus
FilteringExtensions- Supprime une règle applicable à une extension précise de nom de fichier
FilteringExtensions+ Ajoute une règle d’autorisation applicable à une extension précise de nom
de fichier
FilteringExtensionsUnlisted- Refuse les extensions de nom de fichier non répertoriées
FilteringExtensionsWebDav- Le filtrage des extensions de nom de fichier n’est pas appliqué aux
demandes WebDAV
FilteringMaxContenu Spécifie une longueur maximale du contenu
FilteringMaxEntete Spécifie la taille maximale des en-têtes comportant une valeur précise
FilteringMaxURL Spécifie une longueur maximale d’une URL entrante
FilteringURL- Pas d’analyse des URL qui contiennent une séquence précise
FilteringVerb+ Autorise un verbe
FilteringVerbUnlisted- Refuse les verbes non répertoriés
FilteringVerbUnlistedWebDav- Le filtrage des verbes n’est pas appliqué aux demandes WebDAV
Help Affiche l’aide d’AppCmd
IPSecAddress- Crée une règle de refus pour une adresse IPv4
IPSecAddress+ Crée une règle d’autorisation pour une adresse IPv4
ISAPI Crée une restriction ISAPI qui active une extension ISAPI
Log- Désactive la journalisation
Log+ Active la journalisation
MaxBandwidth Limitation de la bande passante pour un site Web
MaxConnexions Limitation du nombre de connexions
MaxTimeout Limitation du timeout pour un site web
MIME Ajoute un type MIME
PoolList Identifie tous les pools d’applications en cours d’exécution
PoolRecycle Recycle tous les pools d’applications en cours d’exécution
Redirect- Désactive la redirection
Redirect+ Active la redirection et redirige les utilisateurs vers un autre site web
RedirectPermanent Change le code d’état retourné pour la redirection (code réponse
RedirectStandard Change le code d’état retourné pour la redirection (code réponse
RedirectTemporaire Change le code d’état retourné pour la redirection (code réponse
RequestsList Affiche la liste des demandes en cours d’exécution
SecurityRule- Crée une règle de refus pour les utilisateurs anonymes
SecurityRule+ Crée une règle d’autorisation pour tous les utilisateurs
SecurityRuleComplex Crée une règle d’autorisation pour les rôles Admin et Invité, ainsi que pour les utilisateurs Alice et Bob, puis applique cette règle aux verbes GET et POST
SiteAdd Ajoute un nouveau site Web
SiteAutoStart Affiche les sites arrêtés qui ne doivent pas s’exécuter automatiquement
SiteConfig Stocke la totalité de la configuration d’un site web dans un fichier au format XML
SiteConfigEnregistre Enregistre les informations de configuration d’un site dans un fichier au
format XML
SiteConfigRestaure Restaure les informations de configuration d’un site à partir d’un fichier au format XML
SiteDelete Supprime un site web
SiteList Affiche les caractéristiques d’un site web
SitesDeplacePool Déplace toutes les applications d’un site vers un nouveau pool d’applications
SiteSet Modifie l’ID d’un site
SitesList Liste tous les sites Web
SitesStartAll Démarre tous les sites
SiteStopped Affiche les sites arrêtés
SMTP+ Configure le courrier électronique SMTP pour remettre immédiatement les
courriels
SSLPage Exige SSL 128 bits pour un fichier HTML
SSLSite Exige SSL 128 bits pour le site Web
Trace+ Active la journalisation du suivi des demandes ayant échoué au niveau du
site
WPList Répertorie les processus de travail en cours d’exécution

Le nom de mes scripts respecte, peu ou prou, les règles suivantes:

  • Un script AppCmd est préfixé avec AppCmd-
  • Le mot qui suit désigne la catégorie concernée (AUTH: Authorisation, WP: Worker Process, Site, SSL, Backup, Max, etc.)
  • Il y a éventuellement un complément (MaxTimeout)
  • Le signe + à la fin désigne un ajout ou une activation
  • Le signe – à la fin désigne un retrait ou une désactivation

Ces scripts sont mis dans le domaine public, pas de droit d’auteur.

A utiliser à vos risques et périls.

AppCmd_V1_0_0.zip