ADC

Configurer la prise en charge de HTTP strict Transport Security (HSTS)

Le protocole HTTP Strict Transport Security (HSTS) permet de protéger les sites Web contre diverses attaques, telles que la suppression du protocole SSL, le détournement de cookie et la rétrogradation du protocole. À l’aide de HSTS, un serveur peut imposer l’utilisation d’une connexion HTTPS pour toutes les communications avec un client. En d’autres termes, le site n’est accessible qu’en utilisant HTTPS.

Les appliances NetScaler prennent en charge le protocole HSTS en tant qu’option intégrée dans les profils SSL et les serveurs virtuels SSL. La prise en charge de HSTS est requise pour la certification A+ des laboratoires SSL.

Activez HSTS dans un profil frontal SSL ou sur un serveur virtuel SSL. Si vous activez les profils SSL, vous devez activer HSTS sur un profil SSL au lieu de l’activer sur un serveur virtuel SSL.

Spécifiez la durée (en secondes) pendant laquelle un navigateur ne doit pas accepter de connexions non cryptées. Utilisez le maxage paramètre pour spécifier que le protocole HSTS est en vigueur pour cette durée pour ce client. Par défaut, l’en-tête HSTS s’applique uniquement au domaine racine. Vous pouvez spécifier si des sous-domaines doivent être inclus. Par exemple, vous pouvez spécifier que les sous-domaines de www.example.com, tels que www.abc.example.com et www.xyx.example.com, sont uniquement accessibles via HTTPS en définissant le IncludeSubdomains paramètre sur YES. Les sous-domaines doivent prendre en charge le protocole HTTPS. Toutefois, il n’est pas nécessaire que le HSTS soit activé pour chacun d’entre eux.

Si vous accédez à des sites Web prenant en charge HSTS, l’en-tête de réponse du serveur contient une entrée similaire à la suivante :

En-tête de réponse HSTS

Le client stocke ces informations pendant la durée spécifiée dans le paramètre max-age. Pour les demandes ultérieures à ce site Web, le client vérifie sa mémoire à la recherche d’une entrée HSTS. Si une entrée est trouvée, elle accède à ce site Web uniquement en utilisant HTTPS. Par exemple, si vous définissez le maxage paramètre sur 31536000, le navigateur se souvient de n’utiliser que le protocole HTTPS pour accéder au domaine pendant un an.

Vous pouvez configurer HSTS au moment de la création d’un profil SSL ou d’un serveur virtuel SSL à l’aide de la commande add. Vous pouvez également configurer HSTS sur un profil SSL existant ou un serveur virtuel SSL en le modifiant à l’aide de la commande set.

Configurer HSTS à l’aide de la CLI

À l’invite de commandes, tapez :

add ssl vserver <vServerName> -maxage <positive_integer> -IncludeSubdomains ( YES | NO)
set ssl vserver <vServerName> -HSTS ( ENABLED | DISABLED )
<!--NeedCopy-->

OU

add ssl profile <name> -maxage <positive_integer> -IncludeSubdomains ( YES | NO )
set ssl profile <name> -HSTS ( ENABLED | DISABLED )

Arguments

HSTS

         State of HTTP Strict Transport Security (HSTS) on an SSL virtual server or SSL profile. Using HSTS, a server can enforce the use of an HTTPS connection for all communication with a client.

          Possible values: ENABLED, DISABLED

          Default: DISABLED

maxage

          Set the maximum time, in seconds, in the strict transport security (STS) header during which the client must send only HTTPS requests to the server.

          Default: 0

          Minimum: 0

          Maximum: 4294967294

IncludeSubdomains

         Enable HSTS for subdomains. If set to Yes, a client must send only HTTPS requests for subdomains.

          Possible values: YES, NO

          Default: NO
<!--NeedCopy-->

Dans les exemples suivants, le client doit accéder au site Web et à ses sous-domaines pendant 157 680 000 secondes uniquement en utilisant HTTPS.

add ssl vserver VS-SSL –maxage 157680000 –IncludeSubdomain YES
set ssl vserver VS-SSL –HSTS ENABLED
<!--NeedCopy-->
add sslProfile hstsprofile –maxage 157680000 –IncludeSubdomain YES
set sslProfile hstsprofile –HSTS ENABLED
<!--NeedCopy-->

Configurer HSTS à l’aide de l’interface graphique

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels.
  2. Sélectionnez un serveur virtuel de type SSL, puis cliquez sur Modifier.

Effectuez les étapes suivantes si le profil SSL par défaut est activé sur l’appliance.

  1. Sélectionnez un profil SSL et cliquez sur Modifier.

  2. Dans Paramètres de base, cliquez sur l’icône en forme de crayon pour modifier les paramètres. Faites défiler la page vers le bas et sélectionnez HSTS et Inclure les sous-domaines.

    Activer HSTS

Effectuez les étapes suivantes si le profil SSL par défaut n’est pas activé sur l’appliance.

  1. Dans Paramètres avancés, sélectionnez Paramètres SSL.

  2. Sélectionnez HSTS et Inclure les sous-domaines.

    Activer HSTS sur un serveur virtuel

Prise en charge de la précharge HSTS

Un en-tête HSTS protège l’application Web en empêchant les navigateurs d’établir des connexions non cryptées à un domaine. Toutefois, si un utilisateur accède au site Web pour la première fois, le navigateur n’a pas encore vu l’en-tête HSTS. Un attaquant peut prendre le contrôle de la connexion avant que le serveur Web ne puisse demander au navigateur d’utiliser le protocole HTTPS.

Pour résoudre ce problème, l’appliance NetScaler prend en charge l’ajout d’une précharge HSTS dans l’en-tête de réponse HTTP. Pour inclure le préchargement, vous devez définir le preload paramètre du serveur virtuel SSL ou du profil SSL sur YES. L’appliance inclut ensuite la précharge dans l’en-tête de réponse HTTP au client. Vous pouvez configurer cette fonctionnalité à l’aide de la CLI et de l’interface graphique. Pour plus d’informations sur la précharge HSTS, reportez-vous à la section https://hstspreload.org/.

Voici des exemples d’en-têtes HSTS valides avec préchargement :

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
<!--NeedCopy-->
Strict-Transport-Security: max-age=63072000; preload
<!--NeedCopy-->

Configurer le préchargement HSTS à l’aide de la CLI

À l’invite de commandes, tapez :

add ssl vserver <vServerName> -maxage <positive_integer> -preload ( YES | NO )
set ssl vserver <vServerName> -HSTS ( ENABLED | DISABLED )
<!--NeedCopy-->

OU

add ssl profile <name> -maxage <positive_integer> -IncludeSubdomains ( YES | NO ) -preload ( YES | NO )
set ssl profile <name> -HSTS ( ENABLED | DISABLED )
<!--NeedCopy-->

Configurer le préchargement HSTS à l’aide de l’interface graphique

Effectuez les étapes suivantes si le profil SSL par défaut est activé sur l’appliance.

  1. Accédez à Système > Profils > Profils SSL. Sélectionnez un profil SSL et cliquez sur Modifier.

  2. Dans Paramètres de base, cliquez sur l’icône en forme de crayon pour modifier les paramètres. Faites défiler la page vers le bas et sélectionnez HSTS et Preload.

    Activer HSTS

Effectuez les étapes suivantes si le profil SSL par défaut n’est pas activé sur l’appliance.

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels.
  2. Sélectionnez un serveur virtuel de type SSL, puis cliquez sur Modifier.

  3. Dans Paramètres avancés, sélectionnez Paramètres SSL.

  4. Sélectionnez HSTS et préchargement.

    Activer HSTS sur un serveur virtuel

Cas d’utilisation

L’utilisateur1 souhaite visiter certains sites Web en toute sécurité à l’aide d’un navigateur Web. Le site exemple.com offre une expérience de navigation sécurisée à ses clients.

L’utilisateur1 possède un compte sur exemple.com et effectue régulièrement des transactions via ce site Web. L’utilisateur1 doit transférer de l’argent à un ami et accéder à exemple.com en saisissant www.exemple.com dans un navigateur Web. Le navigateur convertit l’URL en http://www.exemple.com. Le navigateur détecte le nom exemple.com et communique avec le serveur DNS pour obtenir l’adresse IP du serveur hôte. Le navigateur contacte l’adresse IP via le port 80. Le site Web de la banque redirige la demande vers https://www.exemple.com. Un handshake SSL est effectué, ce qui permet d’établir une connexion SSL. Le cadenas de l’URL passe au vert et indique qu’il est verrouillé. L’utilisateur1 peut désormais saisir les informations d’identification pour effectuer une transaction.

Scénario du problème

Même si un site Web active le protocole HTTPS, un client peut toujours essayer de se connecter via HTTP. Le site Web peut rediriger la demande vers HTTPS, mais cette redirection n’est pas sécurisée car un attaquant peut capturer les informations de l’utilisateur ou rediriger l’utilisateur vers un faux site Web. Par exemple, un intermédiaire peut intercepter la demande de résolution pour exemple.com et envoyer à User1 sa propre adresse IP de serveur. Lorsqu’une requête est envoyée à cette adresse IP sur le port 80, l’intermédiaire peut rediriger l’utilisateur1 vers un site Web portant le même nom sur le port 443, par exemple https://www.example.com (notez la légère modification orthographique). L’utilisateur1 peut ne pas remarquer la différence (example.com au lieu de exemple.com) et saisir les informations d’identification.

Solution

Effectuez les étapes suivantes sur l’appliance NetScaler pour protéger votre site Web contre les attaques. À l’invite CLI, tapez :

add ssl profile sample-profile -maxage 63072000 -IncludeSubdomains YES -preload YES
set ssl profile sample-profile -HSTS ENABLED
<!--NeedCopy-->

Le protocole HSTS étant activé, l’appliance inclut le préchargement dans la réponse HTTP au client. De plus, le HSTS est en vigueur pendant la durée spécifiée et les sous-domaines sont également inclus. Par conséquent, seules les connexions HTTPS sont acceptées depuis un client.

Configurer la prise en charge de HTTP strict Transport Security (HSTS)