Anwendungsfall: Filtern von Clients mithilfe einer IP-Blacklist

HTTP-Callouts können verwendet werden, um Anfragen von Clients zu blockieren, die vom Administrator auf die schwarze Liste gesetzt werden. Die Liste der Clients kann eine öffentlich bekannte Blacklist, eine Blacklist, 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 Blacklist und blockiert die Transaktion, wenn die IP-Adresse auf die schwarze Liste 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 eine HTTP-Legende 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 die HTTP-Legende 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 Konfigurationsprogramm AppExpert, und klicken Sie mit der rechten Maustaste auf Responder, und klicken Sie dann auf Responderfunktion aktivieren.

Erstellen einer HTTP-Legende auf der Citrix ADC Appliance

Erstellen Sie eine HTTP-Legende, HTTP_Callout, mit den Parametereinstellungen in der folgenden Tabelle. Weitere Informationen zum Erstellen einer HTTP-Legende finden Sie unter Konfigurieren einer HTTP-Legendepdf.

Konfigurieren einer Responder-Richtlinie und globales Binden

Nachdem Sie die HTTP-Legende konfiguriert haben, überprüfen Sie die Callout-Konfiguration, und konfigurieren Sie dann eine Responder-Richtlinie, um die Legende 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 unter Aktiondie Option RESETaus.
    3. Wählen Sie unter Aktion “Nicht definiertes Ergebnis” die Option Globale Aktion mit nicht definiertem Ergebnisaus.
    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 Erstellen, und klicken Sie dann auf Schließen.
  6. Klicken Sie auf Änderungen übernehmen, und klicken Sie 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-Blacklist 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;