Citrix ADC

Cas d’utilisation : filtrage des clients à l’aide d’une liste noire IP

Les appels HTTP peuvent être utilisés pour bloquer les demandes des clients qui sont mis sur liste noire par l’administrateur. La liste des clients peut être une liste noire connue du public, une liste noire que vous gérez pour votre organisation ou une combinaison des deux.

L’appliance Citrix ADC vérifie l’adresse IP du client par rapport à la liste noire préconfigurée et bloque la transaction si l’adresse IP a été mise sur liste noire. Si l’adresse IP ne figure pas dans la liste, la solution matérielle-logicielle traite la transaction.

Pour implémenter cette configuration, vous devez effectuer les tâches suivantes :

  1. Activez le répondeur sur l’appliance Citrix ADC.
  2. Créez une légende HTTP sur l’appliance Citrix ADC et configurez-la avec des détails sur le serveur externe et d’autres paramètres requis.
  3. Configurez une stratégie de répondeur pour analyser la réponse à l’appel HTTP, puis liez la stratégie globalement.
  4. Créez un agent de légende HTTP sur le serveur distant.

Activation du répondeur

Vous devez activer le répondeur avant de pouvoir l’utiliser.

Pour activer le répondeur à l’aide de l’interface graphique

  1. Assurez-vous d’avoir installé la licence du répondeur.
  2. Dans l’utilitaire de configuration, développez AppExpert, cliquez avec le bouton droit sur Répondeur, puis cliquez sur Activer la fonctionnalité Répondeur .

Création d’une légende HTTP sur l’appliance Citrix ADC

Créez une légende HTTP, HTTP_Callout, avec les paramètres indiqués dans le tableau suivant. Pour plus d’informations sur la création d’une légende HTTP, consultez Configuration d’une légende HTTP PDF.

Configuration d’une stratégie de répondeur et liaison globale

Après avoir configuré la légende HTTP, vérifiez la configuration de la légende, puis configurez une stratégie de répondeur pour appeler la légende. Bien que vous puissiez créer une stratégie de répondeur dans le sous-nœud Stratégies, puis la lier globalement à l’aide du Responder Policy Manager, cette démonstration utilise le Responder Policy Manager pour créer la stratégie de répondeur et la lier globalement.

Pour créer une stratégie de répondeur et la lier globalement à l’aide de

  1. Accédez à AppExpert > Répondeur.
  2. Dans le volet d’informations, sous Gestionnaire de stratégies, cliquez sur Gestionnaire de stratégies.
  3. Dans la boîte de dialogue Responder Policy Manager, cliquez sur Remplacer la stratégie globale.
  4. Cliquez sur Insérer une stratégie, puis, sous Nom de la stratégie, cliquez sur Nouvelle stratégie.
  5. Dans la boîte de dialogue Créer une stratégie de répondeur, procédez comme suit :

    1. Dans Nom, saisissez PolicyResponder1.
    2. Dans Action, sélectionnez RESET.
    3. Dans Action de résultat non défini, sélectionnez Actionglobale de résultat non défini .
    4. Dans Expression, tapez l’expression de stratégie avancée suivante :

      "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(HTTP_Callout).CONTAINS("IP Matched")"
      <!--NeedCopy-->
      
    5. Cliquez sur Créer, puis cliquez sur Fermer.
  6. Cliquez sur Appliquer les modifications, puis cliquez sur Fermer.

Création d’un agent de légende HTTP sur le serveur distant

Vous devez maintenant créer un agent de légende HTTP sur le serveur d’appels distant qui recevra les demandes d’appel de l’appliance Citrix ADC et répondra de manière appropriée. L’agent de légende HTTP est un script différent pour chaque déploiement et doit être écrit en tenant compte des spécifications du serveur, telles que le type de base de données et le langage de script pris en charge.

Voici un exemple d’agent de légende qui vérifie si l’adresse IP donnée fait partie d’une liste noire d’adresses IP. L’agent a été écrit dans le langage de script Perl et utilise une base de données MYSQL.

Le script CGI suivant vérifie la présence d’une adresse IP donnée sur le serveur de légendes.

#!/usr/bin/perl -w
print "Content-type: text/html\n\n";
        use DBI();
        use CGI qw(:standard);
#Take the Client IP address from the request query
        my $ip_to_check = param('cip');
# Where a MYSQL database is running
        my $dsn = 'DBI:mysql:BAD_CLIENT:localhost';
# Database username to connect with
        my $db_user_name = ‘dbuser’;
# Database password to connect with
        my $db_password = 'dbpassword';
        my ($id, $password);
# Connecting to the database
        my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
        my $sth = $dbh->prepare(qq{ select * from bad_clnt });
        $sth->execute();
        while (my ($ip_in_database) = $sth->fetchrow_array()) {
        chomp($ip_in_database);
# Check for IP match
        if ($ip_in_database eq $ip_to_check) {
              print "\n IP Matched\n";
                                                     $sth->finish();
                                               exit;
                }
       }
       print "\n IP Failed\n";
       $sth->finish();
       exit;
<!--NeedCopy-->
Cas d’utilisation : filtrage des clients à l’aide d’une liste noire IP