Partager via


Configurer HSTS (HTTP Strict Transport Security) dans Exchange Server

S’APPLIQUE À :oui-img-162016 oui-img-192019 oui-img-se Édition d’abonnement

Vue d’ensemble

Http Strict Transport Security (HSTS) est une norme largement prise en charge qui permet de protéger les visiteurs du site web en garantissant que leur navigateur se connecte toujours à l’aide d’une connexion HTTPS. HSTS fonctionne en envoyant un en-tête de réponse HTTP spécial du serveur au navigateur appelé Strict-Transport-Security (STS). Cet en-tête inclut une max-age directive qui spécifie la durée (en secondes) afin que le navigateur se souvienne que le site est accessible uniquement à l’aide du protocole HTTPS. Une fois qu’un navigateur reçoit cet en-tête, il change automatiquement toutes les requêtes HTTP pour accéder au site en requêtes HTTPS.

HSTS ne se contente pas d’ajouter une protection contre les scénarios d’attaque courants, il permet également de supprimer la pratique courante (et désormais non sécurisée) qui consiste à rediriger les utilisateurs d’une URL HTTP vers une URL HTTPS. HSTS peut également être utilisé pour traiter les attaques réseau actives et passives. Toutefois, HSTS ne traite pas les logiciels malveillants, l’hameçonnage ou les vulnérabilités du navigateur.

Fonctionnement de HSTS

Le navigateur est chargé d’appliquer HSTS lorsqu’il reçoit l’en-tête Strict-Transport-Security via une connexion HTTPS. Toutefois, certaines conditions doivent être remplies avant que le navigateur n’applique HSTS. Plus précisément, le certificat utilisé pour chiffrer la session :

  • Doit être valide et approuvé par le client ;
  • Ne doit pas avoir expiré ; et
  • Doit contenir le domaine ou le sous-domaine qui a été appelé dans le navigateur.

Pour obtenir des recommandations plus générales, consultez Naviguer en toute sécurité sur le web avec Microsoft Edge .

Une fois que le navigateur est conscient qu’un domaine a activé HSTS, il :

  • Utilisez toujours une https:// connexion, y compris lorsque vous cliquez sur un http:// lien ou après avoir tapé une URL dans la barre d’adresses sans spécifier de protocole.
  • Supprime la possibilité pour les utilisateurs de cliquer sur les avertissements (par exemple, certificats expirés ou non valides, incompatibilités de noms, etc.).

Il existe certains scénarios (par exemple, l’utilisateur dispose d’un nouvel ordinateur, d’un nouveau profil, d’un nouveau navigateur ou a effacé les données et les paramètres du navigateur) où un utilisateur est vulnérable pendant une courte période, car il visite le site pour la première fois sans que le SSTS soit appliqué. Pour résoudre ces scénarios, le projet Chromium gère un HSTS Preload List (qui est également utilisé par d’autres navigateurs tels que Microsoft Edge et Mozilla Firefox). le Preload List applique HSTS même lors de la première visite d’un site.

Vous pouvez soumettre votre domaine à la liste HSTS. Le serveur web (ou dans notre cas, votre serveur Exchange) doit également envoyer la directive dans le preload cadre de l’en-tête Strict-Transport-Security pour signaler que le préchargement HSTS doit être effectué par le navigateur.

Comment Exchange Server gère les connexions HTTP

Par défaut, Exchange Server ne redirige pas le trafic HTTP vers HTTPS, car le site web par défaut requiert SSL. Pour plus d’informations, consultez Paramètres par défaut pour les répertoires virtuels Exchange .

Toutefois, il est possible de configurer une redirection automatique de HTTP vers HTTPS en suivant les étapes décrites dans Configurer la redirection HTTP vers HTTPS pour Outlook sur le web dans Exchange Server, et par conséquent, Exchange Server accepte les connexions établies via HTTP et répond avec un HTTP 302 redirect.

HSTS peut aider à réduire considérablement le nombre de redirections HTTP vers HTTPS non sécurisées, car la réécriture vers HTTPS est effectuée par le navigateur lui-même et non plus par le serveur dans le cadre d’une HTTP 302 redirect réponse. L’utilisation de HSTS peut également entraîner des améliorations des performances, bien que ce ne soit pas son objectif principal.

Quelle que soit la configuration par défaut (qui n’autorise pas les connexions non chiffrées), il est recommandé de fournir l’en-tête dans le Strict-Transport-Security cadre de l’en-tête de réponse.

Activer HSTS sur Exchange Server

L’en-tête STS peut être configuré sur Exchange Server 2019 et Exchange Server 2016, bien que la façon dont vous configurez chaque version soit différente.

Importante

HSTS doit être configuré uniquement sur le Default Web Site , car il s’agit du point de terminaison auquel les clients se connectent. HSTS ne doit pas être configuré sur .Exchange Back End Vous devez également envisager de configurer HSTS via l’en-tête de réponse sur les appareils qui fonctionnent devant un serveur Exchange sur la couche 7 (par exemple, des équilibreurs de charge ou des proxys inverses).

Il est recommandé de commencer par une max-age configuration de 300 (secondes), ce qui est de 5 minutes. Une fois la modification effectuée, vous devez surveiller étroitement la connectivité du client au serveur Exchange et restaurer la modification en cas de problème.

Mettez à jour vers une max-age valeur d’une semaine (604800) ou d’un mois (2592000) et attendez l’intégralité max-age de la phase avant de passer à autre chose. Une max-age valeur d’un an (31536000) doit être définie au minimum du point de vue de la HSTS Preload Listsécurité et est également obligatoire si vous envisagez d’ajouter votre domaine au . Il est recommandé de définir la max-age valeur sur une valeur de deux ans (63072000).

Remarque

Les exemples suivants définissent la max-age valeur sur 300 secondes, ce qui est une configuration qui doit être utilisée uniquement pour valider les fonctionnalités. Veillez à ajuster la valeur de l’attribut à une valeur plus élevée lorsque vous êtes prêt à mettre la configuration en production.

Exchange Server 2019

Pour configurer Exchange Server 2019 pour l’envoi de l’en-têteStrict-Transport-Security, vous pouvez utiliser l’Windows PowerShell ou l’interface utilisateur du Gestionnaire des services Internet (IU). Dans la section suivante, nous décrivons les deux méthodes. La configuration HSTS est une configuration par serveur et doit donc être effectuée sur chaque serveur Exchange.

HSTS configuration via PowerShell

Exécutez les commandes suivantes à partir d’une fenêtre PowerShell avec élévation de privilèges pour configurer et activer HSTS :

Remarque

Pour configurer une valeur plus élevée max-age pour Exchange Server 2019, vous pouvez réexécuter les commandes à l’aide d’une valeur plus élevée. Il n’est pas nécessaire de supprimer la configuration existante au préalable.

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$sitesCollection = Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection
$siteElement = Get-IISConfigCollectionElement -ConfigCollection $sitesCollection -ConfigAttribute @{"name"="Default Web Site"}
$hstsElement = Get-IISConfigElement -ConfigElement $siteElement -ChildElementName "hsts"
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "enabled" -AttributeValue $true
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "max-age" -AttributeValue 300
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "includeSubDomains" -AttributeValue $true

Si vous envisagez d’ajouter votre domaine à , HSTS Preload Listvous devez vous assurer que la preload directive est également envoyée dans le cadre de l’en-tête Strict-Transport-Security . Vous ne devez pas envoyer la preload directive si vous n’avez pas l’intention HSTS Preload Listde soumettre votre domaine au .

Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "preload" -AttributeValue $true

Enfin, les commandes suivantes doivent être exécutées pour terminer la configuration de HSTS :

Stop-IISCommitDelay
Remove-Module IISAdministration

Configuration de HSTS via le Gestionnaire des services Internet

Effectuez les étapes suivantes dans le Gestionnaire des services Internet information pour configurer et activer HSTS :

  1. Démarrer le Gestionnaire des services Internet (InetMgr.exe)

  2. Accédez à Sites et cliquez sur Default Web Site

  3. Dans le Actions menu, sélectionnez HSTS...

  4. Cochez la Enable case, définissez la max-age valeur et sélectionnez les directives en fonction de la description de cet article.

    Importante

    Nous ne pouvons pas rediriger HTTP vers HTTPS à l’aide de la configuration HSTS, car cela interrompt la connectivité pour certains scénarios, notamment l’environnement de ligne de commande Exchange Management Shell (EMS). Si vous souhaitez activer la redirection HTTP vers HTTPS, vous devez suivre les étapes décrites dans Configurer la redirection http vers https pour Outlook sur le web dans Exchange Server.

  5. Cliquez OK pour terminer et activer la configuration

Exchange Server 2016

Remarque

Bien que la configuration de HSTS soit possible via l’interface utilisateur sur les systèmes d’exploitation pris en charge par Exchange Server 2019, ce contrôle n’est pas disponible en mode natif sur les systèmes d’exploitation pris en charge par Exchange Server 2016. Par conséquent, nous décrivons uniquement les étapes à effectuer via PowerShell.

Pour configurer Exchange Server 2016 pour l’envoi de l’en-têteStrict-Transport-Security, exécutez les commandes suivantes à partir d’une fenêtre PowerShell avec élévation de privilèges. La configuration HSTS est une configuration par serveur et doit donc être effectuée sur chaque serveur Exchange :

Remarque

Pour configurer une valeur plus élevée max-age pour Exchange Server 2016, vous devez d’abord supprimer l’en-tête réponse HTTP avant d’exécuter à nouveau les commandes suivantes.

Windows Server 2012 & 2012 R2

Si vous n’envisagez pas d’ajouter votre domaine à , HSTS Preload Listvous devez vous assurer que la preload directive n’est pas envoyée dans le cadre de l’en-tête Strict-Transport-Security . Exécutez la commande suivante pour configurer HSTS sans envoyer la preload directive :

Import-Module WebAdministration
Add-WebConfigurationProperty -Filter "system.webServer/httpProtocol/customHeaders" -PSPath "IIS:\Sites\Default Web Site" -Name . -AtElement @{name="Strict-Transport-Security"} -Value @{name="Strict-Transport-Security";value="max-age=300; includeSubDomains"}

ou

Si vous envisagez d’ajouter votre domaine à , HSTS Preload Listvous devez vous assurer que la directive est envoyée dans le preload cadre de l’en-tête Strict-Transport-Security . Exécutez la commande suivante pour configurer Exchange Server pour envoyer la directive dans le preload cadre de la configuration HSTS :

Import-Module WebAdministration
Add-WebConfigurationProperty -Filter "system.webServer/httpProtocol/customHeaders" -PSPath "IIS:\Sites\Default Web Site" -Name . -AtElement @{name="Strict-Transport-Security"} -Value @{name="Strict-Transport-Security";value="max-age=300; includeSubDomains; preload"}

Windows Server 2016

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$iisConfig = Get-IISConfigSection -SectionPath "system.webServer/httpProtocol" -CommitPath "Default Web Site" | Get-IISConfigCollection -CollectionName "customHeaders"

Si vous n’envisagez pas d’ajouter votre domaine à , HSTS Preload Listvous devez vous assurer que la preload directive n’est pas envoyée dans le cadre de l’en-tête Strict-Transport-Security . Exécutez la commande suivante pour configurer HSTS sans envoyer la preload directive :

New-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains";}

ou

Si vous envisagez d’ajouter votre domaine à , HSTS Preload Listvous devez vous assurer que la directive est envoyée dans le preload cadre de l’en-tête Strict-Transport-Security . Exécutez la commande suivante pour configurer Exchange Server pour envoyer la directive dans le preload cadre de la configuration HSTS :

New-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains; preload";}

Enfin, les commandes suivantes doivent être exécutées pour terminer la configuration de HSTS :

Stop-IISCommitDelay
Remove-Module IISAdministration

Désactiver HSTS sur Exchange Server

Si vous souhaitez empêcher Exchange Server d’envoyer l’en-têteStrict-Transport-Security, vous pouvez restaurer la configuration sur une base par serveur. Les étapes de désactivation de HSTS sont différentes Exchange Server 2016 et Exchange Server 2019.

Remarque

La spécification HSTS vous permet d’envoyer la max-age directive avec la valeur .0 Cette configuration peut être utilisée pour remplacer les informations de stratégie HSTS mises en cache par les navigateurs. Si vous envisagez de supprimer votre Exchange Server configuration HSTS, il peut être utile de définir d’abord une max-age valeur de avant de supprimer la Strict-Transport-Security configuration d’en-tête0.

Exchange Server 2019

Pour empêcher Exchange Server 2019 d’envoyer l’en-têteStrict-Transport-Security, vous pouvez utiliser le Windows PowerShell ou l’interface utilisateur du Gestionnaire des services Internet (IU). Dans la section suivante, nous décrivons les deux méthodes.

HSTS configuration via PowerShell

Exécutez les commandes suivantes à partir d’une fenêtre PowerShell avec élévation de privilèges pour désactiver HSTS :

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$sitesCollection = Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection
$siteElement = Get-IISConfigCollectionElement -ConfigCollection $sitesCollection -ConfigAttribute @{"name"="Default Web Site"}
$hstsElement = Get-IISConfigElement -ConfigElement $siteElement -ChildElementName "hsts"
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "enabled" -AttributeValue $false
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "max-age" -AttributeValue 0
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "includeSubDomains" -AttributeValue $false

Si la configuration HSTS précédente devait envoyer la preload directive, veillez également à désactiver ceci :

Importante

N’oubliez pas également de demander la suppression de la liste de préchargement HSTS . Si vous oubliez de supprimer le domaine de la liste de préchargement, les navigateurs continueront à essayer d’appliquer HSTS.

Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "preload" -AttributeValue $false

Enfin, les commandes suivantes doivent être exécutées pour terminer la configuration de HSTS :

Stop-IISCommitDelay
Remove-Module IISAdministration

Configuration de HSTS via le Gestionnaire des services Internet

Procédez comme suit dans le Gestionnaire des services Internet Information Pour désactiver HSTS :

  1. Démarrer le Gestionnaire des services Internet (InetMgr.exe)

  2. Accédez à Sites et cliquez sur Default Web Site

  3. Dans le Actions menu, sélectionnez HSTS...

  4. Décochez toutes les directives, définissez la max-age directive sur 0 , puis décochez la Enable case

  5. Cliquez OK pour terminer la configuration

Exchange Server 2016

Remarque

Bien que la configuration de HSTS soit possible via l’interface utilisateur sur les systèmes d’exploitation pris en charge par Exchange Server 2019, ce contrôle n’est pas disponible en mode natif sur les systèmes d’exploitation pris en charge par Exchange Server 2016. Par conséquent, nous décrivons uniquement les étapes à effectuer via PowerShell.

Pour empêcher Exchange Server 2016 d’envoyer l’en-têteStrict-Transport-Security, exécutez les commandes suivantes à partir d’une fenêtre PowerShell avec élévation de privilèges sur chacun de vos serveurs Exchange :

Windows Server 2012 & 2012 R2

Import-Module WebAdministration
Remove-WebConfigurationProperty -PSPath "IIS:\Sites\Default Web Site" -Filter "system.webServer/httpProtocol/customHeaders" -Name . -AtElement @{name="Strict-Transport-Security"}

Windows Server 2016

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$iisConfig = Get-IISConfigSection -SectionPath "system.webServer/httpProtocol" -CommitPath "Default Web Site" | Get-IISConfigCollection -CollectionName "customHeaders"

Si la configuration HSTS précédente n’a pas envoyé la preload directive, exécutez la commande suivante :

Remove-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains";}

ou

Si la configuration HSTS précédente devait envoyer la preload directive, veillez à exécuter cette commande :

Remove-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains; preload";}

Enfin, les commandes suivantes doivent être exécutées pour terminer la configuration de HSTS :

Stop-IISCommitDelay
Remove-Module IISAdministration

Vérifier que HSTS fonctionne comme prévu

La meilleure façon de confirmer que la protection HSTS fonctionne comme prévu est d’utiliser un navigateur moderne qui prend en charge HSTS (par exemple, Microsoft Edge, Firefox, Chrome, Safari, Opera, etc.). Les étapes suivantes peuvent être suivies lors de l’utilisation du navigateur Microsoft Edge. Si vous utilisez un autre navigateur, consultez la documentation pour connaître les étapes de vérification des indicateurs HSTS :

  1. Ouvrez le navigateur et établissez une connexion HTTPS à OWA ou ECP. Assurez-vous que le certificat retourné par le serveur Exchange correspond au (sous-) domaine que vous avez utilisé (par exemple, e2k16-2.contoso.lab) et qu’il est approuvé par l’ordinateur client (car cela est nécessaire pour activer la protection HSTS du navigateur pour le domaine).
  2. Tapez edge://net-internals/#hsts dans la barre d’adresses et appuyez sur Entrée.
  3. Entrez le nom de domaine que vous avez utilisé pour accéder à OWA ou ECP (par exemple, e2k16-2.contoso.lab) dans la Query HSTS/PKP domain zone, puis appuyez sur Entrée.

Exemple :

Si le résultat est Not found, cela signifie que HSTS n’est pas utilisé pour le domaine. La raison peut être que l’URL n’a pas été consultée avant ou que l’entrée avec le magasin de stratégies HSTS a expiré (elle est valide pour l’heure spécifiée dans la max-age directive).

Si un résultat est trouvé, la sortie ressemble à ceci :

Si HSTS est utilisé et qu’une connexion n’est pas approuvée (par exemple, l’URL ne correspond pas au domaine pour lequel le certificat est émis ou le certificat n’est pas approuvé ou a expiré), l’utilisateur voit l’avertissement suivant qui ne peut pas être contourné :

Page de blocage Microsoft Edge :

Page de blocage Mozilla Firefox :