Citrix ADC

Anwendungsfall: Filtern von Clients über eine IP-Sperrliste

HTTP-Callouts können verwendet werden, um Anfragen von Clients zu blockieren, die vom Administrator auf die Sperrliste gesetzt werden. Die Liste der Clients kann eine öffentlich bekannte Sperrliste, eine Sperrliste, die Sie für Ihre Organisation pflegen, oder eine Kombination aus beiden sein.

Die Citrix ADC Appliance überprüft die IP-Adresse des Clients anhand der vorkonfigurierten Sperrliste und blockiert die Transaktion, wenn die IP-Adresse auf die Sperrliste gesetzt wurde. Wenn sich die IP-Adresse nicht in der Liste befindet, verarbeitet die Appliance die Transaktion.

Um diese Konfiguration zu implementieren, müssen Sie die folgenden Aufgaben ausführen:

  1. Aktivieren Sie den Responder auf der Citrix ADC Appliance.
  2. Erstellen Sie ein HTTP-Callout auf der Citrix ADC Appliance, und konfigurieren Sie sie mit Details zum externen Server und anderen erforderlichen Parametern.
  3. Konfigurieren Sie eine Responder-Richtlinie, um die Antwort auf das HTTP-Callout zu analysieren und dann die Richtlinie global zu binden.
  4. Erstellen Sie einen HTTP-Callout-Agent auf dem Remoteserver.

Responder aktivieren

Sie müssen den Responder aktivieren, bevor Sie ihn verwenden können.

So aktivieren Sie den Responder mit der GUI

  1. Stellen Sie sicher, dass Sie die Responderlizenz installiert haben.
  2. Erweitern Sie im Konfigurationsdienstprogramm AppExpert, klicken Sie mit der rechten Maustaste auf Responder, und klicken Sie dann auf Responder-Funktion aktivieren .

Erstellen eines HTTP-Callouts auf der Citrix ADC Appliance

Erstellen Sie ein HTTP-Callout, HTTP_Callout, mit den Parametereinstellungen in der folgenden Tabelle. Weitere Informationen zum Erstellen einer HTTP-Callout finden Sie unter Konfigurieren eines HTTP-Callouts pdf.

Konfigurieren einer Responder-Richtlinie und globales Binden

Nachdem Sie das HTTP-Callout konfiguriert haben, überprüfen Sie die Callout-Konfiguration, und konfigurieren Sie dann eine Responder-Richtlinie, um das Callout aufzurufen. Sie können zwar eine Responder-Richtlinie im Unterknoten Richtlinien erstellen und sie dann global mithilfe des Responder-Richtlinien-Managers binden, diese Demonstration verwendet den Responder-Richtlinien-Manager, um die Responder-Richtlinie zu erstellen und die Richtlinie global zu binden.

So erstellen Sie eine Responder-Richtlinie und binden sie global von uns

  1. Navigieren Sie zu AppExpert > Responder.
  2. Klicken Sie im Detailbereich unter Richtlinien-Managerauf Richtlinien-Manager.
  3. Klicken Sie im Dialogfeld Responder Policy Manager auf Global überschreiben .
  4. Klicken Sie auf Richtlinie einfügen, und klicken Sie dann unter Richtliniennameauf Neue Richtlinie.
  5. Gehen Sie im Dialogfeld Responder-Richtlinie erstellen folgendermaßen vor:

    1. Geben Sie unter Name den Wert PolicyResponder1ein.
    2. Wählen Sie in AktionRESETaus.
    3. Wählen Sie unter Undefiniertes Ergebnis Aktiondie Option Globale Aktion mit nicht definiertem Ergebnis aus.
    4. Geben Sie unter Ausdruckden folgenden Standard-Syntaxausdruck ein:

      "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(HTTP_Callout).CONTAINS("IP Matched")"
      
    5. Klicken Sie auf Erstellenund dann auf Schließen.
  6. Klicken Sie auf Änderungen übernehmenund dann auf Schließen.

Erstellen eines HTTP-Callout-Agents auf dem Remoteserver

Sie müssen nun einen HTTP-Callout-Agent auf dem Remote-Server erstellen, der Callout-Anforderungen von der Citrix ADC Appliance empfängt und entsprechend reagiert. Der HTTP-Callout-Agent ist ein Skript, das sich für jede Bereitstellung unterscheidet und unter Berücksichtigung der Serverspezifikationen geschrieben werden muss, z. B. des Datenbanktyps und der unterstützten Skriptsprache.

Es folgt ein Beispiel-Callout-Agent, der überprüft, ob die angegebene IP-Adresse Teil einer IP-Sperrliste ist. Der Agent wurde in der Perl-Skriptsprache geschrieben und verwendet eine MySQL-Datenbank.

Das folgende CGI-Skript prüft auf dem Callout-Server nach einer bestimmten IP-Adresse.

#!/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;
Anwendungsfall: Filtern von Clients über eine IP-Sperrliste