Citrix ADC

Exemples didactiques de stratégies classiques

Les exemples suivants décrivent des exemples utiles de configuration de stratégie classique pour certaines fonctionnalités de Citrix ADC, telles que Citrix Gateway, le pare-feu d’application et SSL.

Ce document comprend les détails suivants :

  • Stratégie Citrix Gateway pour vérifier la présence d’un certificat client valide
  • Stratégie de pare-feu d’application pour protéger une application de panier d’achat
  • Stratégie de pare-feu d’application pour protéger les pages Web scriptées
  • Stratégie DNS pour supprimer des paquets à partir d’adresses IP spécifiques
  • Stratégie SSL pour exiger des certificats client valides

Stratégie Citrix Gateway pour vérifier la présence d’un certificat client valide

Les stratégies suivantes permettent à Citrix ADC de s’assurer qu’un client présente un certificat valide avant d’établir une connexion au VPN SSL d’une société.

Pour rechercher un certificat client valide à l’aide de l’interface de ligne de commande

  • Ajoutez une action pour effectuer l’authentification du certificat client.

    add ssl action act1 -clientAuth DOCLIENTAUTH

  • Créez une stratégie SSL pour évaluer les demandes du client.

    add ssl policy pol1 -rule "REQ.HTTP.METHOD == GET" -action act1

  • Ajoutez une action de réécriture pour insérer les détails de l’émetteur du certificat dans l’en-tête HTTP des demandes envoyées au serveur Web.

    add rewrite action act2 insert_http_header "CertDN" CLIENT.SSL.CLIENT_CERT.SUBJECT

  • Créez une stratégie de réécriture pour insérer les détails de l’émetteur du certificat, si le certificat client existe.

    add rewrite policy pol2 "CLIENT.SSL.CLIENT_CERT.EXISTS" act2

    Liez ces nouvelles stratégies au VIP Citrix ADC pour les mettre en œuvre.

Stratégie de pare-feu d’application pour protéger une application de panier d’achat

Les applications de panier traitent les informations sensibles des clients, par exemple les numéros de carte de crédit et les dates d’expiration, et accèdent aux serveurs de base de données back-end. De nombreuses applications de panier utilisent également des scripts CGI hérités, qui peuvent contenir des failles de sécurité inconnues au moment de leur écriture, mais qui sont maintenant connues des pirates informatiques et des voleurs d’identité.

Une application de panier d’achat est particulièrement vulnérable aux attaques suivantes :

  • Falsification des cookies. Si une application de panier utilise des cookies et n’effectue pas les vérifications appropriées sur les cookies que les utilisateurs retournent dans l’application, un attaquant pourrait modifier un cookie et accéder à l’application de panier sous les informations d’identification d’un autre utilisateur. Une fois connecté en tant qu’utilisateur, l’attaquant pourrait obtenir des informations confidentielles sensibles sur l’utilisateur légitime ou passer des commandes à l’aide du compte de l’utilisateur légitime.
  • Injection SQL. Une application de panier accède normalement à un serveur de base de données back-end. À moins que l’application n’effectue les vérifications de sécurité appropriées sur les données renvoyées par les utilisateurs dans les champs de formulaire de ses formulaires Web avant de transmettre ces informations à la base de données SQL, un attaquant peut utiliser un formulaire Web pour injecter des commandes SQL non autorisées dans le serveur de base de données. Les attaquants utilisent normalement ce type d’attaque pour obtenir des informations confidentielles de la base de données ou modifier des informations de la base de données.

La configuration suivante protégera une application de panier contre ces attaques et d’autres attaques.

Pour protéger une application de panier à l’aide de l’utilitaire de configuration

  1. Accédez à Sécurité > Pare-feu d’application > Profils, puis cliquez sur Ajouter.

  2. Dans la boîte de dialogue Créer un profil de pare-feu d’application, dans le champ Nom du profil, entrez shopping_cart.

  3. Dans la liste déroulante Type de profil, sélectionnez Application Web.

  4. Dans le Configurer Select Advanced Valeurs par défaut.

  5. Cliquez sur Créer, puis sur Fermer.

  6. Dans la vue des détails, double-cliquez sur le nouveau profil.

  7. Dans la boîte de dialogue Configurer le profil d’application Web, configurez votre nouveau profil comme décrit ci-dessous :

    • Cliquez sur l’onglet Vérifications, double-cliquez sur la vérification de l’URL de démarrage et, dans la boîte de dialogue Modifier la vérification de l’URL de démarrage, cliquez sur l’onglet Général et désactivez le blocage, et activez l’apprentissage, la journalisation, les statistiques et la fermeture d’URL. Cliquez sur OK, puis sur Fermer.

      Notez que si vous utilisez la ligne de commande, vous configurez ces paramètres en tapant ce qui suit à l’invite et en appuyant sur ENTRÉE :

      set appfw profile shopping_cart -startURLAction LEARN LOG STATS -startURLClosure ON

    • Pour la vérification de cohérence des cookies et la vérification de cohérence des champs de formulaire, désactivez le blocage et activez l’apprentissage, la journalisation et les statistiques à l’aide d’une méthode similaire à la configuration Modifier la vérification de l’URL de démarrage.

      Si vous utilisez la ligne de commande, vous configurez ces paramètres en tapant les commandes suivantes :

      set appfw profile shopping_cart -cookieConsistencyAction LEARN LOG STATS

      set appfw profile shopping_cart -fieldConsistencyAction LEARN LOG STATS

    • Pour la vérification d’injection SQL, désactivez le blocage et activez l’apprentissage, la journalisation, les statistiques et la transformation des caractères spéciaux dans la boîte de dialogue Modifier la vérification d’injection SQL, onglet Général, section Vérifier les actions.

      Si vous utilisez la ligne de commande, vous configurez ces paramètres en tapant ce qui suit à l’invite et en appuyant sur ENTRÉE :

      set appfw profile shopping_cart -SQLInjectionAction LEARN LOG STATS -SQLInjectionTransformSpecialChars ON

    • Pour la vérification de la carte de crédit, désactivez le blocage, activez la journalisation, les statistiques et le masquage des numéros de carte de crédit et activez la protection des cartes de crédit que vous acceptez comme mode de paiement.

      • Si vous utilisez l’utilitaire de configuration, vous configurez le blocage, la journalisation, les statistiques et le masquage (ou x-out) dans la boîte de dialogue Modifier la vérification de carte de crédit, onglet Général, section Vérifier les actions. Vous configurez la protection pour des cartes de crédit spécifiques dans l’onglet Paramètres de la même boîte de dialogue.
      • Si vous utilisez la ligne de commande, vous configurez ces paramètres en tapant ce qui suit à l’invite et en appuyant sur ENTRÉE :

      set appfw profile shopping_cart -creditCardAction LOG STATS -creditCardXOut ON -creditCard <name> [<name>...]

      Pour <name> vous remplacer le nom de la carte de crédit que vous souhaitez protéger. Pour Visa, vous remplacez VISA. Pour Master Card, vous remplacez MasterCard. Par American Express, vous remplacez Amex. Pour Discover, vous remplacez Discover. Pour Diners Club, vous remplacez DinersClub. Pour JCB, vous remplacez JCB.

  8. Créez une stratégie nommée shopping_cart qui détecte les connexions à votre application de panier et applique le profil shopping_cart à ces connexions.

    Pour détecter les connexions au panier, vous examinez l’URL des connexions entrantes. Si vous hébergez votre application de panier sur un hôte distinct (une mesure judicieuse pour la sécurité et d’autres raisons), vous pouvez simplement rechercher la présence de cet hôte dans l’URL. Si vous hébergez votre panier dans un répertoire sur un hôte qui gère également d’autres trafics, vous devez déterminer que la connexion va vers le répertoire et/ou la page HTML appropriés.

    Le processus de détection de l’un ou l’autre d’entre eux est le même ; vous créez une stratégie basée sur l’expression suivante et remplacez l’hôte ou l’URL approprié par <string>.

    REQ.HTTP.HEADER URL CONTAINS <string>
    
    • Si vous utilisez l’utilitaire de configuration, accédez à la page Stratégies de pare-feu d’application, cliquez sur le bouton Ajouter… pour ajouter une nouvelle stratégie et suivez le processus de création de stratégie décrit dans la section « Pour créer une stratégie avec des expressions classiques à l’aide de l’utilitaire de configuration » commençant à la page 201 et suivant.

    • Si vous utilisez la ligne de commande, tapez la commande suivante à l’invite et appuyez sur Entrée :

      add appfw policy shopping_cart "REQ.HTTP.HEADER URL CONTAINS <string>" shopping_cart

2. Liez globalement votre nouvelle politique pour la mettre en œuvre.

Parce que vous voulez vous assurer que cette stratégie correspondra à toutes les connexions au panier et ne pas être préemptée par une autre stratégie plus générale, vous devez lui attribuer une priorité élevée. Si vous affectez une (1) comme priorité, aucune autre stratégie ne peut préjuger celle-ci.

Stratégie de pare-feu d’application pour protéger les pages Web scriptées

Les pages Web avec des scripts incorporés, en particulier les JavaScripts hérités, violent souvent la « règle d’origine même », qui ne permet pas aux scripts d’accéder ou de modifier le contenu sur n’importe quel serveur, sauf sur le serveur où ils se trouvent. Cette vulnérabilité de sécurité est appelée script intersite. La règle de script inter-site du pare-feu d’application filtre normalement les demandes qui contiennent des scripts intersites.

Malheureusement, cela peut entraîner l’arrêt de fonctionnement des pages Web contenant des JavaScripts plus anciens, même lorsque votre administrateur système a vérifié ces scripts et sait qu’ils sont sûrs. L’exemple ci-dessous explique comment configurer le pare-feu d’application pour autoriser les scripts intersites dans les pages Web à partir de sources fiables sans désactiver ce filtre important pour le reste de vos sites Web.

Pour protéger les pages Web à l’aide de scripts intersites à l’aide de l’interface de ligne de commande

  • Sur la ligne de commande, pour créer un profil avancé, tapez :

    add appfw profile pr_xssokay -defaults advanced

  • Pour configurer le profil, tapez :

    set appfw profile pr_xssokay -startURLAction NONE -startURLClosure OFF -cookieConsistencyAction LEARN LOG STATS -fieldConsistencyAction LEARN LOG STATS -crossSiteScriptingAction LEARN LOG STATS$"

  • Créez une stratégie qui détecte les connexions à vos pages Web scriptées et applique le profil pr_xssokay, tapez :

    add appfw policy pol_xssokay "REQ.HTTP.HEADER URL CONTAINS ^\\.pl\\?$ || REQ.HTTP.HEADER URL CONTAINS ^\\.js$" pr_xssokay

  • Lier globalement la stratégie.

Pour protéger les pages Web à l’aide de scripts intersites à l’aide de l’utilitaire de configuration

  1. Accédez à Sécurité > Pare-feu des applications > Profils.

  2. Dans la vue des détails, cliquez sur Ajouter.

  3. Dans la boîte de dialogue Créer un profil de pare-feu d’application, créez un profil d’application Web avec des valeurs par défaut avancées et nommez-le pr_xssokay. Cliquez sur Créer, puis sur Fermer.

  4. Dans la vue des détails, cliquez sur le profil, cliquez sur Ouvrir et dans la boîte de dialogue Configurer le profil d’application Web, configurez le profil pr_xssokay comme indiqué ci-dessous.

    Démarrer la vérification de l’URL : Effacer toutes les actions.

    • Vérification de la cohérence des cookies : désactiver le blocage.
    • Vérification de cohérence des champs de formulaire : Désactiver le blocage.
    • Vérification des scripts inter-sites : désactivez le blocage.

    Cela devrait empêcher le blocage des demandes légitimes impliquant des pages Web avec des scripts intersites que vous savez néanmoins sûres.

  5. Cliquez sur Stratégies, puis sur Ajouter.

  6. Dans la boîte de dialogue Créer une stratégie de pare-feu d’application, créez une stratégie qui détecte les connexions à vos pages Web scriptées et applique le profil pr_xssokay :

    • Nom de la stratégie : pol_xssokay
    • Profil associé : pr_xssokay
    Expression de stratégie : “REQ.HTTP.HEADER URL CONTAINS ^\.pl\?$   REQ.HTTP.HEADER URL CONTAINS ^\.js$”
  7. Liez globalement votre nouvelle stratégie pour la mettre en œuvre.

Stratégie DNS pour supprimer des paquets à partir d’adresses IP spécifiques

L’exemple suivant décrit comment créer une action DNS et une stratégie DNS qui détecte les connexions à partir d’adresses IP ou de réseaux indésirables, tels que ceux utilisés dans une attaque DDOS, et supprime tous les paquets de ces emplacements. L’exemple montre les réseaux dans le bloc IP réservé IANA 192.168.0.0/16. Un réseau hostile sera normalement sur des adresses IP publiquement routables.

Pour supprimer des paquets d’adresses IP spécifiques à l’aide de l’interface de ligne de commande

  • Pour créer une stratégie DNS nommée pol_ddos_drop qui détecte les connexions à partir de réseaux hostiles et supprime ces paquets, tapez :

    add dns policy pol_ddos_drop 'client.ip.src.in_subnet(192.168.253.128/25) || client.ip.src.in_subnet(192.168.254.32/27)' -drop YES'

    Pour les exemples de réseaux de la plage 192.168.0.0/16, vous remplacez l’adresse IP et le masque de réseau dans le format #####.####/## de chaque réseau que vous souhaitez bloquer. Vous pouvez inclure autant de réseaux que vous le souhaitez, en séparant chaque commande CLIENT.IP.SRC.IN_SUBNET (###.####.###.##./##) avec l’opérateur OR.

  • Liez globalement votre nouvelle stratégie pour la mettre en œuvre.

Stratégie SSL pour exiger des certificats clients valides

L’exemple suivant montre une stratégie SSL qui vérifie la validité du certificat client de l’utilisateur avant d’initier une connexion SSL avec un client.

Pour bloquer les connexions des utilisateurs dont les certificats clients ont expiré

  • Connectez-vous à l’interface de ligne de commande.

    Si vous utilisez l’interface graphique, accédez à la page Stratégies SSL, puis dans la zone Données, cliquez sur l’onglet Actions.

  • Créez une action SSL nommée act_current_client_cert qui nécessite que les utilisateurs disposent d’un certificat client actuel pour établir une connexion SSL avec Citrix ADC.

    add ssl action act_current_client_cert-clientAuth DOCLIENTAUTH -clientCert ENABLED -certHeader "clientCertificateHeader" -clientCertNotBefore ENABLED -certNotBeforeHeader "Mon, 01 Jan 2007 00:00:00 GMT"

  • Créez une stratégie SSL nommée pol_current_client_cert qui détecte les connexions au serveur Web contenant une chaîne de requête.

    add ssl policy pol_current_ client_cert 'REQ.SSL.CLIENT.CERT.VALIDFROM \>= "Mon, 01 Jan 2007 00:00:00 GMT"' act_block_ssl

  • Liez votre nouvelle stratégie à l’échelle mondiale.

    Étant donné que cette stratégie SSL doit s’appliquer à la connexion SSL de tout utilisateur à moins qu’une stratégie SSL plus spécifique ne s’applique, vous pouvez lui attribuer une priorité faible. Si vous lui attribuez une priorité de mille (1000), cela devrait garantir que les autres stratégies SSL sont évaluées en premier, ce qui signifie que cette stratégie s’appliquera uniquement aux connexions qui ne correspondent pas à des critères de stratégie plus spécifiques.