Partager via


Étape de configuration 4 : Configurer la sécurité des applications

par Keith Newman et Robert McMurray

Lors de cette phase de conception de votre site web ASP.NET, vous allez configurer les paramètres de sécurité disponibles dans IIS. Les sections suivantes traitent des paramètres de sécurité courants pour les applications ASP.NET :

4.1. Isoler les applications web

Implémentez les recommandations suivantes pour isoler les sites web et les applications web sur votre serveur.

  • Utilisez un pool d'applications par site web ou application web.
  • Limitez l'accès aux dossiers et aux fichiers de site à l'identité du pool d'applications.
  • Configurez un dossier temporaire ASP.NET distinct par site et n'accordez l'accès qu'à l'identité du pool d'applications.
  • Veillez à définir une liste de contrôle d'accès sur chaque racine du site pour autoriser uniquement l'accès à l'identité du pool d'applications.

Si vous avez plusieurs applications par pool d'applications, créez suffisamment de pools d'applications et déplacez certaines des applications vers les nouveaux pools.

Pour créer un pool d'applications

  1. Ouvrez le Gestionnaire IIS.
  2. Dans le volet Connexions, cliquez sur Pools d'applications.
  3. Dans le volet Actions, cliquez sur Ajouter un pool d'applications.
  4. Dans la zone Nom, tapez un nom unique pour le pool d'applications.
  5. Sélectionnez la Version de .NET Framework et le mode pipeline Géré.
  6. Cliquez sur OK.

Pour déplacer une application vers un autre pool d'applications

  1. Ouvrez le Gestionnaire IIS.
  2. Dans la page Connexions, sélectionnez l'application web ou le site web que vous voulez déplacer.
  3. Dans le volet Actions, cliquez sur Paramètres de base.
  4. Dans la boîte de dialogue Modifier le site, cliquez sur Sélectionner pour ouvrir la boîte de dialogue Sélectionner un pool d'applications et sélectionnez le pool d'applications dans le menu Pool d'applications.
  5. Cliquez sur OK pour fermer la boîte de dialogue Sélectionner un pool d'applications, puis cliquez sur OK pour fermer le menu Modifier le site.

Pour ajouter une identité de pool d'applications à une liste ACL de dossier ou de fichier

  1. Ouvrez l’Explorateur Windows et accédez au dossier ou fichier.
  2. Cliquez avec le bouton droit sur le dossier ou fichier, puis cliquez sur Propriétés.
  3. Sélectionnez l'onglet Sécurité, puis cliquez sur Modifier.
  4. Cliquez sur Ajouter, sur Emplacements, puis sélectionnez votre serveur comme emplacement de recherche.
  5. Dans la zone Entrez les noms des objets à sélectionner, tapez IIS APPPOOL\nom_pool_applications, où nom_pool_applications est l’identité du pool d’applications.
  6. Cliquez sur OK, sur OK, puis de nouveau sur OK pour fermer les boîtes de dialogue.

4.2. Niveaux de confiance .NET

Cette section décrit comment définir le niveau de confiance des applications à l'aide de l'interface utilisateur ou de la ligne de commande du gestionnaire IIS.

Pour définir un niveau de confiance à l'aide de l'interface utilisateur

  1. Ouvrez le gestionnaire IIS et accédez au niveau que vous souhaitez gérer.
  2. Dans Affichage des fonctionnalités, double-cliquez sur Niveaux de confiance .NET.
  3. Dans la page Niveaux de confiance .NET, sélectionnez un niveau de confiance dans la liste déroulante Niveau de confiance, puis cliquez sur Appliquer dans le volet Actions.

Pour définir un niveau de confiance à l’aide de la ligne de commande

Pour définir un niveau de confiance, utilisez la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:trust /level:Full|High|Medium|Low|Minimal

L'attribut de niveau utilise l'une des cinq valeurs possibles qui correspondent aux fichiers de stratégie de sécurité d'accès du code (CAS) préconfigurés. Par exemple, pour définir le niveau de confiance Full, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:trust /level:Full

Remarque

Quand vous utilisez Appcmd.exe pour configurer l'élément trust au niveau global dans IIS 8, spécifiez /commit:WEBROOT dans la commande pour que les modifications soient apportées au fichier Web.config racine au lieu de ApplicationHost.config.

4.3. Authentification .NET

Dans Planifier un site web ASP.NET sur IIS, vous avez pris des décisions de conception concernant le mode d'authentification le plus adapté à votre application.

Authentification par formulaire ASP.NET

Cette section décrit comment configurer l'authentification par formulaire ASP.NET à l'aide de l'interface utilisateur ou de la ligne de commande du gestionnaire IIS.

Pour configurer l'authentification par formulaire à l'aide de l'interface utilisateur

  1. Ouvrez le gestionnaire IIS et accédez au niveau que vous souhaitez gérer.
  2. Dans Affichage des fonctionnalités, double-cliquez sur Authentification.
  3. Dans la page Authentification, sélectionnez Authentification par formulaire.
  4. Dans le volet Actions, cliquez sur Activer pour utiliser l'authentification par formulaire avec les paramètres par défaut.
  5. Dans le volet Actions, cliquez sur Modifier.
  6. Dans la boîte de dialogue Modifier les paramètres d'authentification par formulaire, dans la zone de texte URL de connexion, tapez le nom de la page où les clients se connectent.
  7. Dans la zone de texte Délai d'attente du cookie d'authentification (en minutes), tapez le nombre de minutes à utiliser pour la valeur de délai d'attente.
  8. Dans la liste Mode, sélectionnez le mode de cookie à utiliser.
  9. Dans la zone de texte Nom, tapez le nom du cookie.
  10. Dans la liste Mode de protection, sélectionnez le mode de protection à utiliser.
  11. Cochez la case Exige SSL.
  12. Cochez la case Étendre l'expiration du cookie à chaque demande, puis cliquez sur OK.

Pour configurer l'authentification par formulaire à l'aide de la ligne de commande

Pour activer l'authentification par formulaire, utilisez la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:system.web/authentication /mode:None|Windows|Passport|Forms

Par défaut, IIS 8 affecte à l'attribut mode la valeur Windows, ce qui désactive l'authentification par formulaire. Si vous affectez à l'attribut la valeur Forms, vous activez l'authentification par formulaire. Par exemple, pour activer l'authentification par formulaire, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:system.web/authentication /mode:Forms

Remarque

Quand vous utilisez Appcmd.exe pour configurer l'élément authentication au niveau global dans IIS 8, spécifiez /commit:WEBROOT dans la commande pour que les modifications soient apportées au fichier Web.config racine au lieu de ApplicationHost.config.

Pour spécifier l'URL de connexion pour l'authentification par formulaire, utilisez la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.loginURL:string

La variable forms.loginURL:string est le nom de la page où les clients se connectent. La valeur par défaut est Login.aspx. Par exemple, pour spécifier l'URL de connexion pour l'authentification par formulaire, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.loginURL:login.aspx

Remarque

Quand vous utilisez Appcmd.exe pour configurer l'élément authentication au niveau global dans IIS 8, spécifiez /commit:WEBROOT dans la commande pour que les modifications soient apportées au fichier Web.config racine au lieu de ApplicationHost.config.

Pour spécifier le délai d'expiration d'authentification pour l'authentification par formulaire, utilisez la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.timeout:TimeSpan

La variable forms.timeout:TimeSpan est la durée en minutes au bout de laquelle le cookie utilisé pour l'authentification expire. La valeur par défaut est 30 minutes. Par exemple, pour spécifier le délai d'expiration d'authentification pour l'authentification par formulaire, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.timeout:30

Remarque

Quand vous utilisez Appcmd.exe pour configurer l'élément authentication au niveau global dans IIS 8, spécifiez /commit:WEBROOT dans la commande pour que les modifications soient apportées au fichier Web.config racine au lieu de ApplicationHost.config.

Pour configurer le nom du cookie d'authentification par formulaire, utilisez la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.name:string

La variable forms.name:string est le nom du cookie utilisé pour l'authentification par formulaire. La valeur par défaut est .ASPXAUTH. Par exemple, pour configurer le nom du cookie d'authentification par formulaire, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.name:.ASPXUTH

Pour configurer le mode de cookie pour l'authentification par formulaire, utilisez la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.cookieless:UseUri|UseCookies|AutoDetect|UseDeviceProfile

La valeur par défaut pour forms.cookieless est UseDeviceProfile. Par exemple, pour configurer le mode de cookie pour l'authentification par formulaire pour utiliser le paramètre Utiliser le profil de périphérique, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.cookieless:UseDeviceProfile

Pour configurer le mode de protection de cookie pour l'authentification par formulaire, utilisez la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.protection:All|None|Encryption|Validation

La valeur par défaut pour forms.protection est All. Par exemple, pour configurer le mode de protection de cookie pour l'authentification par formulaire pour utiliser le paramètre Chiffrement et validation, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.protection:All

Pour exiger le protocole SSL pour un cookie d'authentification, utilisez la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.requireSSL:true|false

La valeur par défaut pour forms.requireSSL est false. Si vous affectez à cet attribut la valeur true, vous exigez le protocole SSL. Par exemple, pour exiger le protocole SSL pour un cookie d'authentification, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.requireSSL:true

Pour mettre en cache le contenu fréquemment demandé, utilisez la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.slidingExpiration:true|false

La valeur par défaut pour forms.slidingExpiration est true. Par exemple, pour mettre en cache le contenu fréquemment demandé, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:system.web/authentication /forms.slidingExpiration:true

Authentification par emprunt d'identité ASP.NET

Pour configurer l'authentification par emprunt d'identité à l'aide de l'interface utilisateur

  1. Ouvrez le gestionnaire IIS et accédez au niveau que vous souhaitez gérer.
  2. Dans Affichage des fonctionnalités, double-cliquez sur Authentification.
  3. Dans la page Authentification, sélectionnez Emprunt d'identité ASP.NET.
  4. Dans le volet Actions, cliquez sur Activer pour utiliser l'authentification par emprunt d'identité ASP.NET avec les paramètres par défaut.
  5. Si vous le souhaitez, dans le volet Actions, cliquez sur Modifier pour définir le principal de sécurité.
  6. Dans la boîte de dialogue Modifier les paramètres d'emprunt d'identité ASP.NET, sélectionnez Utilisateur spécifique ou Utilisateur authentifié. Quel que soit votre choix, IIS utilise cette identité pour le contexte de sécurité de l'application ASP.NET. Par défaut, IIS 8 est configuré pour emprunter l'identité de l'utilisateur authentifié.
  7. Cliquez sur OK pour terminer ou pour passer aux étapes facultatives suivantes pour modifier l'identité à emprunter.
  8. Si vous le souhaitez, cliquez sur Définir pour modifier l'identité Utilisateur spécifique.
  9. Dans la boîte de dialogue Définir les informations d'identification, entrez le nom du compte d'utilisateur dans Nom d'utilisateur, le mot de passe associé à ce compte d'utilisateur dans Mot de passe, puis la même valeur dans Confirmer le mot de passe pour spécifier le nouveau compte qu'IIS doit utiliser pour l'accès anonyme.
  10. Cliquez sur OK pour fermer la boîte de dialogue Définir les informations d'identification.
  11. Cliquez sur OK pour fermer la boîte de dialogue Modifier les paramètres d'emprunt d'identité ASP.NET.

Pour configurer l'authentification par emprunt d'identité à l'aide de la ligne de commande

Pour activer ou désactiver l'emprunt d'identité ASP.NET, utilisez la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:identity /impersonate:true|false

Par défaut, IIS affecte à l'attribut impersonate la valeur false, ce qui désactive l'authentification par emprunt d'identité ASP.NET. Si vous affectez à l'attribut la valeur true, vous activez l'authentification par emprunt d'identité ASP.NET. Par exemple, pour activer l'authentification par emprunt d'identité ASP.NET, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:identity /impersonate:true

Si vous le souhaitez, vous pouvez définir le compte dont IIS doit emprunter l'identité à l'aide de la syntaxe suivante :

appcmd set config /commit:WEBROOT /section:identity /userName:string /password:string

La variable userName:string est le compte dont IIS doit emprunter l'identité et la variable password:string est le mot de passe. Par exemple, pour utiliser un compte nommé Moe dont IIS doit emprunter l'identité, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config /commit:WEBROOT /section:identity /userName: Moe /password:pass@word1

Remarque

Quand vous utilisez Appcmd.exe pour configurer l'élément identity au niveau global dans IIS 8, spécifiez /commit:WEBROOT dans la commande pour que les modifications soient apportées au fichier Web.config racine au lieu de ApplicationHost.config.

4.4. Paramètres de clé d’ordinateur

Cette section décrit comment générer des clés d'ordinateurs pour votre application ASP.NET à l'aide de l’interface utilisateur du gestionnaire IIS.

Pour générer des clés d'ordinateurs à l'aide de l'interface utilisateur

  1. Ouvrez le gestionnaire IIS et accédez au niveau que vous souhaitez gérer.
  2. Dans Affichage des fonctionnalités, double-cliquez sur Clé d'ordinateur.
  3. Dans la page Clé d'ordinateur, sélectionnez une méthode de validation dans la liste Méthode de validation. La méthode de validation par défaut est SHA1.
  4. Choisissez une méthode de chiffrement dans la liste Méthode de chiffrement. La méthode de chiffrement par défaut est Automatique.
  5. Si vous le souhaitez, configurez les paramètres des clés de validation et de déchiffrement.
  6. Dans le volet Actions, cliquez sur Générer les clés, puis sur Appliquer.

4.5. Communication TLS/SSL

Cette section décrit comment configurer la sécurité TLS/SSL pour votre application.

Après avoir obtenu un certificat de serveur à partir d'une autorité de certification, appliquez les procédures décrites dans les sections suivantes :

  1. Liaison SSL
  2. Exiger le protocole SSL pour votre site
  3. Certificats clients

Liaison SSL

Cette section décrit comment ajouter une liaison SSL à votre site à l'aide de l'interface utilisateur ou de la ligne de commande du gestionnaire IIS.

Pour ajouter une liaison SSL à un site à l’aide de l’interface utilisateur

  1. Ouvrez le Gestionnaire IIS.
  2. Dans le volet Connexions, développez le nœud Sites dans l'arborescence, puis sélectionnez le site pour lequel vous souhaitez ajouter une liaison.
  3. Dans le volet Actions , cliquez sur Liaisons.
  4. Dans la boîte de dialogue Liaisons de site Web , cliquez sur Ajouter.
  5. Dans la boîte de dialogue Ajouter la liaison de site, dans la liste Type, sélectionnez https.
  6. Dans la liste Adresse IP, sélectionnez Toutes non attribuées (sauf si vous souhaitez utiliser une adresse IP spécifique).
  7. Dans la zone Port, tapez le numéro du port (la valeur par défaut est 443).
  8. Dans la zone Nom d'hôte, tapez le nom de l'ordinateur hôte.
  9. Si vous souhaitez prendre en charge plusieurs sites web sécurisés à l'aide de la même adresse IP, cochez la case Exiger l'indication du nom de serveur.
  10. Dans la liste Certificat SSL, sélectionnez le certificat pour votre site web. Si votre certificat ne figure pas dans la liste, cliquez sur Sélectionner et recherchez le certificat à l'aide de la boîte de dialogue Sélectionner un certificat.
  11. Cliquez sur OK.

Pour ajouter une liaison SSL à un site à l’aide de la ligne de commande

Pour ajouter une liaison à un site, utilisez la syntaxe suivante :

appcmd set site /site.name:string /+bindings.[protocol='string', bindingInformation='string']

La variable site.name:string est le nom du site auquel vous souhaitez ajouter une liaison. La variable protocol='string' est le protocole que vous voulez utiliser et la variable bindingInformation='string' est la combinaison d'adresse IP, de port et d'en-tête d'hôte.

Par exemple, pour configurer un site nommé contoso pour avoir une liaison HTTPS pour toutes les adresses IP, sur le port 443 et sans en-tête d'hôte, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set site /site.name:contoso /+bindings.[protocol='https', bindingInformation='*:443:']

Exiger le protocole SSL pour votre site

Cette section décrit comment exiger le protocole SSL pour votre site web à l'aide de l'interface utilisateur ou de la ligne de commande du gestionnaire IIS.

Pour exiger le protocole SSL à l'aide de l'interface utilisateur

  1. Ouvrez le gestionnaire IIS et accédez au niveau que vous souhaitez gérer. Assurez-vous que vous êtes au niveau du site, de l'application ou du répertoire. Les Paramètres SSL ne sont pas disponibles au niveau du serveur.

    Remarque

    Si vous souhaitez configurer le protocole SSL au niveau du fichier, accédez au fichier dans Affichage du contenu, puis cliquez sur Basculer vers l'affichage des fonctionnalités dans le volet Actions.

  2. Dans Affichage des fonctionnalités, double-cliquez sur Paramètres SSL.

  3. Sur la page Paramètres SSL, sélectionnez Exiger SSL.

  4. Dans le volet Actions, cliquez sur Appliquer.

Pour exiger le protocole SSL à l'aide de la ligne de commande

Pour exiger le protocole SSL, utilisez la syntaxe suivante :

appcmd set config "site|URL" /section:access /sslFlags:Ssl /commit:APPHOST

La variable site|URL est le site, l'application, le répertoire virtuel ou le fichier où vous souhaitez qu'IIS 8 exige le protocole SSL. Par exemple, pour exiger le protocole SSL pour le site web par défaut, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config "Default Web Site" /section:access /sslFlags:Ssl /commit:APPHOST

Pour exiger le protocole SSL pour le fichier iisstart.htm sur le site web par défaut, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config "http://localhost/iisstart.htm" /section:access /sslFlags:Ssl /commit:APPHOST

Certificats clients

Spécifier des certificats clients à l'aide de l'interface utilisateur

  1. Ouvrez le gestionnaire IIS et accédez au niveau que vous souhaitez gérer. Assurez-vous que vous êtes au niveau du site, de l'application ou du répertoire. Les Paramètres SSL ne sont pas disponibles au niveau du serveur.

    Remarque

    Si vous souhaitez configurer le protocole SSL au niveau du fichier, accédez au fichier dans Affichage du contenu, puis cliquez sur Basculer vers l'affichage des fonctionnalités dans le volet Actions.

  2. Dans Affichage des fonctionnalités, double-cliquez sur Paramètres SSL.

  3. Dans la page Paramètres SSL, sélectionnez éventuellement Exiger SSL. Vous n'avez pas besoin du protocole SSL pour Ignorer ou Accepter les certificats clients.

  4. Dans la page Paramètres SSL, dans la zone Certificats clients, appliquez l'une des procédures suivantes :

    • Sélectionnez Ignorer si vous ne souhaitez pas accepter de certificat client même si un client en présente un.
    • Sélectionnez Accepter pour accepter les certificats clients.
    • Sélectionnez Exiger pour exiger des certificats clients. Pour utiliser l'option Exiger les certificats clients, vous devez activer l'option Exiger SSL.
  5. Dans le volet Actions, cliquez sur Appliquer.

Pour spécifier des certificats clients à l'aide de la ligne de commande

Pour spécifier s'il faut utiliser des certificats clients, utilisez la syntaxe suivante :

appcmd set config "site|URL" /section:access /sslFlags:Ssl|SslNegotiateCert|SslRequireCert /commit:APPHOST

La variable site|URL est le site, l'application, le répertoire virtuel ou le fichier où vous souhaitez qu'IIS active les certificats clients. Par exemple, pour accepter les certificats clients pour le site web par défaut, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config "Default Web Site" /section:access /sslFlags:SslNegotiateCert /commit:APPHOST

Pour accepter les certificats clients pour le fichier iisstart.htm sur le site web par défaut, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config "http://localhost/iisstart.htm" /section:access /sslFlags:SslNegotiateCert /commit:APPHOST

Vous pouvez spécifier une ou plusieurs des valeurs de l'attribut sslFlags. Si vous souhaitez spécifier plusieurs valeurs, séparez chacun d'elles par une virgule (,). Par exemple, pour exiger à la fois le protocole SSL et les certificats clients sur le site web par défaut, tapez la commande suivante dans l'invite de commandes et appuyez sur ENTRÉE :

appcmd set config "Default Web Site" /section:access /sslFlags:Ssl,SslRequireCert /commit:APPHOST