Configuration et utilisation de la fonction d’apprentissage

La fonctionnalité d’apprentissage est un filtre de modèle répétitif qui observe l’activité sur un site Web ou une application protégé par le pare-feu de l’application Web, afin de déterminer ce qui constitue une activité normale sur ce site Web ou cette application. Il génère ensuite une liste de jusqu’à 2 000 règles ou exceptions suggérées (relaxations) pour chaque vérification de sécurité qui inclut la prise en charge de la fonctionnalité d’apprentissage. Les utilisateurs trouvent généralement plus facile de configurer les relaxations en utilisant la fonction d’apprentissage qu’en saisissant manuellement les relaxations nécessaires.

Les vérifications de sécurité qui prennent en charge la fonctionnalité d’apprentissage sont les suivantes :

  • Démarrer la vérification de l’URL
  • Vérification de la cohérence des cookies
  • Vérification de la cohérence des champs de formulaire
  • Vérification des formats de champ
  • Vérification du marquage des formulaires CSRF
  • Vérification HTML SQL Injection
  • Vérification des scripts inter-sites HTML
  • Vérification par déni de service XML
  • Vérification des pièces jointes XML
  • Vérification de l’interopérabilité des services Web

Vous effectuez deux types d’activités différents lorsque vous utilisez la fonction d’apprentissage. Tout d’abord, vous activez et configurez la fonctionnalité pour l’utiliser. Vous pouvez utiliser l’apprentissage sur tout le trafic vers vos applications Web protégées ou vous pouvez configurer une liste d’adresses IP (appelée liste Ajouter des clients d’apprentissage approuvés ) à partir de laquelle la fonctionnalité d’apprentissage doit générer des recommandations. Ensuite, une fois que la fonctionnalité a été activée et traité un certain nombre de trafic vers vos sites Web protégés, vous examinez la liste des règles suggérées et des assouplissements (règles apprises) et marquez chacune avec l’une des désignations suivantes :

  • Modifier et déployer. La règle est tirée dans la boîte de dialogue Modifier afin que vous puissiez la modifier et le formulaire modifié est déployé.
  • Déployer. La règle apprise non modifiée est placée dans la liste des règles ou des assouplissements pour cette vérification de sécurité.
  • Ignorer. La règle apprise est placée sur une liste de règles ou de relaxations qui ne sont pas déployées. La règle apprise est supprimée lorsqu’elle est ignorée. Cependant, comme ils ne sont pas ajoutés aux relaxations, ils peuvent être appris à nouveau.

L’apprentissage n’est pas effectué uniquement lorsque des relaxations sont en place, sauf pour les règles de format de champ. Lorsque les règles sont ignorées, elles sont uniquement supprimées de la base de données apprise. Comme les relaxations ne sont pas ajoutées, elles peuvent être apprises à nouveau. Lorsque les règles sont déployées, elles sont supprimées de la base de données apprise et des relaxations sont également ajoutées pour les règles. À mesure que les relaxations sont ajoutées, elles ne seraient plus apprises. Pour la protection de format de terrain, l’apprentissage est effectué indépendamment des relaxations.

Bien que vous puissiez utiliser l’interface de ligne de commande pour la configuration de base de la fonctionnalité d’apprentissage, la fonctionnalité est principalement conçue pour la configuration via l’Assistant Web App Firewall ou l’interface graphique. Vous ne pouvez effectuer que la configuration limitée de la fonctionnalité d’apprentissage à l’aide de la ligne de commande.

L’assistant intègre la configuration des fonctionnalités d’apprentissage à la configuration du Web App Firewall dans son ensemble. Il s’agit donc de la méthode la plus simple pour configurer cette fonctionnalité sur une nouvelle appliance Citrix ADC ou lors de la gestion d’une configuration simple du pare-feu Web App. Le visualiseur d’interface graphique et l’interface manuelle fournissent tous deux un accès direct à toutes les règles apprises pour toutes les vérifications de sécurité et sont donc souvent préférables lorsque vous devez passer en revue les règles apprises pour un grand nombre de vérifications de sécurité.

La taille de la base de données d’apprentissage est limitée à 20 Mo, ce qui est atteint après la génération d’environ 2 000 règles ou relaxations apprises par vérification de sécurité pour laquelle l’apprentissage est activé. Si vous n’examinez pas régulièrement et que vous approuvez ou ignorez les règles apprises et que cette limite est atteinte, une erreur est enregistrée dans le journal NetScaler et aucune autre règle apprise n’est générée tant que vous n’aurez pas examiné les règles apprises existantes et les relaxations.

Si l’apprentissage s’arrête parce que la base de données a atteint sa limite de taille, vous pouvez redémarrer l’apprentissage en examinant les règles et les relaxations existantes ou en réinitialisant les données d’apprentissage. Une fois les règles apprises ou les relaxations approuvées ou ignorées, elles sont supprimées de la base de données. Après avoir réinitialisé les données d’apprentissage, toutes les données d’apprentissage existantes sont supprimées de la base de données et réinitialisées à sa taille minimale. Lorsque la taille de la base de données est inférieure à 20 Mo, l’apprentissage redémarre automatiquement.

Pour configurer les paramètres d’apprentissage à l’aide de l’interface de ligne de commande

Spécifiez le profil de Web App Firewall à configurer et, pour chaque vérification de sécurité que vous souhaitez inclure dans ce profil, spécifiez le seuil minimum ou le seuil de pourcentage. Le seuil minimum est un nombre entier représentant le nombre minimum de sessions utilisateur que le Web App Firewall doit traiter avant d’apprendre une règle ou une relaxation (par défaut : 1). Le seuil de pourcentage est un nombre entier représentant le pourcentage de sessions utilisateur dans lesquelles le Web App Firewall doit observer un modèle particulier (URL, cookie, champ, pièce jointe ou violation de règle) avant d’apprendre une règle ou une relaxation (par défaut : 0). Utilisez les commandes suivantes :

  • set appfw learningsettings <profileName> [-startURLMinThreshold <positive_integer>] [-startURLPercentThreshold <positive_integer>] [-cookieConsistencyMinThreshold <positive_integer>] [-cookieConsistencyPercentThreshold <positive_integer>] [-CSRFtagMinThreshold <positive_integer>] [-CSRFtagPercentThreshold <positive_integer>] [-fieldConsistencyMinThreshold <positive_integer>] [-fieldConsistencyPercentThreshold <positive_integer>] [-crossSiteScriptingMinThreshold <positive_integer>] [-crossSiteScriptingPercentThreshold <positive_integer>] [-SQLInjectionMinThreshold <positive_integer>] [-SQLInjectionPercentThreshold <positive_integer>] [-fieldFormatMinThreshold <positive_integer>] [-fieldFormatPercentThreshold <positive_integer>] [-XMLWSIMinThreshold <positive_integer>] [-XMLWSIPercentThreshold <positive_integer>] [-XMLAttachmentMinThreshold <positive_integer>] [-XMLAttachmentPercentThreshold <positive_integer>]
  • save ns config

Exemple

L’exemple suivant active et configure les paramètres d’apprentissage dans le profil pr-basic pour la vérification de sécurité HTML SQL Injection. Il s’agit d’une configuration d’apprentissage initiale appropriée au banc d’essai, dans laquelle vous avez un contrôle complet sur le trafic envoyé au Web App Firewall.

set appfw learningsettings pr-basic -SQLInjectionMinThreshold 10
set appfw learningsettings pr-basic -SQLInjectionPercentThreshold 70
save ns config

Pour réinitialiser les paramètres d’apprentissage à leurs valeurs par défaut à l’aide de l’interface de ligne de commande

Pour supprimer toute configuration personnalisée des paramètres d’apprentissage pour le profil et la vérification de sécurité spécifiés, et retourner les paramètres d’apprentissage à leurs valeurs par défaut, à l’invite de commandes, tapez les commandes suivantes :

  • unset appfw learningsettings <profileName> [-startURLMinThreshold ] [-startURLPercentThreshold] [-cookieConsistencyMinThreshold] [-cookieConsistencyPercentThreshold] [-CSRFtagMinThreshold ] [-CSRFtagPercentThreshold ] [-fieldConsistencyMinThreshold ] [-fieldConsistencyPercentThreshold ] [-crossSiteScriptingMinThreshold ] [-crossSiteScriptingPercentThreshold ] [-SQLInjectionMinThreshold ] [-SQLInjectionPercentThreshold ] [-fieldFormatMinThreshold] [-fieldFormatPercentThreshold ] [-XMLWSIMinThreshold ] [-XMLWSIPercentThreshold ] [-XMLAttachmentMinThreshold ] [-XMLAttachmentPercentThreshold]
  • save ns config

Pour afficher les paramètres d’apprentissage d’un profil à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez la commande suivante :

show appfw learningsettings <profileName>

Pour afficher les règles apprises non révisées ou les relaxations d’un profil à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez la commande suivante :

show appfw learningdata <profileName> <securityCheck>

Pour supprimer des règles apprises non examinées ou des relaxations spécifiques de la base de données d’apprentissage à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez la commande suivante :

rm appfw learningdata <profileName> (-startURL <expression> | -cookieConsistency <string> | (-fieldConsistency <string> <formActionURL>) | (-crossSiteScripting <string> <formActionURL>) | (-SQLInjection <string> <formActionURL>) | (-fieldFormat <string><formActionURL>) | (-CSRFTag <expression> <CSRFFormOriginURL>) | -XMLDoSCheck <expression> | -XMLWSICheck <expression> | -XMLAttachmentCheck <expression>) [-TotalXMLRequests]

Exemple

L’exemple suivant supprime toutes les relaxations apprises non examinées pour le profil pr-basic, vérification de sécurité HTML SQL Injection, qui s’appliquent au champ de formulaire LastName.

rm appfw learningdata pr-basic -SQLInjection LastName

Pour supprimer toutes les données apprises non examinées à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez la commande suivante :

reset appfw learningdata

Pour exporter des données d’apprentissage à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez la commande suivante :

export appfw learningdata <profileName> <securitycheck>[-target <string>]

Exemple

L’exemple suivant exporte les relaxations apprises pour le profil pr-basic et la vérification de sécurité HTML SQL Injection vers un fichier au format CSV (valeurs séparées par des virgules) dans le répertoire /var/learnt_data/ sous le nom de fichier spécifié dans le paramètre -target.

export appfw learningdata pr-basic SQLInjection -target sqli_ld

Pour configurer la fonctionnalité d’apprentissage à l’aide de l’interface graphique

  1. Accédez à Sécurité > Web App Firewall > Profils.
  2. Dans le volet Profils, sélectionnez le profil, puis cliquez sur Modifier.
  3. Cliquez sur l’onglet Apprentissage. En haut de l’onglet Formation, vous trouverez la liste des vérifications de sécurité disponibles dans le profil actuel et qui prennent en charge la fonctionnalité d’apprentissage.
  4. Pour configurer les seuils d’apprentissage, sélectionnez une vérification de sécurité, puis tapez les valeurs appropriées dans les zones de texte suivantes :

    Seuil de nombre minimum. Selon les paramètres d’apprentissage de la vérification de sécurité que vous configurez, le seuil de nombre minimum peut faire référence au nombre minimum de sessions utilisateur totales à observer, au nombre minimum de demandes à observer ou au 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

    Pourcentage du seuil de durée. Selon les paramètres d’apprentissage de la vérification de sécurité que vous configurez, le pourcentage de seuil de durée peut faire référence au pourcentage du nombre total de sessions utilisateur observées qui ont enfreint la vérification de sécurité, au pourcentage de demandes ou au pourcentage de fois qu’un champ de formulaire correspond à un type de champ particulier, avant qu’un une relaxation apprise est générée. Par défaut : 0

  5. Pour supprimer toutes les données apprises et réinitialiser la fonction d’apprentissage afin qu’elle redémarre ses observations dès le début, cliquez sur Supprimer toutes les données apprises. Remarque : Ce bouton supprime uniquement les recommandations apprises qui n’ont pas été examinées et approuvées ou ignorées. Il ne supprime pas les relaxations apprises qui ont été acceptées et déployées.
  6. Pour limiter le moteur de formation au trafic provenant d’un ensemble spécifique d’adresses IP, cliquez sur Clients d’apprentissage approuvés, puis ajoutez les adresses IP que vous souhaitez utiliser à la liste.
    1. Pour ajouter une adresse IP ou une plage d’adresses IP à la liste Clients d’apprentissage approuvés, cliquez sur Ajouter.
    2. Dans la boîte de dialogue Ajouter des clients d’apprentissage approuvés, zone de liste IP des clients de confiance, tapez l’adresse IP ou une plage d’adresses IP au format CIDR.
    3. Dans la zone de texte Commentaires, tapez un commentaire qui décrit cette adresse IP ou cette plage.
    4. Cliquez sur Créer pour ajouter votre nouvelle adresse IP ou plage à la liste.
    5. Pour modifier une adresse IP ou une plage existante, cliquez sur l’adresse IP ou la plage, puis cliquez sur Ouvrir. À l’exception du nom, la boîte de dialogue qui s’affiche est identique à la boîte de dialogue Ajouter des clients d’apprentissage approuvés.
    6. Pour désactiver ou activer une adresse IP ou une plage, mais la laisser dans la liste, cliquez sur l’adresse IP ou la plage, puis cliquez sur Désactiver ou Activer, selon le cas.
    7. Pour supprimer complètement une adresse IP ou une plage, cliquez sur l’adresse IP ou la plage, puis cliquez sur Supprimer.
  7. Cliquez sur Fermer pour revenir à la boîte de dialogue Configurer le profil du Web App Firewall.
  8. Cliquez sur Fermer pour fermer la boîte de dialogue Configurer le profil du Web App Firewall et revenir à l’écran Profil du pare-feu de l’application Web.

Pour passer en revue les règles ou les relaxations apprises à l’aide de l’interface graphique

  1. Accédez à Sécurité > Web App Firewall > Profils.
  2. Sélectionnez la vérification de sécurité pour laquelle vous souhaitez consulter les règles ou les relaxations apprises, puis cliquez sur Gérer les règles.
  3. Dans la boîte de dialogue Gérer les règles apprises, choisissez la façon dont vous souhaitez passer en revue les règles apprises.
    • Pour consulter les modèles appris réels tels qu’ils sont affichés dans la fenêtre, ne faites rien et passez à l’étape suivante.
    • Pour consulter les données apprises de manière hiérarchique en tant qu’arborescence de branches, ce qui vous permet de choisir des modèles généraux correspondant à la plupart des modèles appris, cliquez sur** Visualizer**.
  4. Si vous avez choisi de passer en revue les modèles appris, effectuez les opérations suivantes.
  5. Sélectionnez la première relaxation apprise et choisissez comment la gérer. - Pour modifier, puis accepter la relaxation, cliquez sur Modifier et déployer, modifiez l’expression régulière de relaxation, puis cliquez sur OK. - Pour accepter la relaxation sans modification, cliquez sur Déployer. - Pour supprimer la relaxation de la liste sans la déployer, cliquez sur Ignorer.

    1. Répétez l’étape précédente pour passer en revue chaque relaxation apprise supplémentaire.
  6. Si vous avez choisi d’utiliser le visualiseur d’apprentissage, effectuez les opérations suivantes.
    1. Dans l’affichage hiérarchique des branches, sélectionnez un nœud contenant un motif appris et choisissez comment le gérer.

      La zone d’écran située sous la structure arborescente, sous Regex of Selected Node, affiche une expression généralisée qui correspond à tous les motifs de ce nœud. Si vous souhaitez afficher une expression qui correspond à une seule des branches ou à une seule des feuilles, sélectionnez cette branche ou cette feuille.

      • Pour modifier, puis accepter la relaxation apprise, cliquez sur Modifier et déployer, modifiez l’expression régulière de relaxation, puis cliquez sur OK.

      • Pour accepter la relaxation sans modification, cliquez sur Déployer.

      • Pour supprimer la modification de la liste sans la déployer, cliquez sur Ignorer.

    2. Répétez l’étape précédente pour passer en revue les autres parties de l’affichage.

  7. Cliquez sur Fermer pour revenir à la boîte de dialogue Gérer les règles apprises.
  8. Cliquez sur Fermer pour revenir à la boîte de dialogue Configurer le profil du Web App Firewall.
  9. Cliquez sur Fermer pour fermer la boîte de dialogue Configurer le profil du Web App Firewall et revenir à l’écran Profil du pare-feu de l’application Web.