Citrix ADC

Anwendungsfall: Filtern von Clients über eine IP-Blacklist

HTTP-Callouts können verwendet werden, um Anfragen von Clients zu blockieren, die vom Administrator auf die Sperrliste gesetzt werden. Die Liste der Kunden 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 mit der vorkonfigurierten Sperrliste und blockiert die Transaktion, wenn die IP-Adresse auf die schwarze Liste gesetzt wurde. Wenn die IP-Adresse nicht in der Liste enthalten ist, 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 es mit Details zum externen Server und anderen erforderlichen Parametern.
  3. Konfigurieren Sie eine Responder Policy, um die Antwort auf den HTTP-Callout zu analysieren, und binden Sie die Richtlinie dann global.
  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 über die GUI

  1. Stellen Sie sicher, dass Sie die Responder-Lizenz 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 einer HTTP-Callout-PDF-Datei .

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 Policy, um das Callout aufzurufen. Während Sie eine Responder Policy im Unterknoten Richtlinien erstellen und diese dann mithilfe des Responder-Richtlinien-Managers global binden können, verwendet diese Demonstration den Responder-Richtlinien-Manager, um die Responder Policy zu erstellen und die Richtlinie global zu binden.

So erstellen Sie eine Responder Policy und binden sie global mit

  1. Navigieren Sie zu AppExpert > Responder.
  2. Klicken Sie im Detailbereich unter Policy Managerauf Policy Manager.
  3. Klicken Sie im Dialogfeld Responder Policy Manager auf Override Global.
  4. Klicken Sie auf Richtlinie einfügenund dann unter Richtliniennameauf Neue Richtlinie.
  5. Gehen Sie im Dialogfeld Responder-Richtlinie erstellen wie folgt vor:

    1. Geben Sie in das Feld Name PolicyResponder1ein.
    2. Wählen Sie unter AktionRESETaus.
    3. Wählen Sie in Aktion für undefiniertes Ergebnisdie Option Globale Aktion mit undefiniertem Ergebnis aus.
    4. Geben Sie unter Ausdruckden folgenden erweiterten Richtlinienausdruck ein:

      "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(HTTP_Callout).CONTAINS("IP Matched")"
      <!--NeedCopy-->
      
    5. Klicken Sie auf Erstellen und dann auf Schließen.
  6. Klicken Sie auf Änderungen übernehmenund dann auf Schließen.

Erstellen eines HTTP-Callout-Agenten auf dem Remoteserver

Sie müssen jetzt einen HTTP-Callout-Agent auf dem Remote-Callout-Server erstellen, der Callout-Anfragen von der Citrix ADC-Appliance empfängt und entsprechend antwortet. Der HTTP-Callout-Agent ist ein Skript, das für jede Bereitstellung unterschiedlich ist und unter Berücksichtigung der Serverspezifikationen wie dem Datenbanktyp und der unterstützten Skriptsprache geschrieben werden muss.

Es folgt ein Beispiel für einen 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;
<!--NeedCopy-->
Anwendungsfall: Filtern von Clients über eine IP-Blacklist