ADC

Configurations HTTP

Important :

À partir de la version 13.0 build 71.x de NetScaler, une appliance NetScaler peut gérer des requêtes HTTP de grande taille pour répondre aux demandes de l’application L7. La taille de l’en-tête peut être configurable jusqu’à 120 Ko.

Les configurations HTTP d’une appliance NetScaler peuvent être spécifiées dans une entité appelée profil HTTP, qui est un ensemble de paramètres HTTP. Le profil HTTP peut ensuite être associé à des services ou des serveurs virtuels qui souhaitent utiliser ces configurations HTTP.

Un profil HTTP par défaut peut être configuré pour définir les configurations HTTP qui sont appliquées par défaut, globalement, à tous les services et serveurs virtuels.

Remarque :

Lorsqu’un paramètre HTTP a des valeurs différentes pour le service, le serveur virtuel et globalement, la valeur de l’entité la plus spécifique (le service) reçoit la priorité la plus élevée.

L’appliance NetScaler propose également d’autres approches pour configurer HTTP. Lisez la suite pour plus d’informations.

Le NetScaler prend en charge un protocole WebSocket qui permet aux navigateurs et aux autres clients de créer une connexion TCP bidirectionnelle en duplex intégral avec les serveurs. L’implémentation NetScaler de WebSocket est conforme à la norme RFC 6455.

Remarque :

Une appliance NetScaler prend en charge la configuration de l’adresse IP de la source utilisateur (USIP) pour les protocoles HTTP/1.1 et HTTP/2.

Définition des paramètres HTTP globaux

L’appliance NetScaler vous permet de spécifier des valeurs pour les paramètres HTTP applicables à tous les services et serveurs virtuels NetScaler. Cela peut être fait à l’aide de :

  • Profil HTTP par défaut
  • Commande HTTP globale

Profil HTTP par défaut

Un profil HTTP, nommé nshttp_default_profile, est utilisé pour spécifier les configurations HTTP qui sont utilisées si aucune configuration HTTP n’est fournie au niveau du service ou du serveur virtuel.

Remarques :

  • Tous les paramètres HTTP ne peuvent pas être configurés via le profil HTTP par défaut. Certains paramètres sont effectués à l’aide de la commande HTTP globale (voir la section suivante).

  • Il n’est pas nécessaire que le profil par défaut soit explicitement lié à un service ou à un serveur virtuel.

Pour configurer le profil HTTP par défaut

  • À l’aide de l’interface de ligne de commande, entrez :

    set ns httpProfile nshttp_default_profile …

  • Dans l’interface graphique, accédez à Système > Profils, cliquez sur Profils HTTP et mettez à jour nshttp_default_profile.

Commande HTTP globale

Une autre approche que vous pouvez utiliser pour configurer les paramètres HTTP globaux est la commande HTTP globale. Outre certains paramètres uniques, cette commande duplique certains paramètres qui peuvent être définis à l’aide d’un profil HTTP. Toute mise à jour apportée à ces paramètres en double est reflétée dans le paramètre correspondant dans le profil HTTP par défaut.

Par exemple, si le paramètre MaxReusePool est mis à jour selon cette approche, la valeur est reflétée dans le paramètre MaxReusePool du profil HTTP par défaut (nshttp_default_profile).

Remarque :

Nous vous recommandons d’utiliser cette approche uniquement pour les paramètres HTTP qui ne sont pas disponibles dans le profil HTTP par défaut.

Pour configurer la commande HTTP globale

  • À l’aide de l’interface de ligne de commande, entrez :

    set ns httpParam …

  • Sur l’interface graphique, accédez à Système > Paramètres, cliquez sur Modifier les paramètres HTTP et mettez à jour les paramètres HTTP requis.

Pour configurer un schéma de codage Ignorer pour la demande de connexion

Pour activer HTTP/2 et définir les paramètres HTTP/2 afin d’ignorer le schéma de codage dans la demande de connexion, à l’invite de commandes, tapez :

set ns httpParam [-ignoreConnectCodingScheme ( ENABLED | DISABLED )]

Exemple :

set ns httpParam -ignoreConnectCodingScheme ENABLED

Pour lier le profil HTTP à un serveur virtuel à l’aide de la ligne de commande NetScaler

Configurer le profil HTTP pour supprimer les requêtes non valides TRACE ou TRACK

Vous pouvez activer le paramètre MarkTraceReqInval pour marquer les requêtes TRACK et TRACK comme non valides. Lorsque vous activez cette option en même temps que l’option DropInvalidReqs sur l’adresse IP virtuelle, vous pouvez réinitialiser un client qui envoie des requêtes TRACE ou TRACK à une appliance NetScaler.

Pour configurer le profil HTTP à l’aide de la CLI

À l’invite de commandes, tapez :

set ns httpProfile <profile name> [-markTraceReqInval ENABLED | DISABLED ]

Exemple :

set ns httpProfile profile1 -markTraceReqInval ENABLED

Configuration du profil HTTP pour un groupe de services

À l’invite de commandes, tapez :

add serviceGroup <serviceGroupName>@ <serviceType> [-cacheType <cacheType>] [-td <positive_integer>] [-maxClient <positive_integer>] [-maxReq <positive_integer>] [-cacheable ( YES | NO )] [-cip ( ENABLED | DISABLED ) [<cipHeader>]] [-usip ( YES | NO )] [-pathMonitor ( YES | NO )] [-pathMonitorIndv ( YES | NO )] [-useproxyport ( YES | NO )] [-healthMonitor ( YES | NO )] [-sp ( ON | OFF )] [-rtspSessionidRemap ( ON | OFF )] [-cltTimeout <secs>] [-svrTimeout <secs>] [-CKA ( YES | NO )] [-TCPB ( YES | NO )] [-CMP ( YES | NO )] [-maxBandwidth
<positive_integer>] [-monThreshold <positive_integer>] [-state ENABLED DISABLED )][-downStateFlush ( ENABLED | DISABLED )] [-tcpProfileName <string>] [-httpProfileName <string>] [-comment <string>] [-appflowLog ( ENABLED | DISABLED )] [-netProfile <string>] [-autoScale <autoScale> -memberPort <port> [-autoDisablegraceful ( YES | NO )] [-autoDisabledelay <secs>] ] [-monConnectionClose ( RESET | FIN )]

<!--NeedCopy-->

Exemple :

add serviceGroup Service-Group-1 HTTP -maxClient 0 -maxReq 0 -cip ENABLED -usip NO -useproxyport YES -cltTimeout 200 -svrTimeout 300 -CKA NO -TCPB NO -CMP NO -httpProfileName profile1

Configurer le profil HTTP à l’aide de l’interface graphique NetScaler

Pour marquer les demandes TRACE ou TRACK non valides, procédez comme suit.

  1. Connectez-vous à l’appliance NetScaler et accédez à Configuration > Système > Profils.
  2. Dans l’onglet Profils HTTP, cliquez sur Ajouter.
  3. Sur la page Créer un profil HTTP, sélectionnez l’option Marquer les demandes TRACE comme non valides .
  4. Cliquez sur Créer.

Définition des paramètres HTTP spécifiques au service ou au serveur virtuel

À l’aide des profils HTTP, vous pouvez spécifier des paramètres HTTP pour les services et les serveurs virtuels. Vous devez définir un profil HTTP (ou utiliser un profil HTTP intégré) et associer le profil au service et au serveur virtuel appropriés.

Remarque :

Vous pouvez également modifier les paramètres HTTP des profils par défaut selon vos besoins.

Pour spécifier des configurations HTTP au niveau du service ou du serveur virtuel à l’aide de l’interface de ligne de commande

À l’invite de commandes, effectuez les opérations suivantes :

  1. Configurez le profil HTTP.

    set ns httpProfile <profile-name>...

  2. Liez le profil HTTP au service ou au serveur virtuel.

    Pour lier le profil HTTP au service :

set service <name> .....

Exemple :

> set service service1 -httpProfileName profile1
<!--NeedCopy-->

Pour lier le profil HTTP au serveur virtuel :

set lb vserver <name> .....

Exemple :

> set lb vserver lbvserver1 -httpProfileName profile1
<!--NeedCopy-->

Pour spécifier des configurations HTTP au niveau du service ou du serveur virtuel à l’aide de l’interface graphique

Dans l’interface graphique, effectuez les opérations suivantes :

  1. Configurez le profil HTTP.

    Accédez à Système > Profils > Profils HTTP, puis créez le profil HTTP.

  2. Liez le profil HTTP au service ou au serveur virtuel.

    Accédez à Gestion du trafic > Équilibrage de charge > Services/Serveurs virtuelset créez le profil HTTP, qui doit être lié au service/serveur virtuel.

Profils HTTP intégrés

Pour faciliter la configuration, NetScaler fournit certains profils HTTP intégrés. Passez en revue les profils répertoriés et utilisez-les tels quels ou modifiez-les pour répondre à vos besoins. Vous pouvez lier ces profils aux services ou serveurs virtuels requis.

Profil intégré Description
nshttp_default_profile Représente les paramètres HTTP globaux par défaut sur l’appliance.
nshttp_default_strict_validation Paramètres pour les déploiements qui nécessitent une validation stricte des requêtes et des réponses HTTP.

Exemples de configurations HTTP

Exemples d’interface de ligne de commande pour configurer les éléments suivants :

  • Statistiques sur les bandes HTTP
  • Connexions WebSocket

Statistiques sur les bandes HTTP

Spécifiez la taille de bande pour les requêtes et réponses HTTP.

> set protocol httpBand reqBandSize 300 respBandSize 2048
Done
> show protocol httpband -type REQUEST
<!--NeedCopy-->

Connexions WebSocket

Activez WebSocket sur le profil HTTP requis.

> set ns httpProfile http_profile1 -webSocket ENABLED
Done
> set lb vserver lbvserver1 -httpProfileName profile1
Done
<!--NeedCopy-->

Configurez l’appliance NetScaler pour supprimer ou transmettre l’en-tête de mise à niveau au serveur principal

Le paramètre PassProtocolUpgrade du profil HTTP empêche les attaques sur les serveurs principaux. Selon l’état de ce paramètre, l’en-tête de mise à niveau est transmis dans la demande envoyée au serveur principal ou supprimé avant l’envoi de la demande.

  • Si le paramètre PassProtocolUpgrade est activé, l’en-tête de mise à niveau est transmis au serveur principal. Le serveur accepte la demande de mise à niveau et l’informe dans sa réponse.
  • Si le paramètre est désactivé, l’en-tête de mise à niveau est supprimé et le reste de la demande est envoyé au serveur principal.

Le paramètre PassProtocolUpgrade est ajouté aux profils suivants :

  • nshttp_default_profile - activé par défaut
  • nshttp_default_strict_validation - désactivé par défaut
  • nshttp_default_internal_apps - désactivé par défaut
  • nshttp_default_http_quic_profile : activé par défaut

Nous vous recommandons de désactiver le paramètre PassProtocolUpgrade par défaut.

Définissez le paramètre PassProtocolUpgrade à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez ce qui suit :

set ns httpProfile <name> [-passProtocolUpgrade ( ENABLED | DISABLED )]

Exemple :

set ns httpProfile profile1 -passProtocolUpgrade ENABLED

Définissez le paramètre PassProtocolUpgrade à l’aide de l’interface graphique

  1. Accédez à Système > Profils > Profils HTTP.
  2. Créez ou modifiez un profil HTTP.
  3. Sélectionnez Pass Protocol Upgrade.

Configurer le profil HTTP pour valider les en-têtes d’hôte

À partir de la version 14.1-21.x de NetScaler, NetScaler prend en charge la validation des en-têtes d’hôte dans les requêtes HTTP entrantes afin d’empêcher les injections d’en-tête d’hôte ou les attaques.

Lorsque la validation de l’en-tête de l’hôte est activée, les contrôles suivants sont effectués :

  • La longueur de l’en-tête d’hôte qui est l’adresse IP ou la partie du nom DNS de l’en-tête d’hôte ne dépasse pas 255 caractères.
  • Le numéro de port, s’il est spécifié, ne comporte pas plus de 5 caractères car le numéro de port maximum est 65535.

Si l’en-tête de l’hôte ne respecte pas les conditions définies, ces requêtes HTTP sont supprimées.

Par défaut, la validation de l’en-tête d’hôte est désactivée dans les profils par défaut et activée dans les profils HTTP sécurisés ou stricts.

Validez les en-têtes d’hôte HTTP à l’aide de l’interface de ligne de commande NetScaler

À l’invite de commandes, tapez ce qui suit :

set ns httpprofile <name> -hostHeaderValidation (ENABLED | DISABLED)
<!--NeedCopy-->

Exemple :

set ns httpProfile http_profile1 -hostHeaderValidation ENABLED
<!--NeedCopy-->

Validez les en-têtes d’hôte HTTP à l’aide de l’interface graphique NetScaler

  1. Accédez à Système > Profils > Profils HTTP.
  2. Créez ou modifiez un profil HTTP.
  3. Sur la page Configurer le profil HTTP, sélectionnez Validation de l’en-tête de l’hôte.