Vérification des formats de champs
Le contrôle Formats de champ vérifie les données que les utilisateurs envoient à vos sites Web dans les formulaires Web. Il examine à la fois la longueur et le type des données afin de s’assurer qu’elles sont adaptées 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 des formats de champs prévient certains types d’attaques sur votre site Web et vos serveurs de base de données. Par exemple, si un champ particulier demande à l’utilisateur de saisir un numéro de téléphone, la vérification des formats de champ examine la saisie 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 des 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. Elle ne s’applique pas aux requêtes XML. Vous pouvez configurer la vérification du format des champs dans les profils HTML ou les profils Web 2.0 pour inspecter la charge utile HTML afin de protéger vos applications. Le Web App Firewall prend également en charge la protection Field Format Check pour les applications Google Web Toolkit (GWT).
Pour vérifier les formats de champs, vous devez activer une ou plusieurs actions. Le Web App Firewall examine les entrées soumises et applique les actions spécifiées.
Remarque
Les règles relatives au format des champs sont des règles plus strictes. Les ajouter à la liste de relaxation à partir des données apprises agit comme une règle de blocage.
Pour assouplir les règles de format de champ, supprimez le « nom de champ » spécifique de la liste des assouplissements 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 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 des 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 concernant les règles de relaxation.
Actions de mise en forme des champs : vous pouvez activer les actions de blocage, de journalisation, de statistiques et d’apprentissage. Au moins l’une de ces actions doit être activée pour activer la protection Field Format Check.
- Bloquer. Si vous activez le blocage, 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, la saisie est vérifiée par rapport à la règle spécifiée. Dans le cas contraire, il est vérifié par rapport à la spécification du 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 fonctionnalité de journalisation, la vérification du format des champs génère des messages de journal indiquant les actions entreprises. 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 que vous devrez peut-être revoir la configuration pour voir si le format de champ spécifié est trop restrictif.
- Apprendre. Si vous n’êtes pas sûr des types de champs ou des valeurs de longueur minimale et maximale les mieux adaptés à votre application, vous pouvez utiliser la fonction d’apprentissage pour générer des recommandations basées sur les données apprises. Le moteur d’apprentissage Web App Firewall surveille le trafic et fournit des recommandations de format de champ en fonction des valeurs observées. Pour obtenir des avantages optimaux sans compromettre les performances, vous pouvez activer l’option d’apprentissage pendant une courte période afin d’obtenir un exemple représentatif des règles, puis déployer les règles et désactiver l’apprentissage. Remarque : Le moteur d’apprentissage du Web App Firewall 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 peut par inadvertance assouplir tous ces champs.
Format de champ par défaut—Outre la configuration des 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 de longueur maximale peuvent être utilisés pour spécifier la longueur des entrées autorisées. Comme alternative aux types de champs, vous pouvez utiliser des cartes de caractères pour spécifier ce qui est autorisé dans un champ (sauf dans les déploiements de clusters).
-
Type de champ—Les types de champs sont des expressions nommées auxquelles vous attribuez des valeurs de priorité. Les expressions de type de champ spécifient les entrées autorisées et sont comparées aux données soumises afin de 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 chiffre inférieur indique une priorité plus élevée. Le Web App Firewall vous permet d’ajouter vos propres types de champs et de leur attribuer les priorités que vous souhaitez. La valeur de priorité peut être comprise entre 0 et 64 000. 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 > <!--NeedCopy-->
Remarque : Les types de champs intégrés sont IMMUABLES. Ils ne peuvent être ni modifiés ni 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 en tant que format de champ par défaut peut s’avérer utile lorsque vous disposez d’une expression PCRE capable d’identifier les entrées valides dans tous ou dans la plupart des champs de formulaire de votre application et d’exclure les entrées non valides. Par exemple, si toutes les entrées de vos formulaires de demande ne doivent contenir que 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 présent dans la saisie 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 souhaitez que les minuscules « x », « y » et « z » soient 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 de données minimale 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 0 par défaut, ce qui permet à l’utilisateur de laisser le champ vide. Tout paramètre plus élevé 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érique, une demande est bloquée si un champ de saisie est laissé vide, malgré le paramètre de longueur minimale. Cela est dû au fait que le 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 : longueur de données maximale 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.
Remarque : Nombre de caractères par rapport au nombre d’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 dont la représentation des caractères est supérieure à un octet peuvent entraîner le dépassement de la limite avec un nombre de caractères inférieur au nombre configuré pour la valeur maximale. Par exemple, dans le cas d’une représentation de caractères sur deux octets, la valeur maximale de 9 n’autorise pas plus de 4 caractères. Conseil : 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 propose une option supplémentaire, Utiliser les cartes de caractères, pour déployer les règles de vérification du format. Une table de caractères est un ensemble de caractères autorisés dans un champ de formulaire particulier. Vous pouvez affiner la spécification du format de champ pour autoriser ou interdire des caractères spécifiques à l’aide des cartes de caractères. Une table 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 apparaît dans l’entrée, tous les caractères alpha [a-za-z] seront autorisés par l’expression PCRE recommandée dans la table 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 codés sur un octet dont les valeurs sont comprises entre 0 et 255 sont pris en compte pour les recommandations de la table de caractères.
Une table de caractères peut être plus précise que la recommandation de type de champ correspondante. Dans certains cas, les cartes de caractères peuvent être une meilleure option, car elles vous permettent de mieux contrôler l’ensemble de 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 personnages commence à 10 000. Comme pour les types de champs ajoutés par l’utilisateur, vous pouvez ajouter, modifier ou supprimer une table de caractères. Les cartes de personnages actuellement utilisées dans les règles déployées ne peuvent pas être modifiées ni supprimées.
Remarque : Les cartes de caractères ne sont pas prises en charge dans les déploiements de clusters.
Remarque
Lorsque vous ajoutez une règle de mise en forme de champ avec un type de champ intégré, que vous utilisez une table de caractères au lieu du type de champ et que vous l’enregistrez, les modifications ne sont pas enregistrées et la règle s’affiche toujours avec le type de champ.
Lorsque la carte de caractères correspond à l’un des types intégrés, 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 des champs
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 du 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 de l’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 Ajouter pour ajouter un type de champ. Vous devez spécifier le nom, l’expression régulière et la priorité lorsque vous ajoutez 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 de suppression, qui nécessite uniquement le nom du type de champ.
add [appfw] fieldType <name> <regex> <priority> [-comment <string>]
où :
<regex>
est une expression régulière
<priority>
est un entier positif
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`
<!--NeedCopy-->
Remarque : Comme indiqué ci-dessus, l’utilisation de « appfw » dans la commande est facultative. Par exemple, « Ajouter un type de champ » ou « Ajouter un type de champ appfw » sont deux options valides. Les noms des types de champs ne distinguent pas les majuscules des minuscules 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 du format de champ à l’aide de la ligne de commande
Utilisez la commande set appfw profile ou 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 du 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 )])
<!--NeedCopy-->
Exemple :
bind appfw profile pr_ffc -fieldFormat "login_name" ".*/login.php" integer -fieldformatMinLength 3 -FieldformatMaxlength 6
<!--NeedCopy-->
Utilisation de l’interface graphique pour configurer le contrôle de sécurité des formats de champs
Dans l’interface graphique, vous pouvez gérer les types de champs. Vous pouvez également configurer le contrôle de sécurité des formats de champ dans le volet du profil associé à votre application.
Pour ajouter, modifier ou supprimer un type de champ à l’aide de l’interface graphique
- 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’applications.
- 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 actuellement pas utilisé par une règle déployée.
Pour ajouter ou modifier le contrôle de sécurité des formats de champs à l’aide de l’interface graphique
-
Accédez à Application Pare-feu > Profils, mettez en surbrillance le profil cible, puis cliquez sur Modifier.
-
Dans le volet Paramètres avancés, cliquez sur Vérifications de sécurité.
Le tableau de contrôle de sécurité affiche les paramètres d’action actuellement configurés pour tous les contrôles de sécurité. Deux options de configuration s’offrent à vous :
- Si vous souhaitez simplement activer ou désactiver les actions Block, Log, Statset Learn pour les formats de champs, vous pouvez activer ou désactiver les cases à cocher dans le tableau, cliquer sur OK, puis sur Enregistrer et fermer pour fermer le volet de contrôle de sécurité.
- Si vous souhaitez configurer des options supplémentaires pour ce contrôle 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 le 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 personnages déployées sont également incluses dans la liste et peuvent être sélectionnées.
-
Longueur minimale—Spécifiez le nombre minimum de caractères que doit contenir chaque champ. Valeurs possibles : 0-65535.
-
Longueur maximale— Spécifiez le nombre maximum de caractères que doit contenir chaque champ. Valeurs possibles : 1-65535.
Vous pouvez également modifier les actions Block, Log, Stats et Learn dans le volet Paramètres des formats de champs.
-
Après avoir apporté l’une des modifications ci-dessus, cliquez sur OK pour enregistrer les modifications et revenir au tableau des contrôles de sécurité. Vous pouvez procéder à la configuration d’autres contrôles de sécurité si nécessaire. Cliquez sur OK pour enregistrer toutes les modifications que vous avez apportées dans la section Contrôles de sécurité, puis cliquez sur Enregistrer et fermer pour fermer le volet Contrôle de sécurité.
Pour configurer une règle de relaxation Field Formats à l’aide de l’interface graphique
-
Accédez à Application Pare-feu > Profils, mettez en surbrillance le profil cible, puis cliquez sur Modifier.
-
Dans le volet Paramètres avancés, cliquez sur Règles de relaxation. Le tableau des règles de relaxation contient une entrée Formats de champs. 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 des formats de champs. Vous pouvez effectuer des opérations Ajouter, Modifier, Supprimer, Activerou Désactiver pour les règles de relaxation.
Pour obtenir une vue consolidée de toutes les règles de relaxation, vous pouvez surligner la ligne Formats de champ et cliquer sur Visualiseur. 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 champs
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 mûre réflexion, vous pouvez déployer la règle apprise en tant que règle de relaxation du format de champ.
Amélioration del’apprentissage des formats de champs : 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 Web App Firewall arrête de surveiller les demandes valides dans le but 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 présentes 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 émet des recommandations concernant les formats de champs, 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 assoupli, 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’améliorer la sécurité en déployant une règle plus restrictive.
Vous trouverez ci-dessous un résumé du comportement d’apprentissage des formats de champs :
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.
Le format du champ est limité : dans les versions précédentes, les données observées étaient 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 au moteur aslearn 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 apprises pour le format de champ initial 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 collecter un échantillon représentatif pour les recommandations apprises. Cela permet de renforcer encore la sécurité afin de déployer le format d’entrée optimal avec une valeur de plage adéquate.
L’apprentissage au format de champ utilise la priorité des types de champs 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 qu’une relaxation apprise ne soit générée. 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 relatives aux règles de format des champs sont basées sur les critères suivants :
- Recommandations relatives aux typesde champs : les recommandations relatives aux types de champs sont déterminées par les priorités attribuées aux types de champs existants et par les seuils de format de champ spécifiés. Les priorités déterminent l’ordre dans lequel les types de champs sont mis en correspondance avec les entrées. Un nombre inférieur indique 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 pour collecter un échantillon représentatif pour le point de données. Il est essentiel d’attribuer la bonne priorité aux types de champs configurés et de configurer une valeur de paramètre d’apprentissage appropriée pour les paramètres FieldFormatPercentThreshold et FieldFormatMinThresholdpour obtenir la bonne recommandation de format de champ . Le type de champ ayant la priorité la plus élevée, en fonction des seuils configurés, est mis en correspondance en premier avec les entrées. En cas de correspondance, ce type de champ est suggéré sans tenir compte des autres types de champs. Par exemple, trois types de champs par défaut (entier, alphanumérique, etc.) correspondront si toutes les entrées ne contiennent que des nombres. Toutefois, un entier sera recommandé car il a la priorité la plus élevée.
- Recommandations relatives aux longueurs minimale et maximale : les calculs des longueurs minimale et maximale pour le format de champ sont effectués indépendamment de la détermination du type de champ. Les calculs de longueur du 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 minimale, et le double de la valeur de cette moyenne est suggérée comme valeur maximale. La plage de longueur minimale est comprise entre 0 et 65 535 et la plage de longueur maximale est comprise entre 1 et 65 535. La valeur configurée pour la longueur minimale ne peut pas dépasser la longueur maximale.
- Gestion des espaces : la vérification du format de champ compte chaque caractère d’espace lors de la vérification de la longueur des formats de champ. Les espaces de début ou de fin ne sont pas supprimés, et les multiples espaces consécutifs au milieu de la chaîne d’entrée ne sont plus consolidés en un seul espace pendant le traitement des entrées.
Exemple illustrant les recommandations relatives au format des champs :
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
<!--NeedCopy-->
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
<!--NeedCopy-->
Pour afficher ou utiliser les données apprises à l’aide de l’interface graphique
-
Accédez à Application Pare-feu > Profils, mettez en surbrillance le profil cible, puis cliquez sur Modifier.
-
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 des 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 annuler une règle, vous pouvez la sélectionner et cliquer sur le bouton Ignorer . Vous ne pouvez modifier qu’une règle à la fois, mais vous pouvez sélectionner plusieurs règles à déployer ou à ignorer.
Vous pouvez également afficher une vue résumée des relaxations apprises en sélectionnant l’entrée Formats de champ dans le tableau des règles apprises et en cliquant sur Visualiseur pour obtenir une vue consolidée de toutes les violations apprises. Le visualiseur permet de gérer très facilement les règles apprises. Il présente une vue complète des données sur un seul écran et facilite la prise de mesures sur un groupe de règles en un seul clic. Le principal 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 d’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 sous forme d’assouplissements. Vous pouvez également ignorer les règles pour les ignorer.
Utilisation de la fonction de journalisation avec la vérification des formats de champs
Lorsque l’action du journal est activée, les violations du contrôle de sécurité des 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
Passez au shell et suivez le fichier ns.logs dans le dossier /var/log/ pour accéder aux messages du journal relatifs aux violations des formats de champs :
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 graphique 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, puis cliquez sur Contrôles de sécurité. Mettez en surbrillance la ligne Formats de champ et cliquez sur Journaux. Lorsque vous accédez aux journaux directement à partir du contrôle de sécurité des formats de champ du profil, il filtre les messages du 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 à NetScaler > Système > Audit. Dans la section Messages d’audit, cliquez sur le lien Messages Syslog pour afficher le visualiseur Syslog, qui affiche tous les messages du journal, y compris les autres journaux de violations des contrôles de sécurité. Ceci est utile pour le débogage lorsque plusieurs violations de contrôle de sécurité peuvent être déclenchées pendant le traitement des demandes.
-
Accédez à Pare-feu des applications > Stratégies > Audit. Dans la section Messages d’audit, cliquez sur le lien Messages Syslog pour afficher le visualiseur Syslog, qui affiche tous les messages du journal, y compris les autres journaux de violations des contrôles 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 des contrôles de sécurité des formats de champs, 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 que vous 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 sur la ligne correspondant à 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|NetScaler|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
<!--NeedCopy-->
Statistiques relatives aux violations des formats de champs
Lorsque l’action statistique est activée, le compteur correspondant à la vérification des formats de champs 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ément 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’une unité, car la page est bloquée dès que la première violation de format de champ est détectée. Toutefois, si le blocage est désactivé, le traitement de la même demande augmente de 3 le compteur de statistiques pour les violations et les journaux, car chaque violation des formats de champs génère un message de journal distinct.
Pour afficher les statistiques relatives aux formats de champs à 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 sur les formats de champs à l’aide de l’interface graphique
- Accédez à Système > Sécurité > Pare-feu d’application.
- Dans le volet droit, accédez au lien Statistiques .
- Utilisez la barre de défilement pour consulter les statistiques relatives aux violations des formats de champs et aux journaux. Le tableau des statistiques fournit des données en temps réel et est mis à jour toutes les 7 secondes.
Conseil de déploiement
- Activez le format des champs (journal des actions, apprentissage et 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 minimale et maximale, utilisez la plage la plus large suggérée par ces règles.
- Déployez des règles pour d’autres champs pour lesquels différents types de champs ou différentes longueurs minimales/maximales sont mieux adaptés.
- Activez le blocage et désactivez l’apprentissage.
- Surveillez les statistiques et les journaux. Si un nombre important de violations continuent d’être déclenchées, vous pouvez consulter les messages du journal pour confirmer qu’il s’agit de demandes malveillantes qui ont 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 l’assouplir davantage, soit réactiver 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é
Prenez note des points suivants concernant le contrôle de sécurité du format de champ :
- 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 contenir que des nombres entiers, les pirates informatiques ne pourront pas lancer d’attaques par injection SQL ou par script intersite à l’aide de ce champ, car les entrées requises pour lancer de telles attaques ne répondront pas aux exigences de format de champ configurées.
- Performances : vous pouvez limiter la longueur minimale et maximale autorisée pour les entrées dans les règles de format des champs. Cela peut empêcher un utilisateur malveillant de saisir des chaînes d’entrée trop volumineuses dans le but d’alourdir le traitement du serveur ou, pire encore, d’amener le serveur à vider le noyau en raison d’un débordement de pile. En limitant la taille des entrées, vous pouvez réduire le temps nécessaire au traitement des demandes légitimes.
- Configuration des formats de champs : vous devez activer l’une des actions (bloquer, enregistrer, statistiques, apprendre) pour activer la protection des formats de champ. Vous pouvez également spécifier les règles de format des champs pour identifier les entrées autorisées dans les champs de votre formulaire.
- Sélection de cartes de personnages vs. Types de champs : les cartes 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 table de caractères [. @-za-Z] pourrait être plus précis, car cela réduit le nombre de caractères non alphabétiques autorisés. L’option Character 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 un tableau d’apprentissage permettant de recommander des règles. Les règles sont révisées et mises à jour à 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 possède déjà une règle de format de champ liée. Si les formats de champ configurés sont trop restrictifs et bloquent les demandes valides, vous pouvez déployer un format de champ plus souple. 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.
- Remplacement des règles : si une règle a déjà été déployée pour une combinaison champ/URL, l’interface utilisateur permet à l’utilisateur de mettre à jour le format du champ. Une boîte de dialogue vous demande de confirmer le remplacement de 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 zone tampon : si la valeur d’un champ s’étend sur plusieurs zones tampons de diffusion et que le format de ces deux parties de la valeur du champ est différent, un format de champ correspondant à « n’importe quel » est envoyé à la base de données d’apprentissage.
- Format de champ par rapport à Contrôle de cohérence des champs : le contrôle du format des champs et le contrôle de cohérence des champs sont des contrôles de protection basés sur des formulaires. La vérification des formats de champs fournit un type de protection différent de celui du contrôle de cohérence des champs de formulaire. Le contrôle 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 de vos formulaires Web autre que ce qu’il déduit du formulaire Web lui-même. La vérification des formats de champs 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 a été générée et que vous avez 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.
Dans cet article
- Utilisation de la ligne de commande pour configurer la vérification du format des champs
- Utilisation de l’interface graphique pour configurer le contrôle de sécurité des formats de champs
- Utilisation de la fonction d’apprentissage avec la vérification des formats de champs
- Utilisation de la fonction de journalisation avec la vérification des formats de champs
- Statistiques relatives aux violations des formats de champs
- Conseil de déploiement
- Résumé