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 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 s’il y a un certificat client valide

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

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

  • Ajoutez une action pour effectuer l’authentification de 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 de certificat dans l’en-tête HTTP des requêtes 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 d’achat gèrent des informations sensibles sur les 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 failles de sécurité qui étaient inconnues au moment de leur écriture, mais qui sont maintenant connus des pirates informatiques et des voleurs d’identité.

Une application de panier 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 à 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 sur l’utilisateur légitime ou passer des commandes en utilisant le 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. À moins que l’application 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 sensibles 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.

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 les paramètres par défaut de Configurer Select Advanced.

  5. Cliquez sur Create, puis cliquez sur Close.

  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 de l’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 les vérifications de cohérence des cookies et 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 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 remplacez le nom de la carte de crédit que vous souhaitez protéger. Pour Visa, vous remplacez VISA. Pour MasterCard, 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 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 sage 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 un autre trafic, vous devez également 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 de l’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 « 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. Associez globalement votre nouvelle stratégie 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 un (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 scripts Javascripts hérités, violent souvent la « règle d’origine identique », qui ne permet pas aux scripts d’accéder ou de modifier le 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 de 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 avec 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 le script inter-site 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 avec des 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 avec des scripts intersites à 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 Create, puis cliquez sur Close.

  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 la 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 qui, vous le savez, sont tout de même sécuritaires.

  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 CONTIENT ^.js$ »
  7. Associez globalement votre nouvelle stratégie pour la mettre en œuvre.

Stratégie DNS pour supprimer les paquets des adresses IP spécifiques

L’exemple suivant décrit comment créer une action DNS et une stratégie DNS qui détectent les connexions provenant d’adresses IP ou de réseaux indésirables, tels que ceux utilisés dans une attaque DDOS, et qui 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 routables publiquement.

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 appelé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’IP et le masque de réseau dans le format ###.###.##/## de chaque réseau que vous voulez 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.

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

Stratégie SSL pour exiger des certificats client 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 client 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 appelé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 n’importe quel utilisateur, à moins qu’une stratégie SSL plus spécifique ne s’applique, vous voudrez peut-être lui attribuer une priorité faible. Si vous lui attribuez une priorité de mille (1000), vous devez vous assurer 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.