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 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 rechercher 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 par script
  • Stratégie DNS pour supprimer les paquets à partir d’adresses IP spécifiques
  • Stratégie SSL pour exiger des certificats clients valides

Stratégie Citrix Gateway pour rechercher 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 des clients.

    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 de 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 de certificat, si le certificat client existe.

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

    Liez ces nouvelles stratégies à Citrix ADC VIP 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 d’achat gèrent les informations sensibles des clients, par exemple les numéros de carte de crédit et les dates d’expiration, et elles accèdent aux serveurs de base de données back-end. De nombreuses applications de panier d’achat utilisent également des scripts CGI hérités, qui peuvent contenir des défauts de sécurité inconnus au moment de leur écriture, mais qui sont maintenant connus des pirates 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 contrôles appropriés sur les cookies que les utilisateurs retournent à l’application, un attaquant pourrait modifier un cookie et accéder à l’application du panier d’achat sous les identifiants d’un autre utilisateur. Une fois connecté en tant qu’utilisateur, l’attaquant pourrait obtenir des informations confidentielles sur l’utilisateur légitime ou passer des commandes à l’aide du compte de l’utilisateur légitime.
  • Injection SQL. Une application de panier d’achat accède normalement à un serveur de base de données back-end. Sauf si l’application effectue les contrôles de sécurité appropriés 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 sensibles à partir de la base de données ou modifier les informations contenues dans la base de données.

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

Pour protéger une application de panier d’achat à 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 les paramètres par défaut Configurer Select Advanced.

  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 vérifier la cohérence des cookies et vérifier la cohérence des champs de formulaire, désactivez le blocage et activez l’apprentissage, la journalisation et les statistiques, en utilisant 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 de l’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 de l’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 par 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 modes 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 substituer le nom de la carte de crédit que vous souhaitez protéger. Pour Visa, vous remplacez VISA. Pour Master Card, vous remplacez MasterCard. Pour 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 d’achat et applique le profil shopping_cart à ces connexions.

    Pour détecter les connexions au panier, 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 trafic, vous devez déterminer que la connexion va au répertoire approprié et/ou à la page HTML.

    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>
    <!--NeedCopy-->
    
    • Si vous utilisez l’utilitaire de configuration, vous 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 à la section « Pour créer une stratégie avec des expressions classiques à l’aide de l’utilitaire de configuration » à partir de la page 201 et suivante.

    • 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 attribuez un (1) comme priorité, aucune autre stratégie ne peut préempter celle-ci.

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

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

Malheureusement, cela peut entraîner l’arrêt de fonctionnement des pages Web avec 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 le script intersite dans les pages Web à partir de sources approuvées sans désactiver ce filtre important pour le reste de vos sites Web.

Pour protéger les pages Web avec des scripts inter-sites à 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 avec des scripts inter-sites à l’aide de l’utilitaire de configuration

  1. Accédez à Sécurité > Pare-feu d’application > 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 illustré ci-dessous.

    Démarrer la vérification des URL : effacez toutes les actions.

    • Vérification de cohérence des cookies : Désactiver le blocage.
    • Contrôle de cohérence des champs de formulaire : Désactivez 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 qui, vous savez, sont néanmoins sécurisés.

  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\?$
  7. Liez globalement votre nouvelle politique 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’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 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 réseaux d’exemple de la plage 192.168.0.0/16, vous remplacez l’adresse IP et le masque de réseau au 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 politique 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 ayant des certificats clients expirés

  • 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 d’un utilisateur à moins qu’une stratégie SSL plus spécifique ne s’applique, vous pouvez lui attribuer une faible priorité. 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.