Vérification des formats de champ

La vérification Formats de champ vérifie les données que les utilisateurs envoient à vos sites Web dans des formulaires Web. Il examine à la fois la longueur et le type de données pour s’assurer qu’elles conviennent au champ de formulaire dans lequel elles apparaissent. Si le Web App Firewall détecte des données de formulaire Web inappropriées dans une demande utilisateur, il bloque la demande.

En empêchant un attaquant d’envoyer des données de formulaire Web inappropriées à votre site Web, la vérification Formats de champ empêche certains types d’attaques sur votre site Web et vos serveurs de base de données. Par exemple, si un champ particulier s’attend à ce que l’utilisateur saisisse un numéro de téléphone, la vérification Formats de champ examine l’entrée soumise par l’utilisateur pour s’assurer que les données correspondent au format d’un numéro de téléphone. Si un champ particulier attend un prénom, la vérification Formats de champ garantit que les données de ce champ sont d’un type et d’une longueur appropriés pour un prénom. Il fait la même chose pour chaque champ de formulaire que vous le configurez pour protéger.

Cette vérification s’applique uniquement aux requêtes HTML. Il ne s’applique pas aux requêtes XML. Vous pouvez configurer les vérifications de format de champ dans les profils HTML ou Web 2.0 pour inspecter la charge utile HTML pour protéger vos applications. Le Web App Firewall prend également en charge la protection Field Format Check pour les applications Google Web Toolkit (GWT).

La vérification Formats des champs nécessite l’activation d’une ou de plusieurs actions. Le Web App Firewall examine les entrées soumises et applique les actions spécifiées.

Remarque

Les règles de format de champ sont des règles de resserrement. Les ajouter à la liste de relaxation à partir de données apprises agit comme une règle de blocage.

Pour relâcher les règles de format de champ, supprimez « fieldname » de la liste des relaxations de format de champ.

Vous avez la possibilité de définir les formats de champ par défaut pour spécifier le type de champ et la longueur minimale et maximale des données attendues dans chaque champ de formulaire de chaque formulaire Web que vous souhaitez protéger. Vous pouvez déployer des règles de relaxation pour configurer un format de champ pour un champ individuel d’un formulaire spécifique. Plusieurs règles peuvent être ajoutées pour spécifier le nom du champ, l’URL de l’action et les formats de champ. Spécifiez Formats de champ pour accepter différents types d’entrées dans différents champs de formulaire. La fonction d’apprentissage peut fournir des recommandations pour les règles de relaxation.

Actions de format de champ : vous pouvez activer les actions Bloquer, Log, Statistiques et Apprendre. Au moins une de ces actions doit être activée pour activer la protection Contrôle du format de champ.

  • Bloc. Si vous activez le bloc, l’action de blocage est déclenchée si l’entrée n’est pas conforme au format de champ spécifié. Si une règle a été configurée pour le champ cible, l’entrée est vérifiée par rapport à la règle spécifiée. Sinon, il est vérifié par rapport à la spécification de format de champ par défaut. Toute incompatibilité dans le type de champ ou la spécification de longueur min/max entraîne le blocage de la demande.
  • Journal. Si vous activez la fonction de journal, la vérification Format de champ génère des messages de journal indiquant les actions qu’elle effectue. Vous pouvez surveiller les journaux pour déterminer si les réponses aux demandes légitimes sont bloquées. Une forte augmentation du nombre de messages de journal peut indiquer des tentatives malveillantes de lancer une attaque.
  • Statistiques. Si elle est activée, la fonction de statistiques recueille des statistiques sur les violations et les journaux. Une augmentation inattendue du compteur de statistiques peut indiquer que votre application est attaquée, ou vous devrez peut-être revoir la configuration pour voir si le format de champ spécifié est trop restrictif.
  • Apprenez. Si vous n’êtes pas sûr des types de champs ou des valeurs de longueur minimale et maximale qui conviennent parfaitement à votre application, vous pouvez utiliser la fonctionnalité d’apprentissage pour générer des recommandations basées sur les données apprises. Le moteur d’apprentissage du Web App Firewall surveille le trafic et fournit des recommandations de format de champ basées sur les valeurs observées. Pour obtenir un avantage optimal sans compromettre les performances, vous pouvez activer l’option d’apprentissage pendant une courte période afin d’obtenir un échantillon représentatif des règles, puis déployer les règles et désactiver l’apprentissage. Remarque : le moteur d’apprentissage du pare-feu Web App ne peut distinguer que les 128 premiers octets du nom. Si un formulaire comporte plusieurs champs dont les noms correspondent aux 128 premiers octets, le moteur d’apprentissage peut ne pas être en mesure de les distinguer. De même, la règle de relaxation déployée pourrait, par inadvertance, modérer tous ces champs.

Format de champ par défaut : en plus de configurer les actions, vous pouvez configurer le format de champ par défaut pour spécifier le type de données attendu dans tous les champs de formulaire de votre application. Un type de champ peut être sélectionné comme type de format de champ. Les paramètres de longueur minimale et longueur maximale peuvent être utilisés pour spécifier la longueur des entrées autorisées. Comme alternative à Types de champs, vous pouvez utiliser les mappages de caractères pour spécifier ce qui est autorisé dans un champ (sauf dans les déploiements de cluster).

  • Type de champ : les types de champ sont nommés expression à laquelle vous affectez des valeurs de priorité. Les expressions Type de champ spécifient les entrées autorisées et sont mises en correspondance avec les données soumises pour déterminer si les valeurs reçues sont cohérentes avec les valeurs autorisées. Les Types de champs sont vérifiés dans l’ordre de leurs numéros de priorité. Un nombre inférieur indique une priorité plus élevée. Le pare-feu de l’application Web vous permet d’ajouter vos propres types de champs et de leur attribuer les priorités que vous souhaitez. La valeur de priorité peut varier de 0 à 64000. Les types de champs intégrés suivants sont fournis pour simplifier le processus de configuration :

     > sh appfw fieldtype
     1)      Name:  integer           Regex:  "^[+-]?[0-9]+$"
                     Priority:  30            Comment:  Integer
                     Builtin:  IMMUTABLE
     2)      Name:  alpha             Regex:  "^[a-zA-Z]+$"
                     Priority:  40            Comment:  "Alpha characters"
                  Builtin:  IMMUTABLE
     3)      Name:  alphanum          Regex:  "^[a-zA-Z0-9]+$"
                     Priority:  50            Comment:  "Alpha-numeric characters"
                     Builtin:  IMMUTABLE
     4)      Name:  nohtml            Regex:  "^[^&<>]\*$"
                     Priority:  60            Comment:  "Not HTML"
                     Builtin:  IMMUTABLE
     5)      Name:  any               Regex:  "^.\*$"
                  Priority:  70            Comment:  Anything
                     Builtin:  IMMUTABLE
         Done
     >
    

    Remarque : Les types de champs intégrés sont IMMUTABLE. Ils ne peuvent pas être modifiés ou supprimés. Tous les types de champs que vous ajoutez sont MODIFIABLES. Vous pouvez les modifier ou les supprimer.

    La configuration d’un type de champ comme format de champ par défaut peut s’avérer utile lorsque vous disposez d’une expression PCRE qui peut identifier les entrées valides dans tous les champs de formulaire ou la plupart des champs de formulaire de votre application et exclure les entrées non valides. Par exemple, si toutes les entrées de vos formulaires de demande doivent contenir uniquement des chiffres et des lettres, vous pouvez utiliser le type de champ alphanum intégré comme type de champ par défaut. Tout caractère non alphanumérique tel qu’une barre oblique inverse () ou un point-virgule ; dans l’entrée déclenchera une violation. Vous pouvez également ajouter vos propres Types de champs personnalisés et les utiliser pour configurer les Formats de champs par défaut. Par exemple, si vous voulez faire des minuscules “x”, “y”, et “z” les seuls caractères alpha autorisés, vous pouvez configurer un type de champ personnalisé avec l’expression régulière “^[x-z]+$”. Vous pouvez lui attribuer une priorité plus élevée (numéro de priorité inférieure) que les Types de champs intégrés et l’utiliser comme type de champ par défaut.

  • Longueur minimale : longueur minimale des données par défaut affectée aux champs de formulaire dans les formulaires Web qui n’ont pas de paramètre explicite. Ce paramètre est défini sur 0 par défaut, ce qui permet à l’utilisateur de laisser le champ vide. Tout paramètre supérieur oblige les utilisateurs à remplir le champ.

    Attention : Si la valeur de longueur minimale est 0 mais que le type de champ est entier, alpha ou alphanum, une demande est bloquée si un champ de saisie est laissé vide, malgré le paramètre de longueur minimale. En effet, la valeur RegEx pour ces types de champs contient un caractère +, ce qui signifie un ou plusieurs caractères. Pour distinguer un entier d’un caractère alpha, il faut au moins un caractère.

  • Longueur maximale : longueurmaximale des données par défaut attribuée aux champs de formulaire dans les formulaires Web qui n’ont pas de paramètre explicite. Ce paramètre est défini sur 65535 par défaut.

    Note : Caractères vs octets. Les longueurs minimale et maximale des formats de champ représentent le nombre d’octets et non le nombre de caractères. Les langues qui ont une représentation de caractères supérieure à un octet peuvent entraîner le dépassement de la limite avec moins de caractères que le nombre configuré pour la valeur maximale. Par exemple, avec une représentation de caractères sur deux octets, la valeur maximale de 9 ne permet pas plus de 4 caractères. Astuce : L’interface graphique vous permet de couper et coller des caractères UTF-8 directement dans l’interface graphique sans avoir à les convertir en hexadécimal.

  • Cartes de caractères : En plus de recommander les types de champs, le moteur d’apprentissage du Web App Firewall vous offre une option supplémentaire, Utiliser les cartes de caractères, pour déployer les règles de vérification du format. Une carte de caractères est un ensemble de tous les caractères autorisés dans un champ de formulaire particulier. Vous pouvez affiner la spécification de format de champ pour autoriser ou interdire des caractères spécifiques à l’aide de cartes de caractères. Une carte de caractères distincte est générée pour chaque champ de formulaire. Les caractères alpha et numériques sont traités différemment dans les cartes de caractères. Si un caractère alpha est visible dans l’entrée, tous les caractères alpha[A-za-Z]seront autorisés par l’expression PCRE recommandée dans la carte des caractères. De même, si un chiffre est inclus, tous les chiffres[0-9]seront autorisés. Les caractères non imprimables sont spécifiés à l’aide de la construction x. Seuls les caractères octets dont les valeurs se situent entre 0 et 255 sont pris en compte pour les recommandations de la carte de caractères.

    Une carte de caractères peut être plus spécifique que la recommandation de type de champ correspondante. Dans certaines situations, les cartes de caractères peuvent être une meilleure option, car elles vous donnent un contrôle plus strict sur l’ensemble des caractères autorisés comme entrées. Les cartes de caractères déployées sont affichées sous forme de chaînes commençant par le préfixe « CM » suivi de chiffres. La priorité pour les cartes de caractères commence à 10000. Comme pour les Types de champs ajoutés par l’utilisateur, vous pouvez ajouter, modifier ou supprimer un mappage de caractères. Les cartes de caractères actuellement utilisées dans les règles déployées ne peuvent pas être modifiées ou supprimées.

    Remarque : Les cartes de caractères ne sont pas prises en charge dans les déploiements de cluster.

Remarque

Lorsque vous ajoutez une règle de formats de champ avec n’importe quel type de champ intégré et utilisez le mappage de caractères au lieu de Type de champ et que vous l’enregistrez, les modifications ne sont pas enregistrées et la règle s’affiche toujours avec Type de champ.

Lorsque la carte de caractères correspond à l’un des types prédéfinis, le type de champ est réutilisé au lieu de créer une nouvelle carte de caractères.

Utilisation de la ligne de commande pour configurer la vérification du format de champ

Dans l’interface de ligne de commande, vous pouvez utiliser la commande add appfw fieldtype pour ajouter un nouveau type de champ. Vous pouvez utiliser la commande set appfw profile ou la commande add appfw profile pour configurer la vérification Format de champ et spécifier les actions à effectuer. Vous pouvez utiliser la commande unset appfw profile pour rétablir les paramètres configurés à leurs valeurs par défaut. Pour spécifier une règle de format de champ, utilisez la commande bind appfw pour lier un type de champ à un champ de formulaire et à l’URL d’action, ainsi que les spécifications de longueur minimale et maximale.

Pour ajouter, supprimer ou afficher un type de champ à l’aide de la ligne de commande :

Utilisez la commande add pour ajouter un type de champ. Vous devez spécifier le nom, l’expression régulière et la priorité lors de l’ajout d’un nouveau type de champ. Vous avez également la possibilité d’ajouter un commentaire. Vous pouvez utiliser la commande show pour afficher les Types de champs configurés. Vous pouvez également supprimer un type de champ à l’aide de la commande remove, qui requiert uniquement le nom du type de champ.

add [appfw] fieldType <name> <regex> <priority> [-comment <string>] où :

<regex> est une expression reqular

<priority> est un entier positive_entier

Exemple :

add fieldtype "Cust_Zipcode" "^[0-9]{5}[-][0-9]{4}$" 4

-  show [appfw] fieldType [<name>]

    Example: sh fieldtype

    sh appfw fieldtype

    sh appfw fieldtype cust_zipcode

-  `rm [appfw] fieldType <name>`

    Example: rm fieldtype cusT_ziPcode

    `rm appfw fieldtype cusT_ziPcode`

Note : Comme indiqué ci-dessus, l’utilisation de « appfw » dans la commande est facultative. Par exemple, « Add FieldType » ou « Add appfw FieldType » sont deux options valides. Les noms des types de champ sont insensibles à la casse en raison de la normalisation. Comme indiqué dans les exemples ci-dessus, Cust_Zipcode, cust_zipcode et Cust_ZipCode font référence au même type de champ.

Pour configurer une vérification de format de champ à l’aide de la ligne de commande

Utilisez soit la commande set appfw profile, soit la commande add appfw profile, comme suit :

  • set appfw profile <name> -fieldFormatAction (([block] [learn] [log] [stats]) | [none])
  • set appfw profile <name>-defaultFieldFormatType <string>
  • set appfw profile <name> -defaultFieldFormatMinLength <integer>
  • set appfw profile <name> -defaultFieldFormatMaxLength <integer>

Pour configurer une règle de relaxation Format de champ à l’aide de la ligne de commande

bind appfw profile <name> (-fieldFormat <string> <formActionURL>  <fieldType>
[-fieldFormatMinLength <positive_integer>]  [-fieldFormatMaxLength <positive_integer>]
[-isRegex ( REGEX | NOTREGEX )])

Exemple :

bind appfw profile pr_ffc -fieldFormat "login_name" ".*/login.php" integer -fieldformatMinLength 3 -FieldformatMaxlength 6

Utilisation de l’interface graphique pour configurer le contrôle de sécurité des formats de champ

Dans l’interface graphique, vous pouvez gérer les Types de champs. Vous pouvez également configurer la vérification de sécurité Formats de champ dans le volet pour le profil associé à votre application.

Pour ajouter, modifier ou supprimer un type de champ à l’aide de l’interface graphique

  1. Accédez au nœud Application Firewall. Dans les paramètres, cliquez sur Gérer les types de champs pour afficher la boîte de dialogue Configurer le type de champ du pare-feu d’application.
  2. Cliquez sur Ajouter pour ajouter un nouveau type de champ. Suivez les instructions de ce volet et cliquez sur Créer. Vous pouvez également modifier ou supprimer tout type de champ ajouté par l’utilisateur s’il n’est pas utilisé par une règle déployée.

Pour ajouter ou modifier la vérification de sécurité Formats de champ à l’aide de l’interface graphique

  1. Accédez à Application Pare-feu > Profils, mettez en surbrillance le profil cible et cliquez sur Modifier.

  2. Dans le volet Paramètres avancés, cliquez sur Vérifications de sécurité.

    La table de vérification de sécurité affiche les paramètres d’action actuellement configurés pour tous les contrôles de sécurité. Vous avez 2 options de configuration :

    1. Si vous souhaitez simplement activer ou désactiver les actions Bloquer, Journaliser, Statistiqueset Apprendrepour les formats de champ, vous pouvez activer ou désactiver les cases à cocher dans le tableau, cliquez sur OK, puis cliquez sur Enregistrer et fermerpour fermer le Volet à cocher.
    2. Si vous souhaitez configurer des options supplémentaires pour cette vérification de sécurité, double-cliquez sur Formats de champ, ou sélectionnez la ligne et cliquez sur Paramètres d’action, pour afficher les options suivantes pour Format de champ par défaut :
      • Type de champ : sélectionnez le type de champ que vous souhaitez configurer comme type de champ par défaut. Vous pouvez sélectionner les types de champs intégrés et définis par l’utilisateur. Les cartes de caractères déployées sont également incluses dans la liste et peuvent être sélectionnées.

      • Minimum Length : spécifiez le nombre minimum de caractères devant figurer dans chaque champ. Valeurs possibles : 0-65535.

      • Longueur maximale(Maximum Length) : spécifiez le nombre maximal de caractères devant figurer dans chaque champ. Valeurs possibles : 1-65535.

        Vous pouvez également modifier les actions Bloquer, Journaliser, Statistiqueset Apprendredans le volet Paramètres des formats de champ.

    Après avoir effectué l’une des modifications ci-dessus, cliquez sur OK pour enregistrer les modifications et revenir au tableau Vérifications de sécurité. Vous pouvez procéder à la configuration d’autres vérifications de sécurité si nécessaire. Cliquez sur OK pour enregistrer toutes les modifications apportées dans la section Vérifications de sécurité, puis cliquez sur Enregistrer et fermer pour fermer le volet Vérification de sécurité.

Pour configurer une règle de relaxation Formats de champ à l’aide de l’interface graphique

  1. Accédez à Application Pare-feu > Profils, mettez en surbrillance le profil cible et cliquez sur Modifier.

  2. Dans le volet Paramètres avancés, cliquez sur Règles de relaxation. La table Règles de relaxation comporte une entrée Formats de champ. Vous pouvez double-cliquer, ou sélectionner cette ligne et cliquer sur le bouton Modifier, pour accéder à la boîte de dialogue Règles de relaxation Formats de champ. Vous pouvez effectuer des opérations Ajouter, Modifier, Supprimer, Activerou Désactiverpour les règles de relaxation.

Pour obtenir une vue consolidée de toutes les règles de relaxation, vous pouvez mettre en surbrillance la ligne Formats de champ et cliquer sur Visualizer. Le visualiseur pour les relaxations déployées vous offre la possibilité d’ajouter une nouvelle règle ou de modifier une règle existante. Vous pouvez également activer ou désactiver un groupe de règles en sélectionnant un nœud et en cliquant sur les boutons correspondants dans le visualiseur de relaxation.

Utilisation de la fonction d’apprentissage avec la vérification des formats de champ

Lorsque l’action d’apprentissage est activée, le moteur d’apprentissage du Web App Firewall surveille le trafic et apprend les violations déclenchées. Vous pouvez inspecter périodiquement ces règles apprises. Après avoir dûment pris en considération, vous pouvez déployer la règle apprise en tant que règle de relaxation Format de champ.

Amélioration del’apprentissage des formats de champ : une améliorationde l’apprentissage du Web App Firewall a été introduite dans la version 11.0. Dans les versions précédentes, une fois que la recommandation de format de champ appris est déployée, le moteur d’apprentissage du Web App Firewall cesse de surveiller les demandes valides afin de recommander de nouvelles règles sur la base des nouveaux points de données. Cela limite la protection de sécurité configurée, car la base de données d’apprentissage n’inclut aucune représentation des nouvelles données vues dans les demandes valides traitées par le contrôle de sécurité.

Les violations ne sont plus associées à l’apprentissage. Le moteur d’apprentissage apprend et fait des recommandations pour les formats de champ quelles que soient les violations. En plus de vérifier les demandes bloquées pour déterminer si le format de champ actuel est trop restrictif et doit être assouplie, le moteur d’apprentissage surveille également les demandes autorisées pour déterminer si le format de champ actuel est trop permissif et permet d’élever la sécurité en déployant un règle restrictive.

Voici un résumé du comportement d’apprentissage Formats de champ :

Aucun format de champ n’est lié : le comportement reste inchangé dans ce scénario. Toutes les données d’apprentissage sont envoyées au moteur aslearn. Le moteur d’apprentissage suggère une règle de format de champ basée sur l’ensemble de données.

Leformat de champ est lié : dans les versions précédentes, les données observées sont envoyées au moteur aslearn uniquement en cas de violation. Le moteur d’apprentissage suggère une règle de format de champ basée sur l’ensemble de données. Dans la version 11.0, toutes les données sont envoyées à aslearn engine même si aucune violation n’est déclenchée. Le moteur d’apprentissage suggère une règle de format de champ basée sur l’ensemble de données de toutes les entrées reçues.

Cas d’utilisation pour l’amélioration de l’apprentissage :

Si les règles de mise en forme initiale des champs sont basées sur un petit échantillon de données, quelques valeurs non typiques peuvent donner lieu à une recommandation trop indulgente pour le champ cible. L’apprentissage continu permet au Web App Firewall d’observer les points de données de chaque demande afin de recueillir un échantillon représentatif des recommandations apprises. Ceci est utile pour renforcer encore la sécurité afin de déployer le format d’entrée optimal avec une valeur de plage adéquate.

image localisée

La formation au format de champ utilise la priorité des Types de champ ainsi que les paramètres configurés des seuils d’apprentissage suivants :

  • FieldFormatminThreshold—Nombre minimum de fois qu’un champ de formulaire spécifique doit être observé avant de générer une relaxation apprise. Par défaut : 1.
  • FieldFormatPercentThreshold—Pourcentage de fois qu’un champ de formulaire correspond à un type de champ particulier, avant qu’une relaxation apprise ne soit générée. Par défaut : 0.

Les recommandations de règle de format de champ sont basées sur les critères suivants :

  • Recommandations de typede champ : les recommandations de type de champ sont déterminées par les priorités attribuées aux types de champ existants et les seuils de format de champ spécifiés. Les priorités déterminent l’ordre dans lequel les Types de champs sont comparés aux entrées. Un nombre inférieur spécifie une priorité plus élevée. Par exemple, le type de champ entier a la priorité la plus élevée (30) et est donc évalué avant le type de champ alphanum (50). Les seuils déterminent le nombre d’entrées évaluées afin de recueillir un échantillon représentatif pour le point de données. L’attribution de la priorité appropriée aux Types de champ configurés et la configuration d’une valeur de paramètre d’apprentissage appropriée pour les paramètres FieldFormatPercentThreshold et FieldFormatminThreshold sont essentiels pour obtenir la recommandation de format de champ correcte. Le type de champ avec la priorité la plus élevée, basé sur les seuils configurés, est mis en correspondance d’abord avec les entrées. S’il y a une correspondance, ce type de champ est suggéré sans tenir compte des autres types de champ. Par exemple, trois types de champs par défaut, entier, alphanum et any correspondent si toutes les entrées contiennent uniquement des nombres. Cependant, l’entier sera recommandé car il a la priorité la plus élevée.
  • Recommandations de longueur minimale et maximale : les calculs des longueurs minimale et maximale du format de champ sont effectués indépendamment de la détermination du type de champ. Les calculs de longueur de format de champ sont basés sur la longueur moyenne de toutes les entrées observées. La moitié de cette moyenne calculée est suggérée comme valeur min, et deux fois la valeur de cette moyenne est suggérée comme valeur maximale. La plage pour la longueur minimale est 0-65535 et la plage pour la longueur maximale est 1-65535. La valeur configurée pour la longueur minimale ne peut pas dépasser la longueur maximale.
  • Manipulation du caractère d’espace : la vérification Format de champ compte tous les caractères d’espace lors de la vérification de la longueur Formats de champ. Les espaces de début ou de fin ne sont pas supprimés, et plusieurs espaces consécutifs au milieu de la chaîne d’entrée ne sont plus consolidés en un seul espace pendant le traitement d’entrée.

Exemple pour illustrer les recommandations du format de champ :

Total requests: 100
Number of Req with Field Type:
Int : 22            (22 int values) – 22%
Alpha : 44                  (44 alpha values) – 44%
Alphanum: 14            (14 + 44 + 22 = 80 alphanum values) = 80%
noHTML: 10              (80 + 10 = 90 noHTML values) = 90%
any : 10                     (90 + 10 = 100 any values) = 100%

% threshold                              Suggested Field Type
0-22                int
23-44               alpha
45-80               alphanum
81-90               noHTML
91-100              any

Pour afficher ou utiliser les données apprises à l’aide de l’interface de ligne de commande

show appfw learningdata <profilename> FieldFormat
rm appfw learningdata <profilename> -fieldFormat <string>  <formActionURL>
export appfw learningdata <profilename> FieldFormat

Pour afficher ou utiliser les données apprises à l’aide de l’interface graphique

  1. Accédez à Application Pare-feu > Profils, mettez en surbrillance le profil cible et cliquez sur Modifier.

  2. Dans le volet Paramètres avancés, cliquez sur Règles apprises. Vous pouvez sélectionner l’entrée Formats de champ dans le tableau Règles apprises et double-cliquer dessus pour accéder aux règles apprises. Vous pouvez déployer les règles apprises ou modifier une règle avant de la déployer en tant que règle de relaxation. Pour ignorer une règle, vous pouvez la sélectionner et cliquer sur le bouton Ignorer. Vous ne pouvez modifier qu’une seule règle à la fois, mais vous pouvez sélectionner plusieurs règles à déployer ou à ignorer.

    Vous avez également la possibilité d’afficher une vue résumée des relaxations apprises en sélectionnant l’entrée Formats de champ dans le tableau Règles apprises et en cliquant sur Visualiseur pour obtenir une vue consolidée de toutes les violations apprises. Le visualiseur facilite la gestion des règles apprises. Il présente une vue complète des données sur un seul écran et facilite l’action sur un groupe de règles en un seul clic. Le plus grand avantage du visualiseur est qu’il recommande des expressions régulières pour consolider plusieurs règles. Vous pouvez sélectionner un sous-ensemble de ces règles, en fonction du délimiteur et de l’URL Action. Vous pouvez afficher 25, 50 ou 75 règles dans le visualiseur, en sélectionnant le nombre dans une liste déroulante. Le visualiseur des règles apprises offre la possibilité de modifier les règles et de les déployer en tant que relaxations. Ou vous pouvez ignorer les règles pour les ignorer.

Utilisation de la fonction de journal avec les formats de champ, vérifiez

Lorsque l’action du journal est activée, les violations de vérification de sécurité Formats de champ sont enregistrées dans le journal d’audit en tant que violations APPFW_FIELDFORMAT. Le Web App Firewall prend en charge les formats de journaux natifs et CEF. Vous pouvez également envoyer les journaux à un serveur syslog distant.

Pour accéder aux messages du journal à l’aide de la ligne de commande

Basculez vers le shell et recherchez les fichiers ns.logs dans le dossier /var/log/ pour accéder aux messages de journal relatifs aux violations Formats de champ :

  • Shell
  • tail -f /var/log/ns.log | grep APPFW_FIELDFORMAT

Pour accéder aux messages du journal à l’aide de l’interface graphique

L’interface utilisateur graphique Citrix inclut un outil très utile (Syslog Viewer) pour analyser les messages du journal. Vous disposez de plusieurs options pour accéder à la visionneuse Syslog :

  • Accédez au pare-feu des applications > Profils, sélectionnez le profil cible et cliquez sur Vérifications de sécurité. Mettez en surbrillance la ligne Formats de champ et cliquez sur Journaux. Lorsque vous accédez aux journaux directement à partir de la vérification de sécurité Formats de champ du profil, il filtre les messages de journal et affiche uniquement les journaux relatifs à ces violations de contrôle de sécurité.

  • Vous pouvez également accéder à la visionneuse Syslog en accédant à Citrix ADC > Système > Audit. Dans la section Messages d’audit, cliquez sur le lien Messages Syslog pour afficher la visionneuse Syslog, qui affiche tous les messages de journal, y compris les autres journaux de violation de vérification de sécurité. Ceci est utile pour le débogage lorsque plusieurs violations de vérification de sécurité peuvent être déclenchées pendant le traitement de la demande.

  • Accédez à Application Firewall > Stratégies > Audit. Dans la section Messages d’audit, cliquez sur le lien Messages Syslog pour afficher la visionneuse Syslog, qui affiche tous les messages de journal, y compris les autres journaux de violation de vérification de sécurité.

    La visionneuse Syslog basée sur HTML fournit diverses options de filtre pour sélectionner uniquement les messages de journal qui vous intéressent. Pour accéder aux messages du journal des violations de vérification de sécurité Formats de champ, filtrez en sélectionnant APPFW dans les options déroulantes du module. Le type d’événement affiche un ensemble complet d’options pour affiner votre sélection. Par exemple, si vous activez la case à cocher APPFW_FIELDFORMAT et cliquez sur le bouton Appliquer, seuls les messages relatifs aux violations de vérification de sécurité Formats de champ apparaissent dans la visionneuse Syslog.

Si vous placez le curseur dans la ligne d’un message de journal spécifique, plusieurs options, telles que Module et EventType, apparaissent sous le message de journal. Vous pouvez sélectionner l’une de ces options pour mettre en surbrillance les informations correspondantes dans les journaux.

Exemple de message de journal au format natif lorsque la demande n’est pas bloquée

Jun 10 22:32:26 <local0.info> 10.217.31.98 06/10/2015:22:32:26 GMT ns 0-PPE-0 :
default APPFW APPFW_FIELDFORMAT 97 0 :  10.217.253.62 562-PPE0
x1MV+YnNGzQFM3Bsy2wti4bhXio0001 pr_ffc http://aaron.stratum8.net/FFC/login_post.php
Field format check failed for field passwd="65568888sz-*_" <not blocked>
Example of a CEF format log message when the request is blocked
Jun 11 00:03:51 <local0.info> 10.217.31.98
CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|APPFW_FIELDFORMAT|6|src=10.217.253.62 spt=27076
method=POST requet=http://aaron.stratum8.net/FFC/maxlen_post.php msg=Field format check
failed for field text_area="" cn1=108 cn2=644 cs1=pr_ffc cs2=PPE0
cs3=GaUROfl1Nx1jJTvja5twH5BBqI0000 cs4=ALERT cs5=2015 act=blocked

Statistiques pour les violations de formats de champ

Lorsque l’action des statistiques est activée, le compteur correspondant pour la vérification Formats de champ est incrémenté lorsque le Web App Firewall prend une action pour cette vérification de sécurité. Les statistiques sont collectées pour le taux et le nombre total pour le trafic, les violations et les journaux. L’incrémentation du compteur de journaux peut varier en fonction des paramètres configurés. Par exemple, si l’action de blocage est activée, la demande d’une page contenant 3 violations de format de champ incrémente le compteur de statistiques d’un, car la page est bloquée dès que la première violation Formats de champ est détectée. Toutefois, si le bloc est désactivé, le traitement de la même demande incrémente le compteur de statistiques pour les violations et les journaux de 3, car chaque violation Formats de champ génère un message de journal distinct.

Pour afficher les statistiques Formats de champ à l’aide de la ligne de commande

À l’invite de commandes, tapez :

sh appfw stats

Pour afficher les statistiques d’un profil spécifique, utilisez la commande suivante :

stat appfw profile <profile name>

Pour afficher les statistiques Formats de champ à l’aide de l’interface graphique

  1. Accédez à Système > Sécurité > Pare-feu d’application.
  2. Dans le volet droit, accédez au lien Statistiques.
  3. Utilisez la barre de défilement pour afficher les statistiques sur les violations et les journaux des formats de champ. Le tableau des statistiques fournit des données en temps réel et est mis à jour toutes les 7 secondes.

Conseil de déploiement

  • Activer le journal des actions de format de champ, d’apprentissage et de statistiques.
  • Après avoir exécuté un échantillon représentatif du trafic vers votre application, passez en revue les recommandations apprises.
  • Si un type de champ est recommandé par la plupart des règles apprises, configurez ce type de champ comme type de champ par défaut. Pour les longueurs minimales et maximales, utilisez la plage la plus large suggérée par ces règles.
  • Déployer des règles pour d’autres champs pour lesquels différents types de champs ou différentes longueurs minimum/maximales sont mieux adaptés.
  • Activer le blocage et désactiver l’apprentissage.
  • Surveiller les statistiques et les journaux. Si un nombre important de violations sont encore en cours de déclenchement, vous pouvez consulter les messages du journal pour confirmer que les violations représentent des demandes malveillantes qui auraient dû être bloquées. Si des demandes valides sont signalées comme des violations, vous pouvez soit modifier la règle de format de champ configurée pour la relâcher davantage ou activer à nouveau l’apprentissage pour obtenir des recommandations basées sur les nouveaux points de données.

Remarque : Vous pouvez affiner votre configuration en obtenant de nouvelles recommandations d’apprentissage.

Résumé

Notez les points suivants à propos de la vérification de sécurité Field Format :

  • Protection : en configurant des règles de format de champ optimales, vous pouvez vous protéger contre de nombreuses attaques. Par exemple, si vous spécifiez qu’un champ ne peut avoir que des entiers, les pirates ne pourront pas lancer des attaques SQL Injection ou XSS en utilisant ce champ, car les entrées requises pour lancer de telles attaques ne répondront pas à l’exigence de format de champ configuré.
  • Performances : vous pouvez limiter la longueur minimale et la longueur maximale autorisée pour les entrées dans les règles de format de champ. Cela peut empêcher un utilisateur malveillant d’entrer des chaînes d’entrée excessivement volumineuses dans le but d’ajouter des frais de traitement au serveur, ou pire, provoquer le vidage du noyau du serveur en raison d’un débordement de pile. En limitant la taille d’entrée, vous pouvez raccourcir le temps nécessaire au traitement des demandes légitimes.
  • Configuration des formats de champ : vous devez activer l’une des actions (bloc, journal, statistiques, apprentissage) pour activer la protection de format de champ. Vous pouvez également spécifier les règles de format de champ pour identifier les entrées autorisées dans vos champs de formulaire.
  • Sélection de cartes de caractères par rapport à Types de champs : les mappages de caractères et les types de champs utilisent des expressions régulières. Cependant, une carte de caractères fournit une expression plus spécifique en limitant la liste des caractères autorisés. Par exemple, pour une entrée telle que janedoe@citrix.com, le moteur d’apprentissage peut recommander le type de champ nohtml, mais la carte de caractères[.@-Za-z]peut être plus spécifique, car elle réduit l’ensemble autorisé de caractères non alpha. L’option Caracter Map permet, en plus des caractères alpha, seulement deux caractères non alpha : point (.) et at (@).
  • Apprentissage continu : le Web App Firewall surveille et prend en compte toutes les données entrantes (violations et entrées autorisées) afin de créer une table d’apprentissage pour recommander des règles. Les règles sont révisées et mises à jour au fur et à mesure que de nouvelles données entrantes arrivent. De nouvelles règles de format de champ sont suggérées pour un champ même s’il a déjà une règle de format de champ lié. Si les formats de champ configurés sont trop restrictifs et bloquent les demandes valides, vous pouvez déployer un format de champ plus détendu. De même, si les formats de champ actuels sont trop génériques, vous pouvez affiner et renforcer la sécurité en déployant un format de champ plus restrictif.
  • Règles d’écrasement : si une règle a déjà été déployée pour une combinaison champ/URL, l’interface graphique permet à l’utilisateur de mettre à jour le format de champ. Une boîte de dialogue demande une confirmation pour remplacer la règle existante. Si vous utilisez l’interface de ligne de commande, vous devez dissocier explicitement la liaison précédente, puis lier la nouvelle règle.
  • Correspondance multiple : si plusieurs formats de champ correspondent à un nom de champ donné et à son URL d’action, le Web App Firewall sélectionne arbitrairement l’un d’entre eux à appliquer.
  • Limite de la mémoire tampon : si une valeur de champ s’étend sur plusieurs tampons de streaming et que le format de ces deux parties de la valeur du champ est différent, un format de champ correspondant à « any » est envoyé à la base de données d’apprentissage.
  • Formatde champ par rapport à Vérification de la cohérencedes champs : la vérification du format des champs et la vérification de la cohérence des champs sont des vérifications de protection basées sur un formulaire. La vérification Formats de champ offre un type de protection différent de celui de la vérification de cohérence des champs de formulaire. La vérification de cohérence des champs de formulaire vérifie que la structure des formulaires Web renvoyés par les utilisateurs est intacte, que les restrictions de format de données configurées dans le code HTML sont respectées et que les données des champs masqués n’ont pas été modifiées. Il peut le faire sans aucune connaissance spécifique sur vos formulaires Web autre que ce qu’il dérive du formulaire Web lui-même. La vérification Formats de champ vérifie que les données de chaque champ de formulaire correspondent aux restrictions de mise en forme spécifiques que vous avez configurées manuellement ou que la fonctionnalité d’apprentissage générée et approuvée. En d’autres termes, la vérification de cohérence des champs de formulaire applique la sécurité générale des formulaires Web, tandis que la vérification Formats de champ applique les règles spécifiques pour les entrées autorisées pour vos formulaires Web.