Citrix ADC

Configuration et utilisation de la fonction d’apprentissage

La fonction 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 Web App Firewall, afin de déterminer ce qui constitue une activité normale sur ce site Web ou cette application. Il génère ensuite une liste d’un maximum de 2 000 règles ou exceptions (assouplissements) suggérées pour chaque contrôle de sécurité qui inclut la prise en charge de la fonction d’apprentissage. Les utilisateurs trouvent normalement plus facile de configurer les relaxations en utilisant la fonction d’apprentissage qu’en saisissant manuellement les relaxations nécessaires.

Les contrôles de sécurité qui prennent en charge la fonctionnalité d’apprentissage sont les suivants :

  • Vérification d’URL de démarrage
  • Contrôle de cohérence des cookies
  • Vérification de cohérence des champs de formulaire
  • Vérification des formats de champ
  • Vérification du balisage des formulaires CSRF
  • Vérification d’injection HTML SQL
  • Vérification des scripts intersites HTML
  • Vérification du déni de service XML
  • Vérification des pièces jointes XML
  • Vérification d’interopérabilité des services Web

Vous réalisez 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 connaître tout le trafic vers vos applications Web protégées ou configurer une liste d’adresses IP (appelée liste Ajouter des clients d’apprentissage fiables ) à partir de laquelle la fonctionnalité d’apprentissage peut générer des recommandations. Ensuite, une fois que la fonctionnalité a été activée et a traité une certaine quantité de trafic vers vos sites Web protégés, vous passez en revue la liste des règles et assouplissements suggérés (règles apprises) et marquez chacun d’entre eux avec l’une des désignations suivantes :

  • Éditer et déployer. La règle est extraite 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 ce contrôle de sécurité.
  • Skip. La règle apprise est placée sur une liste de règles ou d’assouplissements qui ne sont pas déployés. 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 réappris.

L’apprentissage n’est pas effectué uniquement lorsque des relaxations sont en place, à l’exception des 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 réapprises. Lorsque les règles sont déployées, elles sont supprimées de la base de données apprise et des assouplissements sont également ajoutés pour les règles. Au fur et à mesure que des relaxations sont ajoutées, elles ne seront plus réapprises. Pour la protection du 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 qu’une configuration limitée de la fonction 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 de Web App Firewall. Le visualiseur graphique et l’interface manuelle fournissent tous deux un accès direct à toutes les règles apprises pour tous les contrôles de sécurité et sont donc souvent préférables lorsque vous devez revoir les règles apprises pour de nombreux contrôles 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 contrôle de sécurité pour lequel l’apprentissage est activé. Si vous ne révisez pas régulièrement et que vous n’approuvez pas ou ignorez les règles apprises et que cette limite est atteinte, une erreur est consignée dans le journal NetScaler et aucune autre règle apprise n’est générée tant que vous n’avez pas examiné les règles apprises et les assouplissements existants.

Si l’apprentissage s’arrête parce que la base de données a atteint sa taille limite, vous pouvez recommencer l’apprentissage soit en révisant les règles apprises et les relaxations existantes, soit en réinitialisant les données d’apprentissage. Une fois que les règles ou les assouplissements apprises sont approuvés ou ignorés, ils sont supprimés 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 sont réinitialisées à leur 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 Web App Firewall à configurer et, pour chaque contrôle 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 entier représentant le nombre minimum de sessions utilisateur que le Web App Firewall doit traiter avant d’apprendre une règle ou un assouplissement (valeur par défaut : 1). Le seuil de pourcentage est un 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 un assouplissement (valeur 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 pour le contrôle de sécurité Injection HTML SQL. Il s’agit d’une configuration initiale appropriée d’apprentissage du banc d’essai, dans laquelle vous avez un contrôle total 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
<!--NeedCopy-->

Pour réinitialiser les paramètres d’apprentissage 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 le contrôle de sécurité spécifiés, et rétablir les paramètres d’apprentissage 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 ou les assouplissements non revus pour 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 ou des relaxations spécifiques non révisées 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 tous les relaxations apprises non révisées pour le profil, vérification de sécurité HTML SQL Injection, qui s’appliquent au champ de formulaire LastName .

rm appfw learningdata pr-basic -SQLInjection LastName
<!--NeedCopy-->

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 les 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 et le contrôle de sécurité HTML SQL Injection vers un fichier au format de valeurs séparées par des virgules (CSV) 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
<!--NeedCopy-->

Pour configurer la fonction 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 Règles apprises dans la section Paramètres avancés .
  4. Dans la section Règles apprises, sélectionnez un contrôle de sécurité et cliquez sur Paramètres.
  5. Dans la page Paramètres du contrôle de sécurité, définissez les paramètres suivants :

    1. Seuil de nombre minimum. Selon les paramètres d’apprentissage du contrôle de sécurité que vous configurez, le seuil de nombre minimum peut faire référence au nombre minimum de sessions utilisateur totales qui doivent être observées, au nombre minimum de demandes qui doivent être observées 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

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

  6. Cliquez sur OK et sur Fermer.

    Section des règles apprises

  7. Cliquez sur Supprimer toutes les données apprises pour supprimer toutes les données apprises et réinitialiser la fonction d’apprentissage, afin qu’elle doive recommencer ses observations depuis le début.

    Remarque :

    Ce bouton supprime uniquement les recommandations apprises qui n’ont pas été examinées, approuvées ou ignorées. Il ne supprime pas les relaxations apprises qui ont été acceptées et déployées.

  8. Pour limiter le moteur d’apprentissage au trafic provenant d’un ensemble spécifique d’adresses IP, cliquez sur Trusted Learning Clients, 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 Trusted Learning Clients, cliquez sur Ajouter.
    2. Dans la boîte de dialogue Ajouter des clients de formation fiables, 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, saisissez un commentaire décrivant 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 sur Ouvrir. À l’exception du nom, la boîte de dialogue qui s’affiche est identique à la boîte de dialogue Ajouter des clients de formation 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, le cas échéant.
    7. Pour supprimer complètement une adresse IP ou une plage, cliquez sur l’adresse IP ou la plage, puis sur Supprimer.
  9. Cliquez sur Fermer pour revenir à la page Configurer le profil du Web App Firewall.
  10. Cliquez sur Terminé.

Pour consulter les règles ou les relaxations apprises à 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 Règles apprises dans la section Paramètres avancés .
  4. Dans la section Règles apprises, sélectionnez un contrôle de sécurité et cliquez sur Paramètres.
  5. Pour examiner les données apprises de manière hiérarchique sous forme d’arbre de ramification, vous permettant de choisir des modèles généraux qui correspondent à de nombreux modèles appris, cliquez sur Visualiseur.
  6. Si vous avez choisi de passer en revue les modèles appris réels, effectuez les étapes suivantes.
  7. Sélectionnez la première relaxation apprise et choisissez comment la gérer.

    1. Pour modifier puis accepter la relaxation, cliquez sur Modifier et déployer, modifiez l’expression régulière de relaxation, puis cliquez sur OK.
    2. Pour accepter la relaxation sans modification, cliquez sur Déployer.
    3. Pour supprimer la relaxation de la liste sans la déployer, cliquez sur Ignorer.
    4. Répétez l’étape précédente pour passer en revue chaque relaxation apprise supplémentaire.
  8. Cliquez sur Fermer pour revenir à la boîte de dialogue Gérer les règles apprises .
  9. Cliquez sur Terminé.

    Section Règle apprise avec Visualiseur