Citrix ADC

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

Les légendes HTTP peuvent être utilisées pour bloquer les demandes des clients sur la liste noire par l’administrateur. La liste des clients peut être une liste noire connue publiquement, une liste noire que vous maintenez 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é inscrite sur la liste noire. Si l’adresse IP ne figure pas dans la liste, l’appliance 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 à la légende 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 que vous avez installé la licence de répondeur.
  2. Dans l’utilitaire de configuration, développez AppExpert et 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, consultezConfiguration 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 l’appeler. 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 Gestionnaire de stratégies de répondeur, cette démonstration utilise le Gestionnaire de stratégies de répondeur pour créer la stratégie de répondeur et lier la stratégie globalement.

Pour créer une stratégie de répondeur et la lier globalement par usin

  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 Gestionnaire de stratégies de répondeur, cliquez sur Remplacer global .
  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, tapez 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’expressionde syntaxe par défaut suivante :

      "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(HTTP_Callout).CONTAINS("IP Matched")"
      
    5. Cliquez sur Créer, puis sur Fermer.
  6. Cliquez sur Appliquer les modifications, puis 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 de légende distant qui recevra les demandes de légende de l’appliance Citrix ADC et y 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 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;

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